chrome-devtools-mcp 0.0.1 → 0.0.2

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 (354) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +196 -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 +2029 -0
  9. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +330 -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 +86 -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 +64 -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/Linkifier.js +34 -0
  18. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +20 -0
  19. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +49 -0
  20. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +86 -0
  21. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +459 -0
  22. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +137 -0
  23. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/QueryParamHandler.js +4 -0
  24. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +69 -0
  25. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +506 -0
  26. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +13 -0
  27. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +159 -0
  28. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +24 -0
  29. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +79 -0
  30. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +164 -0
  31. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +1281 -0
  32. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +97 -0
  33. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +17 -0
  34. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +40 -0
  35. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +71 -0
  36. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +127 -0
  37. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Worker.js +44 -0
  38. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +44 -0
  39. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +415 -0
  40. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +161 -0
  41. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +510 -0
  42. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +66 -0
  43. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +59 -0
  44. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +232 -0
  45. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +953 -0
  46. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +12 -0
  47. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +9 -0
  48. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +199 -0
  49. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +4 -0
  50. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +4 -0
  51. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DOMUtilities.js +122 -0
  52. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +13 -0
  53. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +27 -0
  54. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +21 -0
  55. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +79 -0
  56. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +143 -0
  57. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +72 -0
  58. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +536 -0
  59. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +9 -0
  60. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +157 -0
  61. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +24 -0
  62. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +4 -0
  63. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +22 -0
  64. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +26 -0
  65. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +800 -0
  66. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/NodeURL.js +31 -0
  67. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +13 -0
  68. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +1 -0
  69. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +5 -0
  70. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +281 -0
  71. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +846 -0
  72. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +155 -0
  73. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +99 -0
  74. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +220 -0
  75. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +98 -0
  76. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +31 -0
  77. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +22 -0
  78. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +1279 -0
  79. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +100 -0
  80. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +1518 -0
  81. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +902 -0
  82. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +315 -0
  83. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +572 -0
  84. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1316 -0
  85. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +53 -0
  86. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +361 -0
  87. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +22 -0
  88. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +275 -0
  89. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +166 -0
  90. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +24 -0
  91. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +29 -0
  92. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +232 -0
  93. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +47 -0
  94. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +242 -0
  95. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +629 -0
  96. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +14 -0
  97. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +241 -0
  98. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +198 -0
  99. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +163 -0
  100. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +597 -0
  101. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +1610 -0
  102. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1231 -0
  103. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +527 -0
  104. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +346 -0
  105. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +125 -0
  106. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +4 -0
  107. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +199 -0
  108. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +130 -0
  109. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +73 -0
  110. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +83 -0
  111. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +208 -0
  112. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +41 -0
  113. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +95 -0
  114. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +34 -0
  115. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +1915 -0
  116. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1660 -0
  117. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +48 -0
  118. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +765 -0
  119. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +384 -0
  120. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +25 -0
  121. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +300 -0
  122. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +67 -0
  123. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +62 -0
  124. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +563 -0
  125. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +292 -0
  126. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +4 -0
  127. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +905 -0
  128. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +163 -0
  129. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +922 -0
  130. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +535 -0
  131. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +45 -0
  132. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +174 -0
  133. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +395 -0
  134. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +54 -0
  135. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +67 -0
  136. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +110 -0
  137. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +216 -0
  138. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +271 -0
  139. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +511 -0
  140. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +678 -0
  141. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +41 -0
  142. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +132 -0
  143. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +189 -0
  144. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +156 -0
  145. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +276 -0
  146. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +143 -0
  147. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +53 -0
  148. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +262 -0
  149. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +382 -0
  150. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +49 -0
  151. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +66 -0
  152. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +1117 -0
  153. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +89 -0
  154. package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +1513 -0
  155. package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +339 -0
  156. package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1558 -0
  157. package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7473 -0
  158. package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +4 -0
  159. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +260 -0
  160. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +1096 -0
  161. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +130 -0
  162. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +514 -0
  163. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +90 -0
  164. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +6 -0
  165. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +67 -0
  166. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +494 -0
  167. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +49 -0
  168. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +73 -0
  169. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +7 -0
  170. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +4 -0
  171. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +256 -0
  172. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +120 -0
  173. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +6 -0
  174. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +32 -0
  175. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +173 -0
  176. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +30 -0
  177. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +32 -0
  178. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +79 -0
  179. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +69 -0
  180. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +35 -0
  181. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +231 -0
  182. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +332 -0
  183. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +68 -0
  184. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +14 -0
  185. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +122 -0
  186. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +81 -0
  187. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +370 -0
  188. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +171 -0
  189. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +114 -0
  190. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +547 -0
  191. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +815 -0
  192. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +44 -0
  193. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +76 -0
  194. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +162 -0
  195. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +191 -0
  196. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +118 -0
  197. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +50 -0
  198. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +592 -0
  199. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +10 -0
  200. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +109 -0
  201. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +26 -0
  202. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +187 -0
  203. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +162 -0
  204. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +21 -0
  205. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +263 -0
  206. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +148 -0
  207. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +483 -0
  208. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +35 -0
  209. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +147 -0
  210. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +180 -0
  211. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +126 -0
  212. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +85 -0
  213. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +27 -0
  214. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +103 -0
  215. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +446 -0
  216. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +21 -0
  217. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +400 -0
  218. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +33 -0
  219. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +540 -0
  220. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +42 -0
  221. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +349 -0
  222. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +346 -0
  223. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +207 -0
  224. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +98 -0
  225. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +251 -0
  226. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +71 -0
  227. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +101 -0
  228. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +297 -0
  229. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +184 -0
  230. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +134 -0
  231. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +33 -0
  232. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +7 -0
  233. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +163 -0
  234. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +1 -0
  235. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +41 -0
  236. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +102 -0
  237. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +493 -0
  238. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +74 -0
  239. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +184 -0
  240. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +744 -0
  241. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +254 -0
  242. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +10 -0
  243. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +488 -0
  244. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +208 -0
  245. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +340 -0
  246. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +180 -0
  247. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +256 -0
  248. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +89 -0
  249. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +81 -0
  250. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +160 -0
  251. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +117 -0
  252. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +262 -0
  253. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +188 -0
  254. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +182 -0
  255. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +88 -0
  256. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +21 -0
  257. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +199 -0
  258. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +544 -0
  259. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +191 -0
  260. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +135 -0
  261. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +92 -0
  262. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +97 -0
  263. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +101 -0
  264. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +9 -0
  265. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +18 -0
  266. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +6 -0
  267. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +488 -0
  268. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +5 -0
  269. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +276 -0
  270. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +63 -0
  271. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +82 -0
  272. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +551 -0
  273. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +7 -0
  274. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +9 -0
  275. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +136 -0
  276. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +67 -0
  277. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +68 -0
  278. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +48 -0
  279. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +68 -0
  280. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +101 -0
  281. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +64 -0
  282. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +78 -0
  283. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +11 -0
  284. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +115 -0
  285. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +42 -0
  286. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +47 -0
  287. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +134 -0
  288. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +450 -0
  289. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +154 -0
  290. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +9 -0
  291. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +24 -0
  292. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +4 -0
  293. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +17 -0
  294. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +18 -0
  295. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +37 -0
  296. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +57 -0
  297. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +4 -0
  298. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +15 -0
  299. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +565 -0
  300. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +9 -0
  301. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +1 -0
  302. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +202 -0
  303. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +38 -0
  304. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +944 -0
  305. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +26 -0
  306. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +196 -0
  307. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +226 -0
  308. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +4 -0
  309. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +394 -0
  310. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +24 -0
  311. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +283 -0
  312. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +7 -0
  313. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +9 -0
  314. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +84 -0
  315. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +4 -0
  316. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +20 -0
  317. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +148 -0
  318. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +2 -0
  319. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +2 -0
  320. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +118 -0
  321. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +40 -0
  322. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +26 -0
  323. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +4 -0
  324. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +215 -0
  325. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +4 -0
  326. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +4 -0
  327. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +4 -0
  328. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +2 -0
  329. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +8 -0
  330. package/build/src/McpContext.js +204 -0
  331. package/build/src/McpResponse.js +178 -0
  332. package/build/src/Mutex.js +40 -0
  333. package/build/src/PageCollector.js +68 -0
  334. package/build/src/browser.js +105 -0
  335. package/build/src/formatters/consoleFormatter.js +71 -0
  336. package/build/src/formatters/networkFormatter.js +34 -0
  337. package/build/src/formatters/snapshotFormatter.js +75 -0
  338. package/build/src/index.js +206 -0
  339. package/build/src/logger.js +26 -0
  340. package/build/src/tools/ToolDefinition.js +8 -0
  341. package/build/src/tools/categories.js +14 -0
  342. package/build/src/tools/console.js +19 -0
  343. package/build/src/tools/emulation.js +61 -0
  344. package/build/src/tools/input.js +202 -0
  345. package/build/src/tools/network.js +35 -0
  346. package/build/src/tools/pages.js +181 -0
  347. package/build/src/tools/performance.js +116 -0
  348. package/build/src/tools/screenshot.js +65 -0
  349. package/build/src/tools/script.js +35 -0
  350. package/build/src/tools/snapshot.js +42 -0
  351. package/build/src/trace-processing/parse.js +73 -0
  352. package/build/src/waitForHelpers.js +109 -0
  353. package/package.json +53 -6
  354. package/README +0 -1
@@ -0,0 +1,276 @@
1
+ // Copyright 2024 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+ import { SourceMapScopeChainEntry } from './SourceMapScopeChainEntry.js';
5
+ export class SourceMapScopesInfo {
6
+ #sourceMap;
7
+ #originalScopes;
8
+ #generatedRanges;
9
+ #cachedVariablesAndBindingsPresent = null;
10
+ constructor(sourceMap, scopeInfo) {
11
+ this.#sourceMap = sourceMap;
12
+ this.#originalScopes = scopeInfo.scopes;
13
+ this.#generatedRanges = scopeInfo.ranges;
14
+ }
15
+ addOriginalScopes(scopes) {
16
+ for (const scope of scopes) {
17
+ this.#originalScopes.push(scope);
18
+ }
19
+ }
20
+ addGeneratedRanges(ranges) {
21
+ for (const range of ranges) {
22
+ this.#generatedRanges.push(range);
23
+ }
24
+ }
25
+ hasOriginalScopes(sourceIdx) {
26
+ return Boolean(this.#originalScopes[sourceIdx]);
27
+ }
28
+ addOriginalScopesAtIndex(sourceIdx, scope) {
29
+ if (!this.#originalScopes[sourceIdx]) {
30
+ this.#originalScopes[sourceIdx] = scope;
31
+ }
32
+ else {
33
+ throw new Error(`Trying to re-augment existing scopes for source at index: ${sourceIdx}`);
34
+ }
35
+ }
36
+ /**
37
+ * Given a generated position, returns the original name of the surrounding function as well as
38
+ * all the original function names that got inlined into the surrounding generated function and their
39
+ * respective callsites in the original code (ordered from inner to outer).
40
+ *
41
+ * @returns a list with inlined functions. Every entry in the list has a callsite in the orignal code,
42
+ * except the last function (since the last function didn't get inlined).
43
+ */
44
+ findInlinedFunctions(generatedLine, generatedColumn) {
45
+ const rangeChain = this.#findGeneratedRangeChain(generatedLine, generatedColumn);
46
+ const result = {
47
+ inlinedFunctions: [],
48
+ originalFunctionName: '',
49
+ };
50
+ // Walk the generated ranges from the innermost containing range outwards as long as we don't
51
+ // encounter a range that is a scope in the generated code and a function scope originally.
52
+ for (let i = rangeChain.length - 1; i >= 0; --i) {
53
+ const range = rangeChain[i];
54
+ if (range.callSite) {
55
+ // Record the name and call-site if the range corresponds to an inlined function.
56
+ result.inlinedFunctions.push({ name: range.originalScope?.name ?? '', callsite: range.callSite });
57
+ }
58
+ if (range.isStackFrame) {
59
+ // We arrived at an actual generated JS function, don't go further.
60
+ // The corresponding original scope could not actually be a function
61
+ // (e.g. a block scope transpiled down to a JS function), but we'll
62
+ // filter that out later.
63
+ result.originalFunctionName = range.originalScope?.name ?? '';
64
+ break;
65
+ }
66
+ }
67
+ return result;
68
+ }
69
+ /**
70
+ * Takes a V8 provided call frame and expands any inlined frames into virtual call frames.
71
+ *
72
+ * For call frames where nothing was inlined, the result contains only a single element,
73
+ * the provided frame but with the original name.
74
+ *
75
+ * For call frames where we are paused in inlined code, this function returns a list of
76
+ * call frames from "inner to outer". This is the call frame at index 0
77
+ * signifies the top of this stack trace fragment.
78
+ *
79
+ * The rest are "virtual" call frames and will have an "inlineFrameIndex" set in ascending
80
+ * order, so the condition `result[index] === result[index].inlineFrameIndex` always holds.
81
+ */
82
+ expandCallFrame(callFrame) {
83
+ const { originalFunctionName, inlinedFunctions } = this.findInlinedFunctions(callFrame.location().lineNumber, callFrame.location().columnNumber);
84
+ const result = [];
85
+ for (const [index, fn] of inlinedFunctions.entries()) {
86
+ result.push(callFrame.createVirtualCallFrame(index, fn.name));
87
+ }
88
+ result.push(callFrame.createVirtualCallFrame(result.length, originalFunctionName));
89
+ return result;
90
+ }
91
+ /**
92
+ * Given a generated position, this returns all the surrounding generated ranges from outer
93
+ * to inner.
94
+ */
95
+ #findGeneratedRangeChain(line, column) {
96
+ const result = [];
97
+ (function walkRanges(ranges) {
98
+ for (const range of ranges) {
99
+ if (!contains(range, line, column)) {
100
+ continue;
101
+ }
102
+ result.push(range);
103
+ walkRanges(range.children);
104
+ }
105
+ })(this.#generatedRanges);
106
+ return result;
107
+ }
108
+ /**
109
+ * @returns true if we have enough info (i.e. variable and binding expressions) to build
110
+ * a scope view.
111
+ */
112
+ hasVariablesAndBindings() {
113
+ if (this.#cachedVariablesAndBindingsPresent === null) {
114
+ this.#cachedVariablesAndBindingsPresent = this.#areVariablesAndBindingsPresent();
115
+ }
116
+ return this.#cachedVariablesAndBindingsPresent;
117
+ }
118
+ #areVariablesAndBindingsPresent() {
119
+ // We check whether any original scope has a non-empty list of variables, and
120
+ // generated ranges with a non-empty binding list.
121
+ function walkTree(nodes) {
122
+ for (const node of nodes) {
123
+ if (!node) {
124
+ continue;
125
+ }
126
+ if ('variables' in node && node.variables.length > 0) {
127
+ return true;
128
+ }
129
+ if ('values' in node && node.values.some(v => v !== null)) {
130
+ return true;
131
+ }
132
+ if (walkTree(node.children)) {
133
+ return true;
134
+ }
135
+ }
136
+ return false;
137
+ }
138
+ return walkTree(this.#originalScopes) && walkTree(this.#generatedRanges);
139
+ }
140
+ /**
141
+ * Constructs a scope chain based on the CallFrame's paused position.
142
+ *
143
+ * The algorithm to obtain the original scope chain is straight-forward:
144
+ *
145
+ * 1) Find the inner-most generated range that contains the CallFrame's
146
+ * paused position.
147
+ *
148
+ * 2) Does the found range have an associated original scope?
149
+ *
150
+ * 2a) If no, return null. This is a "hidden" range and technically
151
+ * we shouldn't be pausing here in the first place. This code doesn't
152
+ * correspond to anything in the authored code.
153
+ *
154
+ * 2b) If yes, the associated original scope is the inner-most
155
+ * original scope in the resulting scope chain.
156
+ *
157
+ * 3) Walk the parent chain of the found original scope outwards. This is
158
+ * our scope view. For each original scope we also try to find a
159
+ * corresponding generated range that contains the CallFrame's
160
+ * paused position. We need the generated range to resolve variable
161
+ * values.
162
+ */
163
+ resolveMappedScopeChain(callFrame) {
164
+ const rangeChain = this.#findGeneratedRangeChainForFrame(callFrame);
165
+ const innerMostOriginalScope = rangeChain.at(-1)?.originalScope;
166
+ if (innerMostOriginalScope === undefined) {
167
+ return null;
168
+ }
169
+ // TODO(crbug.com/40277685): Add a sanity check here where we map the paused position using
170
+ // the source map's mappings, find the inner-most original scope with that mapped paused
171
+ // position and compare that result with `innerMostOriginalScope`. If they don't match we
172
+ // should emit a warning about the broken source map as mappings and scopes are inconsistent
173
+ // w.r.t. each other.
174
+ let seenFunctionScope = false;
175
+ const result = [];
176
+ // Walk the original scope chain outwards and try to find the corresponding generated range along the way.
177
+ for (let originalScope = rangeChain.at(-1)?.originalScope; originalScope; originalScope = originalScope.parent) {
178
+ const range = rangeChain.findLast(r => r.originalScope === originalScope);
179
+ const isFunctionScope = originalScope.kind === 'function';
180
+ const isInnerMostFunction = isFunctionScope && !seenFunctionScope;
181
+ const returnValue = isInnerMostFunction ? callFrame.returnValue() : null;
182
+ result.push(new SourceMapScopeChainEntry(callFrame, originalScope, range, isInnerMostFunction, returnValue ?? undefined));
183
+ seenFunctionScope ||= isFunctionScope;
184
+ }
185
+ // If we are paused on a return statement, we need to drop inner block scopes. This is because V8 only emits a
186
+ // single return bytecode and "gotos" at the functions' end, where we are now paused.
187
+ if (callFrame.returnValue() !== null) {
188
+ while (result.length && result[0].type() !== "local" /* Protocol.Debugger.ScopeType.Local */) {
189
+ result.shift();
190
+ }
191
+ }
192
+ return result;
193
+ }
194
+ /** Similar to #findGeneratedRangeChain, but takes inlineFrameIndex of virtual call frames into account */
195
+ #findGeneratedRangeChainForFrame(callFrame) {
196
+ const rangeChain = this.#findGeneratedRangeChain(callFrame.location().lineNumber, callFrame.location().columnNumber);
197
+ if (callFrame.inlineFrameIndex === 0) {
198
+ return rangeChain;
199
+ }
200
+ // Drop ranges in the chain until we reach our desired inlined range.
201
+ for (let inlineIndex = 0; inlineIndex < callFrame.inlineFrameIndex;) {
202
+ const range = rangeChain.pop();
203
+ if (range?.callSite) {
204
+ ++inlineIndex;
205
+ }
206
+ }
207
+ return rangeChain;
208
+ }
209
+ /**
210
+ * Returns the authored function name of the function containing the provided generated position.
211
+ */
212
+ findOriginalFunctionName({ line, column }) {
213
+ // There are 2 approaches:
214
+ // 1) Find the inner-most generated range containing the provided generated position
215
+ // and use it's OriginalScope (then walk it outwards until we hit a function).
216
+ // 2) Use the mappings to turn the generated position into an original position.
217
+ // Then find the inner-most original scope containing that original position.
218
+ // Then walk it outwards until we hit a function.
219
+ //
220
+ // Both approaches should yield the same result (assuming the mappings are spec compliant
221
+ // w.r.t. generated ranges). But in the case of "pasta" scopes and extension provided
222
+ // scope info, we only have the OriginalScope parts and mappings without GeneratedRanges.
223
+ let originalInnerMostScope;
224
+ if (this.#generatedRanges.length > 0) {
225
+ const rangeChain = this.#findGeneratedRangeChain(line, column);
226
+ originalInnerMostScope = rangeChain.at(-1)?.originalScope;
227
+ }
228
+ else {
229
+ // No GeneratedRanges. Try to use mappings.
230
+ const entry = this.#sourceMap.findEntry(line, column);
231
+ if (entry?.sourceIndex === undefined) {
232
+ return null;
233
+ }
234
+ originalInnerMostScope =
235
+ this.#findOriginalScopeChain({ sourceIndex: entry.sourceIndex, line: entry.sourceLineNumber, column: entry.sourceColumnNumber })
236
+ .at(-1);
237
+ }
238
+ // Walk the original scope chain outwards until we find a function.
239
+ for (let originalScope = originalInnerMostScope; originalScope; originalScope = originalScope.parent) {
240
+ if (originalScope.isStackFrame) {
241
+ return originalScope.name ?? '';
242
+ }
243
+ }
244
+ return null;
245
+ }
246
+ /**
247
+ * Given an original position, this returns all the surrounding original scopes from outer
248
+ * to inner.
249
+ */
250
+ #findOriginalScopeChain({ sourceIndex, line, column }) {
251
+ const scope = this.#originalScopes[sourceIndex];
252
+ if (!scope) {
253
+ return [];
254
+ }
255
+ const result = [];
256
+ (function walkScopes(scopes) {
257
+ for (const scope of scopes) {
258
+ if (!contains(scope, line, column)) {
259
+ continue;
260
+ }
261
+ result.push(scope);
262
+ walkScopes(scope.children);
263
+ }
264
+ })([scope]);
265
+ return result;
266
+ }
267
+ }
268
+ export function contains(range, line, column) {
269
+ if (range.start.line > line || (range.start.line === line && range.start.column > column)) {
270
+ return false;
271
+ }
272
+ if (range.end.line < line || (range.end.line === line && range.end.column <= column)) {
273
+ return false;
274
+ }
275
+ return true;
276
+ }
@@ -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
+ import { SDKModel } from './SDKModel.js';
5
+ import { StorageKeyManager } from './StorageKeyManager.js';
6
+ export class StorageBucketsModel extends SDKModel {
7
+ enabled = false;
8
+ storageAgent;
9
+ storageKeyManager;
10
+ bucketsById = new Map();
11
+ trackedStorageKeys = new Set();
12
+ constructor(target) {
13
+ super(target);
14
+ target.registerStorageDispatcher(this);
15
+ this.storageAgent = target.storageAgent();
16
+ this.storageKeyManager = target.model(StorageKeyManager);
17
+ }
18
+ getBuckets() {
19
+ return new Set(this.bucketsById.values());
20
+ }
21
+ getBucketsForStorageKey(storageKey) {
22
+ const buckets = [...this.bucketsById.values()];
23
+ return new Set(buckets.filter(({ bucket }) => bucket.storageKey === storageKey));
24
+ }
25
+ getDefaultBucketForStorageKey(storageKey) {
26
+ const buckets = [...this.bucketsById.values()];
27
+ return buckets.find(({ bucket }) => bucket.storageKey === storageKey && bucket.name === undefined) ?? null;
28
+ }
29
+ getBucketById(bucketId) {
30
+ return this.bucketsById.get(bucketId) ?? null;
31
+ }
32
+ getBucketByName(storageKey, bucketName) {
33
+ if (!bucketName) {
34
+ return this.getDefaultBucketForStorageKey(storageKey);
35
+ }
36
+ const buckets = [...this.bucketsById.values()];
37
+ return buckets.find(({ bucket }) => bucket.storageKey === storageKey && bucket.name === bucketName) ?? null;
38
+ }
39
+ deleteBucket(bucket) {
40
+ void this.storageAgent.invoke_deleteStorageBucket({ bucket });
41
+ }
42
+ enable() {
43
+ if (this.enabled) {
44
+ return;
45
+ }
46
+ if (this.storageKeyManager) {
47
+ this.storageKeyManager.addEventListener("StorageKeyAdded" /* StorageKeyManagerEvents.STORAGE_KEY_ADDED */, this.storageKeyAdded, this);
48
+ this.storageKeyManager.addEventListener("StorageKeyRemoved" /* StorageKeyManagerEvents.STORAGE_KEY_REMOVED */, this.storageKeyRemoved, this);
49
+ for (const storageKey of this.storageKeyManager.storageKeys()) {
50
+ this.addStorageKey(storageKey);
51
+ }
52
+ }
53
+ this.enabled = true;
54
+ }
55
+ storageKeyAdded(event) {
56
+ this.addStorageKey(event.data);
57
+ }
58
+ storageKeyRemoved(event) {
59
+ this.removeStorageKey(event.data);
60
+ }
61
+ addStorageKey(storageKey) {
62
+ if (this.trackedStorageKeys.has(storageKey)) {
63
+ throw new Error('Can\'t call addStorageKey for a storage key if it has already been added.');
64
+ }
65
+ this.trackedStorageKeys.add(storageKey);
66
+ void this.storageAgent.invoke_setStorageBucketTracking({ storageKey, enable: true });
67
+ }
68
+ removeStorageKey(storageKey) {
69
+ if (!this.trackedStorageKeys.has(storageKey)) {
70
+ throw new Error('Can\'t call removeStorageKey for a storage key if it hasn\'t already been added.');
71
+ }
72
+ const bucketsForStorageKey = this.getBucketsForStorageKey(storageKey);
73
+ for (const bucket of bucketsForStorageKey) {
74
+ this.bucketRemoved(bucket);
75
+ }
76
+ this.trackedStorageKeys.delete(storageKey);
77
+ void this.storageAgent.invoke_setStorageBucketTracking({ storageKey, enable: false });
78
+ }
79
+ bucketAdded(bucketInfo) {
80
+ this.bucketsById.set(bucketInfo.id, bucketInfo);
81
+ this.dispatchEventToListeners("BucketAdded" /* Events.BUCKET_ADDED */, { model: this, bucketInfo });
82
+ }
83
+ bucketRemoved(bucketInfo) {
84
+ this.bucketsById.delete(bucketInfo.id);
85
+ this.dispatchEventToListeners("BucketRemoved" /* Events.BUCKET_REMOVED */, { model: this, bucketInfo });
86
+ }
87
+ bucketChanged(bucketInfo) {
88
+ this.dispatchEventToListeners("BucketChanged" /* Events.BUCKET_CHANGED */, { model: this, bucketInfo });
89
+ }
90
+ bucketInfosAreEqual(bucketInfo1, bucketInfo2) {
91
+ return bucketInfo1.bucket.storageKey === bucketInfo2.bucket.storageKey && bucketInfo1.id === bucketInfo2.id &&
92
+ bucketInfo1.bucket.name === bucketInfo2.bucket.name && bucketInfo1.expiration === bucketInfo2.expiration &&
93
+ bucketInfo1.quota === bucketInfo2.quota && bucketInfo1.persistent === bucketInfo2.persistent &&
94
+ bucketInfo1.durability === bucketInfo2.durability;
95
+ }
96
+ storageBucketCreatedOrUpdated({ bucketInfo }) {
97
+ const curBucket = this.getBucketById(bucketInfo.id);
98
+ if (curBucket) {
99
+ if (!this.bucketInfosAreEqual(curBucket, bucketInfo)) {
100
+ this.bucketChanged(bucketInfo);
101
+ }
102
+ }
103
+ else {
104
+ this.bucketAdded(bucketInfo);
105
+ }
106
+ }
107
+ storageBucketDeleted({ bucketId }) {
108
+ const curBucket = this.getBucketById(bucketId);
109
+ if (curBucket) {
110
+ this.bucketRemoved(curBucket);
111
+ }
112
+ else {
113
+ throw new Error(`Received an event that Storage Bucket '${bucketId}' was deleted, but it wasn't in the StorageBucketsModel.`);
114
+ }
115
+ }
116
+ attributionReportingTriggerRegistered(_event) {
117
+ }
118
+ interestGroupAccessed(_event) {
119
+ }
120
+ interestGroupAuctionEventOccurred(_event) {
121
+ }
122
+ interestGroupAuctionNetworkRequestCreated(_event) {
123
+ }
124
+ indexedDBListUpdated(_event) {
125
+ }
126
+ indexedDBContentUpdated(_event) {
127
+ }
128
+ cacheStorageListUpdated(_event) {
129
+ }
130
+ cacheStorageContentUpdated(_event) {
131
+ }
132
+ sharedStorageAccessed(_event) {
133
+ }
134
+ sharedStorageWorkletOperationExecutionFinished(_event) {
135
+ }
136
+ attributionReportingSourceRegistered(_event) {
137
+ }
138
+ attributionReportingReportSent(_event) {
139
+ }
140
+ attributionReportingVerboseDebugReportSent(_event) {
141
+ }
142
+ }
143
+ SDKModel.register(StorageBucketsModel, { capabilities: 8192 /* Capability.STORAGE */, autostart: false });
@@ -0,0 +1,53 @@
1
+ // Copyright 2022 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+ import * as Common from '../common/common.js';
5
+ import { SDKModel } from './SDKModel.js';
6
+ export class StorageKeyManager extends SDKModel {
7
+ #mainStorageKey;
8
+ #storageKeys;
9
+ constructor(target) {
10
+ super(target);
11
+ this.#mainStorageKey = '';
12
+ this.#storageKeys = new Set();
13
+ }
14
+ updateStorageKeys(storageKeys) {
15
+ const oldStorageKeys = this.#storageKeys;
16
+ this.#storageKeys = storageKeys;
17
+ for (const storageKey of oldStorageKeys) {
18
+ if (!this.#storageKeys.has(storageKey)) {
19
+ this.dispatchEventToListeners("StorageKeyRemoved" /* Events.STORAGE_KEY_REMOVED */, storageKey);
20
+ }
21
+ }
22
+ for (const storageKey of this.#storageKeys) {
23
+ if (!oldStorageKeys.has(storageKey)) {
24
+ this.dispatchEventToListeners("StorageKeyAdded" /* Events.STORAGE_KEY_ADDED */, storageKey);
25
+ }
26
+ }
27
+ }
28
+ storageKeys() {
29
+ return [...this.#storageKeys];
30
+ }
31
+ mainStorageKey() {
32
+ return this.#mainStorageKey;
33
+ }
34
+ setMainStorageKey(storageKey) {
35
+ this.#mainStorageKey = storageKey;
36
+ this.dispatchEventToListeners("MainStorageKeyChanged" /* Events.MAIN_STORAGE_KEY_CHANGED */, {
37
+ mainStorageKey: this.#mainStorageKey,
38
+ });
39
+ }
40
+ }
41
+ export function parseStorageKey(storageKeyString) {
42
+ // Based on the canonical implementation of StorageKey::Deserialize in
43
+ // third_party/blink/common/storage_key/storage_key.cc
44
+ const components = storageKeyString.split('^');
45
+ const origin = Common.ParsedURL.ParsedURL.extractOrigin(components[0]);
46
+ const storageKey = { origin, components: new Map() };
47
+ for (let i = 1; i < components.length; ++i) {
48
+ storageKey.components.set(components[i].charAt(0), components[i].substring(1));
49
+ }
50
+ return storageKey;
51
+ }
52
+ // TODO(jarhar): this is the one of the two usages of Capability.None. Do something about it!
53
+ SDKModel.register(StorageKeyManager, { capabilities: 0 /* Capability.NONE */, autostart: false });