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.
- package/LICENSE +202 -0
- package/README.md +252 -0
- package/build/node_modules/chrome-devtools-frontend/LICENSE +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +17 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +43 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +2033 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +332 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +221 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +79 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +29 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +49 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +86 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +449 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +144 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +69 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +495 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +15 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +164 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +78 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +164 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +1263 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +97 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +40 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +71 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +127 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +41 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +434 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +202 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +92 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +69 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +61 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +220 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +968 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +13 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +60 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +199 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +13 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +79 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +143 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +72 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +538 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +157 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +63 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +17 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +12 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +138 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +539 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +8 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +54 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +281 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +845 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +155 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +99 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +217 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +98 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +31 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +1318 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +100 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +1532 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +908 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +312 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +574 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1346 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +53 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +403 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +275 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +166 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +29 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +236 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +47 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +205 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +629 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +241 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +198 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +163 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +597 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +1635 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1216 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +527 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +364 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +127 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +199 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +130 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +75 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +80 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +208 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +41 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +95 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +34 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +2223 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1654 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +48 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +765 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +384 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +25 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +310 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +62 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +608 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +413 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +908 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +163 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +923 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +535 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +45 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +36 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +176 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +420 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +54 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +113 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +216 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +271 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +511 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +691 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +57 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +132 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +201 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +156 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +508 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +143 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +53 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +257 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +395 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +55 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +1166 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +91 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +2640 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +384 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1532 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7602 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +289 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +995 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +664 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +139 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +377 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +131 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +149 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +245 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +486 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +130 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +992 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +592 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +112 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +186 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +60 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +107 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +244 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +564 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +437 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +87 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +182 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +268 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +55 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +20 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +516 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +89 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +285 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +775 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +1706 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +145 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +77 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +347 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +494 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +49 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +73 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +256 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +122 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +622 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +59 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +97 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +121 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +32 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +173 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +30 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +32 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +79 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +69 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +35 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +231 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +355 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +68 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +122 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +81 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +371 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +169 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +114 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +555 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +815 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +44 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +76 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +162 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +191 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +118 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +50 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +599 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +10 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +109 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +187 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +162 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +263 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +148 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +485 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +35 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +147 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +180 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +126 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +85 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +103 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +449 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +404 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +33 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +566 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +42 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +349 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +346 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +260 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +97 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +276 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +71 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +101 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +317 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +183 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +134 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +33 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +163 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +1 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +41 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +102 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +495 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +74 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +186 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +820 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +254 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +10 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +489 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +209 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +340 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +181 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +258 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +90 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +82 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +161 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +129 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +263 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +199 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +183 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +90 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +200 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +545 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +192 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +136 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +92 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +98 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +102 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +18 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +488 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +276 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +63 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +82 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +551 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +136 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +68 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +48 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +68 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +101 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +64 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +78 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +11 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +115 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +42 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +47 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +134 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +450 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +154 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +17 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +18 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +37 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +57 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +15 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +580 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +224 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +64 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +504 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +113 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +601 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +201 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +1 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +202 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +940 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +196 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +226 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +394 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +283 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +84 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +20 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +146 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +118 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +40 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +215 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +2 -0
- package/build/src/McpContext.js +400 -0
- package/build/src/McpResponse.js +237 -0
- package/build/src/Mutex.js +40 -0
- package/build/src/PageCollector.js +68 -0
- package/build/src/WaitForHelper.js +134 -0
- package/build/src/browser-connection-manager.js +373 -0
- package/build/src/browser.js +719 -0
- package/build/src/cli.js +120 -0
- package/build/src/client-detector.js +93 -0
- package/build/src/config.js +38 -0
- package/build/src/formatters/consoleFormatter.js +73 -0
- package/build/src/formatters/extensionsPageFormatter.js +184 -0
- package/build/src/formatters/networkFormatter.js +34 -0
- package/build/src/formatters/snapshotFormatter.js +80 -0
- package/build/src/graceful.js +125 -0
- package/build/src/index.js +13 -0
- package/build/src/logger.js +27 -0
- package/build/src/login-helper.js +431 -0
- package/build/src/main.js +268 -0
- package/build/src/plugin-api.js +189 -0
- package/build/src/profile-migration.js +82 -0
- package/build/src/profile-resolver.js +555 -0
- package/build/src/project-detector.js +71 -0
- package/build/src/project-root-state.js +18 -0
- package/build/src/roots-manager.js +253 -0
- package/build/src/selectors/chatgpt.json +61 -0
- package/build/src/selectors/gemini.json +24 -0
- package/build/src/selectors/loader.js +128 -0
- package/build/src/stable-identity.js +193 -0
- package/build/src/startup-check.js +147 -0
- package/build/src/system-profile.js +181 -0
- package/build/src/tools/ToolDefinition.js +9 -0
- package/build/src/tools/bookmarks.js +170 -0
- package/build/src/tools/categories.js +15 -0
- package/build/src/tools/chatgpt-web.js +507 -0
- package/build/src/tools/console.js +19 -0
- package/build/src/tools/core-tools.js +65 -0
- package/build/src/tools/diagnose-ui.js +328 -0
- package/build/src/tools/emulation.js +67 -0
- package/build/src/tools/extensions.js +185 -0
- package/build/src/tools/gemini-web.js +491 -0
- package/build/src/tools/iframe-popup-tools.js +204 -0
- package/build/src/tools/input.js +185 -0
- package/build/src/tools/network.js +68 -0
- package/build/src/tools/optional-tools.js +69 -0
- package/build/src/tools/pages.js +172 -0
- package/build/src/tools/performance.js +127 -0
- package/build/src/tools/screenshot.js +48 -0
- package/build/src/tools/script.js +39 -0
- package/build/src/tools/snapshot.js +45 -0
- package/build/src/trace-processing/parse.js +93 -0
- package/build/src/utils/pagination.js +49 -0
- package/package.json +90 -0
- package/scripts/cli.mjs +49 -0
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
// Copyright 2024 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
import * as Formatter from '../../models/formatter/formatter.js';
|
|
5
|
+
import { SourceMapScopeChainEntry } from './SourceMapScopeChainEntry.js';
|
|
6
|
+
export class SourceMapScopesInfo {
|
|
7
|
+
#sourceMap;
|
|
8
|
+
#originalScopes;
|
|
9
|
+
#generatedRanges;
|
|
10
|
+
#cachedVariablesAndBindingsPresent = null;
|
|
11
|
+
constructor(sourceMap, scopeInfo) {
|
|
12
|
+
this.#sourceMap = sourceMap;
|
|
13
|
+
this.#originalScopes = scopeInfo.scopes;
|
|
14
|
+
this.#generatedRanges = scopeInfo.ranges;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* If the source map does not contain any scopes information, this factory function attempts to create scope information
|
|
18
|
+
* via the script's AST combined with the mappings.
|
|
19
|
+
*
|
|
20
|
+
* We create the generated ranges from the scope tree and for each range we create an original scope that matches the bounds 1:1.
|
|
21
|
+
*/
|
|
22
|
+
static createFromAst(sourceMap, scopeTree, text) {
|
|
23
|
+
const numSourceUrls = sourceMap.sourceURLs().length;
|
|
24
|
+
const scopeBySourceUrl = [];
|
|
25
|
+
for (let i = 0; i < numSourceUrls; i++) {
|
|
26
|
+
const scope = {
|
|
27
|
+
start: { line: 0, column: 0 },
|
|
28
|
+
end: { line: Number.POSITIVE_INFINITY, column: Number.POSITIVE_INFINITY },
|
|
29
|
+
isStackFrame: false,
|
|
30
|
+
variables: [],
|
|
31
|
+
children: [],
|
|
32
|
+
};
|
|
33
|
+
scopeBySourceUrl.push(scope);
|
|
34
|
+
}
|
|
35
|
+
// Convert the entire scopeTree. Returns a root range that encompasses everything,
|
|
36
|
+
// and inserts scopes by sourceIndex into the above scopeBySourceUrl.
|
|
37
|
+
const { range } = convertScope(scopeTree, undefined);
|
|
38
|
+
return new SourceMapScopesInfo(sourceMap, { scopes: scopeBySourceUrl, ranges: [range] });
|
|
39
|
+
/**
|
|
40
|
+
* Recursively finds the correct place in the tree to insert the new scope.
|
|
41
|
+
* Maintains the invariant that children are sorted and contained by their parent.
|
|
42
|
+
*/
|
|
43
|
+
function insertInScope(parent, newScope) {
|
|
44
|
+
// Check if the newScope fits strictly inside any of the existing children.
|
|
45
|
+
for (const child of parent.children) {
|
|
46
|
+
if (contains(child, newScope)) {
|
|
47
|
+
insertInScope(child, newScope);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// When here, newScope belongs directly in parent.
|
|
52
|
+
// However, newScope might encompass some of parent's existing children (due
|
|
53
|
+
// to compiler transform quirks or arbitrary insertion order). We must move
|
|
54
|
+
// those children inside newScope.
|
|
55
|
+
const childrenToKeep = [];
|
|
56
|
+
for (const child of parent.children) {
|
|
57
|
+
if (contains(newScope, child)) {
|
|
58
|
+
// child is actually inside newScope, so re-parent it.
|
|
59
|
+
newScope.children.push(child);
|
|
60
|
+
child.parent = newScope;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
childrenToKeep.push(child);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Find the correct index in the remaining children to insert newScope.
|
|
67
|
+
// We look for the first child that starts after the new scope.
|
|
68
|
+
const insertIndex = childrenToKeep.findIndex(child => compareScopes(newScope, child) < 0);
|
|
69
|
+
if (insertIndex === -1) {
|
|
70
|
+
// If no child starts after, it goes at the end.
|
|
71
|
+
childrenToKeep.push(newScope);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
childrenToKeep.splice(insertIndex, 0, newScope);
|
|
75
|
+
}
|
|
76
|
+
// Update parent's children to only be the ones that don't belong to newScope.
|
|
77
|
+
parent.children = childrenToKeep;
|
|
78
|
+
newScope.parent = parent;
|
|
79
|
+
}
|
|
80
|
+
function contains(outer, inner) {
|
|
81
|
+
return comparePositions(outer.start, inner.start) <= 0 && comparePositions(outer.end, inner.end) >= 0;
|
|
82
|
+
}
|
|
83
|
+
function compareScopes(a, b) {
|
|
84
|
+
return comparePositions(a.start, b.start);
|
|
85
|
+
}
|
|
86
|
+
function comparePositions(a, b) {
|
|
87
|
+
if (a.line !== b.line) {
|
|
88
|
+
return a.line - b.line;
|
|
89
|
+
}
|
|
90
|
+
return a.column - b.column;
|
|
91
|
+
}
|
|
92
|
+
function convertScope(node, parentRange) {
|
|
93
|
+
const start = positionFromOffset(node.start);
|
|
94
|
+
const end = positionFromOffset(node.end);
|
|
95
|
+
const startEntry = sourceMap.findEntry(start.line, start.column);
|
|
96
|
+
const endEntry = sourceMap.findEntry(end.line, end.column);
|
|
97
|
+
const sourceIndex = startEntry?.sourceIndex;
|
|
98
|
+
const canMapOriginalPosition = startEntry && endEntry && sourceIndex !== undefined &&
|
|
99
|
+
startEntry.sourceIndex === endEntry.sourceIndex && startEntry.sourceIndex !== undefined && sourceIndex >= 0 &&
|
|
100
|
+
sourceIndex < numSourceUrls;
|
|
101
|
+
const isStackFrame = node.kind === 2 /* Formatter.FormatterWorkerPool.ScopeKind.FUNCTION */ ||
|
|
102
|
+
node.kind === 4 /* Formatter.FormatterWorkerPool.ScopeKind.ARROW_FUNCTION */;
|
|
103
|
+
// TODO(crbug.com/368222773): Instead of mapping `start`, we should report a number of candidates. e.g. for arrow functions we should
|
|
104
|
+
// follow the spec and map the `=>` as the spec says that is where the original name (if any) for arrow functions can be found.
|
|
105
|
+
const name = node.kind === 2 /* Formatter.FormatterWorkerPool.ScopeKind.FUNCTION */ ? startEntry?.name : undefined;
|
|
106
|
+
let scope;
|
|
107
|
+
if (canMapOriginalPosition) {
|
|
108
|
+
scope = {
|
|
109
|
+
start: { line: startEntry.sourceLineNumber, column: startEntry.sourceColumnNumber },
|
|
110
|
+
end: { line: endEntry.sourceLineNumber, column: endEntry.sourceColumnNumber },
|
|
111
|
+
name,
|
|
112
|
+
isStackFrame,
|
|
113
|
+
variables: [],
|
|
114
|
+
children: [],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
const range = {
|
|
118
|
+
start,
|
|
119
|
+
end,
|
|
120
|
+
originalScope: scope,
|
|
121
|
+
isStackFrame,
|
|
122
|
+
isHidden: false,
|
|
123
|
+
values: [],
|
|
124
|
+
children: [],
|
|
125
|
+
};
|
|
126
|
+
parentRange?.children.push(range);
|
|
127
|
+
if (canMapOriginalPosition && scope) {
|
|
128
|
+
const rootScope = scopeBySourceUrl[sourceIndex];
|
|
129
|
+
insertInScope(rootScope, scope);
|
|
130
|
+
}
|
|
131
|
+
node.children.forEach(child => convertScope(child, range));
|
|
132
|
+
return { range };
|
|
133
|
+
}
|
|
134
|
+
function positionFromOffset(offset) {
|
|
135
|
+
const location = text.positionFromOffset(offset);
|
|
136
|
+
return { line: location.lineNumber, column: location.columnNumber };
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
addOriginalScopes(scopes) {
|
|
140
|
+
for (const scope of scopes) {
|
|
141
|
+
this.#originalScopes.push(scope);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
addGeneratedRanges(ranges) {
|
|
145
|
+
for (const range of ranges) {
|
|
146
|
+
this.#generatedRanges.push(range);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
hasOriginalScopes(sourceIdx) {
|
|
150
|
+
return Boolean(this.#originalScopes[sourceIdx]);
|
|
151
|
+
}
|
|
152
|
+
isEmpty() {
|
|
153
|
+
return !this.#originalScopes.length && !this.#generatedRanges.length;
|
|
154
|
+
}
|
|
155
|
+
addOriginalScopesAtIndex(sourceIdx, scope) {
|
|
156
|
+
if (!this.#originalScopes[sourceIdx]) {
|
|
157
|
+
this.#originalScopes[sourceIdx] = scope;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
throw new Error(`Trying to re-augment existing scopes for source at index: ${sourceIdx}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* @returns true, iff the function surrounding the provided position is marked as "hidden".
|
|
165
|
+
*/
|
|
166
|
+
isOutlinedFrame(generatedLine, generatedColumn) {
|
|
167
|
+
const rangeChain = this.#findGeneratedRangeChain(generatedLine, generatedColumn);
|
|
168
|
+
return this.#isOutlinedFrame(rangeChain);
|
|
169
|
+
}
|
|
170
|
+
#isOutlinedFrame(rangeChain) {
|
|
171
|
+
for (let i = rangeChain.length - 1; i >= 0; --i) {
|
|
172
|
+
if (rangeChain[i].isStackFrame) {
|
|
173
|
+
return rangeChain[i].isHidden;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* @returns true, iff the range surrounding the provided position contains multiple
|
|
180
|
+
* inlined original functions.
|
|
181
|
+
*/
|
|
182
|
+
hasInlinedFrames(generatedLine, generatedColumn) {
|
|
183
|
+
const rangeChain = this.#findGeneratedRangeChain(generatedLine, generatedColumn);
|
|
184
|
+
for (let i = rangeChain.length - 1; i >= 0; --i) {
|
|
185
|
+
if (rangeChain[i].isStackFrame) {
|
|
186
|
+
// We stop looking for inlined original functions once we reach the current frame.
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
if (rangeChain[i].callSite) {
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Given a generated position, returns the original name of the surrounding function as well as
|
|
197
|
+
* all the original function names that got inlined into the surrounding generated function and their
|
|
198
|
+
* respective callsites in the original code (ordered from inner to outer).
|
|
199
|
+
*
|
|
200
|
+
* @returns a list with inlined functions. Every entry in the list has a callsite in the orignal code,
|
|
201
|
+
* except the last function (since the last function didn't get inlined).
|
|
202
|
+
*/
|
|
203
|
+
findInlinedFunctions(generatedLine, generatedColumn) {
|
|
204
|
+
const rangeChain = this.#findGeneratedRangeChain(generatedLine, generatedColumn);
|
|
205
|
+
const result = {
|
|
206
|
+
inlinedFunctions: [],
|
|
207
|
+
originalFunctionName: '',
|
|
208
|
+
};
|
|
209
|
+
// Walk the generated ranges from the innermost containing range outwards as long as we don't
|
|
210
|
+
// encounter a range that is a scope in the generated code and a function scope originally.
|
|
211
|
+
for (let i = rangeChain.length - 1; i >= 0; --i) {
|
|
212
|
+
const range = rangeChain[i];
|
|
213
|
+
if (range.callSite) {
|
|
214
|
+
// Record the name and call-site if the range corresponds to an inlined function.
|
|
215
|
+
result.inlinedFunctions.push({
|
|
216
|
+
name: range.originalScope?.name ?? '',
|
|
217
|
+
callsite: { ...range.callSite, sourceURL: this.#sourceMap.sourceURLForSourceIndex(range.callSite.sourceIndex) }
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
if (range.isStackFrame) {
|
|
221
|
+
// We arrived at an actual generated JS function, don't go further.
|
|
222
|
+
// The corresponding original scope could not actually be a function
|
|
223
|
+
// (e.g. a block scope transpiled down to a JS function), but we'll
|
|
224
|
+
// filter that out later.
|
|
225
|
+
result.originalFunctionName = range.originalScope?.name ?? '';
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return result;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Takes a V8 provided call frame and expands any inlined frames into virtual call frames.
|
|
233
|
+
*
|
|
234
|
+
* For call frames where nothing was inlined, the result contains only a single element,
|
|
235
|
+
* the provided frame but with the original name.
|
|
236
|
+
*
|
|
237
|
+
* For call frames where we are paused in inlined code, this function returns a list of
|
|
238
|
+
* call frames from "inner to outer". This is the call frame at index 0
|
|
239
|
+
* signifies the top of this stack trace fragment.
|
|
240
|
+
*
|
|
241
|
+
* The rest are "virtual" call frames and will have an "inlineFrameIndex" set in ascending
|
|
242
|
+
* order, so the condition `result[index] === result[index].inlineFrameIndex` always holds.
|
|
243
|
+
*/
|
|
244
|
+
expandCallFrame(callFrame) {
|
|
245
|
+
const { originalFunctionName, inlinedFunctions } = this.findInlinedFunctions(callFrame.location().lineNumber, callFrame.location().columnNumber);
|
|
246
|
+
const result = [];
|
|
247
|
+
for (const [index, fn] of inlinedFunctions.entries()) {
|
|
248
|
+
result.push(callFrame.createVirtualCallFrame(index, fn.name));
|
|
249
|
+
}
|
|
250
|
+
result.push(callFrame.createVirtualCallFrame(result.length, originalFunctionName));
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Given a generated position, this returns all the surrounding generated ranges from outer
|
|
255
|
+
* to inner.
|
|
256
|
+
*/
|
|
257
|
+
#findGeneratedRangeChain(line, column) {
|
|
258
|
+
const result = [];
|
|
259
|
+
(function walkRanges(ranges) {
|
|
260
|
+
for (const range of ranges) {
|
|
261
|
+
if (!contains(range, line, column)) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
result.push(range);
|
|
265
|
+
walkRanges(range.children);
|
|
266
|
+
}
|
|
267
|
+
})(this.#generatedRanges);
|
|
268
|
+
return result;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* @returns true if we have enough info (i.e. variable and binding expressions) to build
|
|
272
|
+
* a scope view.
|
|
273
|
+
*/
|
|
274
|
+
hasVariablesAndBindings() {
|
|
275
|
+
if (this.#cachedVariablesAndBindingsPresent === null) {
|
|
276
|
+
this.#cachedVariablesAndBindingsPresent = this.#areVariablesAndBindingsPresent();
|
|
277
|
+
}
|
|
278
|
+
return this.#cachedVariablesAndBindingsPresent;
|
|
279
|
+
}
|
|
280
|
+
#areVariablesAndBindingsPresent() {
|
|
281
|
+
// We check whether any original scope has a non-empty list of variables, and
|
|
282
|
+
// generated ranges with a non-empty binding list.
|
|
283
|
+
function walkTree(nodes) {
|
|
284
|
+
for (const node of nodes) {
|
|
285
|
+
if (!node) {
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
if ('variables' in node && node.variables.length > 0) {
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
if ('values' in node && node.values.some(v => v !== null)) {
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
if (walkTree(node.children)) {
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
return walkTree(this.#originalScopes) && walkTree(this.#generatedRanges);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Constructs a scope chain based on the CallFrame's paused position.
|
|
304
|
+
*
|
|
305
|
+
* The algorithm to obtain the original scope chain is straight-forward:
|
|
306
|
+
*
|
|
307
|
+
* 1) Find the inner-most generated range that contains the CallFrame's
|
|
308
|
+
* paused position.
|
|
309
|
+
*
|
|
310
|
+
* 2) Does the found range have an associated original scope?
|
|
311
|
+
*
|
|
312
|
+
* 2a) If no, return null. This is a "hidden" range and technically
|
|
313
|
+
* we shouldn't be pausing here in the first place. This code doesn't
|
|
314
|
+
* correspond to anything in the authored code.
|
|
315
|
+
*
|
|
316
|
+
* 2b) If yes, the associated original scope is the inner-most
|
|
317
|
+
* original scope in the resulting scope chain.
|
|
318
|
+
*
|
|
319
|
+
* 3) Walk the parent chain of the found original scope outwards. This is
|
|
320
|
+
* our scope view. For each original scope we also try to find a
|
|
321
|
+
* corresponding generated range that contains the CallFrame's
|
|
322
|
+
* paused position. We need the generated range to resolve variable
|
|
323
|
+
* values.
|
|
324
|
+
*/
|
|
325
|
+
resolveMappedScopeChain(callFrame) {
|
|
326
|
+
const rangeChain = this.#findGeneratedRangeChainForFrame(callFrame);
|
|
327
|
+
const innerMostOriginalScope = rangeChain.at(-1)?.originalScope;
|
|
328
|
+
if (innerMostOriginalScope === undefined) {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
// TODO(crbug.com/40277685): Add a sanity check here where we map the paused position using
|
|
332
|
+
// the source map's mappings, find the inner-most original scope with that mapped paused
|
|
333
|
+
// position and compare that result with `innerMostOriginalScope`. If they don't match we
|
|
334
|
+
// should emit a warning about the broken source map as mappings and scopes are inconsistent
|
|
335
|
+
// w.r.t. each other.
|
|
336
|
+
let seenFunctionScope = false;
|
|
337
|
+
const result = [];
|
|
338
|
+
// Walk the original scope chain outwards and try to find the corresponding generated range along the way.
|
|
339
|
+
for (let originalScope = rangeChain.at(-1)?.originalScope; originalScope; originalScope = originalScope.parent) {
|
|
340
|
+
const range = rangeChain.findLast(r => r.originalScope === originalScope);
|
|
341
|
+
const isFunctionScope = originalScope.kind === 'function';
|
|
342
|
+
const isInnerMostFunction = isFunctionScope && !seenFunctionScope;
|
|
343
|
+
const returnValue = isInnerMostFunction ? callFrame.returnValue() : null;
|
|
344
|
+
result.push(new SourceMapScopeChainEntry(callFrame, originalScope, range, isInnerMostFunction, returnValue ?? undefined));
|
|
345
|
+
seenFunctionScope ||= isFunctionScope;
|
|
346
|
+
}
|
|
347
|
+
// If we are paused on a return statement, we need to drop inner block scopes. This is because V8 only emits a
|
|
348
|
+
// single return bytecode and "gotos" at the functions' end, where we are now paused.
|
|
349
|
+
if (callFrame.returnValue() !== null) {
|
|
350
|
+
while (result.length && result[0].type() !== "local" /* Protocol.Debugger.ScopeType.Local */) {
|
|
351
|
+
result.shift();
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return result;
|
|
355
|
+
}
|
|
356
|
+
/** Similar to #findGeneratedRangeChain, but takes inlineFrameIndex of virtual call frames into account */
|
|
357
|
+
#findGeneratedRangeChainForFrame(callFrame) {
|
|
358
|
+
const rangeChain = this.#findGeneratedRangeChain(callFrame.location().lineNumber, callFrame.location().columnNumber);
|
|
359
|
+
if (callFrame.inlineFrameIndex === 0) {
|
|
360
|
+
return rangeChain;
|
|
361
|
+
}
|
|
362
|
+
// Drop ranges in the chain until we reach our desired inlined range.
|
|
363
|
+
for (let inlineIndex = 0; inlineIndex < callFrame.inlineFrameIndex;) {
|
|
364
|
+
const range = rangeChain.pop();
|
|
365
|
+
if (range?.callSite) {
|
|
366
|
+
++inlineIndex;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return rangeChain;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Returns the authored function name of the function containing the provided generated position.
|
|
373
|
+
*/
|
|
374
|
+
findOriginalFunctionName(position) {
|
|
375
|
+
const originalInnerMostScope = this.findOriginalFunctionScope(position)?.scope ?? undefined;
|
|
376
|
+
return this.#findFunctionNameInOriginalScopeChain(originalInnerMostScope);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Returns the authored function scope of the function containing the provided generated position.
|
|
380
|
+
*/
|
|
381
|
+
findOriginalFunctionScope({ line, column }) {
|
|
382
|
+
// There are 2 approaches:
|
|
383
|
+
// 1) Find the inner-most generated range containing the provided generated position
|
|
384
|
+
// and use it's OriginalScope (then walk it outwards until we hit a function).
|
|
385
|
+
// 2) Use the mappings to turn the generated position into an original position.
|
|
386
|
+
// Then find the inner-most original scope containing that original position.
|
|
387
|
+
// Then walk it outwards until we hit a function.
|
|
388
|
+
//
|
|
389
|
+
// Both approaches should yield the same result (assuming the mappings are spec compliant
|
|
390
|
+
// w.r.t. generated ranges). But in the case of "pasta" scopes and extension provided
|
|
391
|
+
// scope info, we only have the OriginalScope parts and mappings without GeneratedRanges.
|
|
392
|
+
let originalInnerMostScope;
|
|
393
|
+
if (this.#generatedRanges.length > 0) {
|
|
394
|
+
const rangeChain = this.#findGeneratedRangeChain(line, column);
|
|
395
|
+
originalInnerMostScope = rangeChain.at(-1)?.originalScope;
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
// No GeneratedRanges. Try to use mappings.
|
|
399
|
+
const entry = this.#sourceMap.findEntry(line, column);
|
|
400
|
+
if (entry?.sourceIndex === undefined) {
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
originalInnerMostScope =
|
|
404
|
+
this.#findOriginalScopeChain({ sourceIndex: entry.sourceIndex, line: entry.sourceLineNumber, column: entry.sourceColumnNumber })
|
|
405
|
+
.at(-1);
|
|
406
|
+
}
|
|
407
|
+
if (!originalInnerMostScope) {
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
410
|
+
const functionScope = this.#findFunctionScopeInOriginalScopeChain(originalInnerMostScope);
|
|
411
|
+
if (!functionScope) {
|
|
412
|
+
return null;
|
|
413
|
+
}
|
|
414
|
+
// Find the root scope for some given original source, to get the source url.
|
|
415
|
+
let rootScope = functionScope;
|
|
416
|
+
while (rootScope.parent) {
|
|
417
|
+
rootScope = rootScope.parent;
|
|
418
|
+
}
|
|
419
|
+
const sourceIndex = this.#originalScopes.indexOf(rootScope);
|
|
420
|
+
const url = sourceIndex !== -1 ? this.#sourceMap.sourceURLForSourceIndex(sourceIndex) : undefined;
|
|
421
|
+
return functionScope ? { scope: functionScope, url } : null;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Given an original position, this returns all the surrounding original scopes from outer
|
|
425
|
+
* to inner.
|
|
426
|
+
*/
|
|
427
|
+
#findOriginalScopeChain({ sourceIndex, line, column }) {
|
|
428
|
+
const scope = this.#originalScopes[sourceIndex];
|
|
429
|
+
if (!scope) {
|
|
430
|
+
return [];
|
|
431
|
+
}
|
|
432
|
+
const result = [];
|
|
433
|
+
(function walkScopes(scopes) {
|
|
434
|
+
for (const scope of scopes) {
|
|
435
|
+
if (!contains(scope, line, column)) {
|
|
436
|
+
continue;
|
|
437
|
+
}
|
|
438
|
+
result.push(scope);
|
|
439
|
+
walkScopes(scope.children);
|
|
440
|
+
}
|
|
441
|
+
})([scope]);
|
|
442
|
+
return result;
|
|
443
|
+
}
|
|
444
|
+
#findFunctionScopeInOriginalScopeChain(innerOriginalScope) {
|
|
445
|
+
for (let originalScope = innerOriginalScope; originalScope; originalScope = originalScope.parent) {
|
|
446
|
+
if (originalScope.isStackFrame) {
|
|
447
|
+
return originalScope;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return null;
|
|
451
|
+
}
|
|
452
|
+
#findFunctionNameInOriginalScopeChain(innerOriginalScope) {
|
|
453
|
+
const functionScope = this.#findFunctionScopeInOriginalScopeChain(innerOriginalScope);
|
|
454
|
+
if (!functionScope) {
|
|
455
|
+
return null;
|
|
456
|
+
}
|
|
457
|
+
return functionScope.name ?? '';
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Returns one or more original stack frames for this single "raw frame" or call-site.
|
|
461
|
+
*
|
|
462
|
+
* @returns An empty array if no mapping at the call-site was found, or the resulting frames
|
|
463
|
+
* in top-to-bottom order in case of inlining.
|
|
464
|
+
* @throws If this range is marked "hidden". Outlining needs to be handled externally as
|
|
465
|
+
* outlined function segments in stack traces can span across bundles.
|
|
466
|
+
*/
|
|
467
|
+
translateCallSite(generatedLine, generatedColumn) {
|
|
468
|
+
const rangeChain = this.#findGeneratedRangeChain(generatedLine, generatedColumn);
|
|
469
|
+
if (this.#isOutlinedFrame(rangeChain)) {
|
|
470
|
+
throw new Error('SourceMapScopesInfo is unable to translate an outlined function by itself');
|
|
471
|
+
}
|
|
472
|
+
const mapping = this.#sourceMap.findEntry(generatedLine, generatedColumn);
|
|
473
|
+
if (mapping?.sourceIndex === undefined) {
|
|
474
|
+
return [];
|
|
475
|
+
}
|
|
476
|
+
// The top-most frame is translated the same even if we have inlined functions.
|
|
477
|
+
const result = [{
|
|
478
|
+
line: mapping.sourceLineNumber,
|
|
479
|
+
column: mapping.sourceColumnNumber,
|
|
480
|
+
name: this.findOriginalFunctionName({ line: generatedLine, column: generatedColumn }) ?? undefined,
|
|
481
|
+
url: mapping.sourceURL,
|
|
482
|
+
}];
|
|
483
|
+
// Walk the range chain inside out until we find a generated function and for each inlined function add a frame.
|
|
484
|
+
for (let i = rangeChain.length - 1; i >= 0 && !rangeChain[i].isStackFrame; --i) {
|
|
485
|
+
const range = rangeChain[i];
|
|
486
|
+
if (!range.callSite) {
|
|
487
|
+
continue;
|
|
488
|
+
}
|
|
489
|
+
const originalScopeChain = this.#findOriginalScopeChain(range.callSite);
|
|
490
|
+
result.push({
|
|
491
|
+
line: range.callSite.line,
|
|
492
|
+
column: range.callSite.column,
|
|
493
|
+
name: this.#findFunctionNameInOriginalScopeChain(originalScopeChain.at(-1)) ?? undefined,
|
|
494
|
+
url: this.#sourceMap.sourceURLForSourceIndex(range.callSite.sourceIndex),
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
return result;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
export function contains(range, line, column) {
|
|
501
|
+
if (range.start.line > line || (range.start.line === line && range.start.column > column)) {
|
|
502
|
+
return false;
|
|
503
|
+
}
|
|
504
|
+
if (range.end.line < line || (range.end.line === line && range.end.column <= column)) {
|
|
505
|
+
return false;
|
|
506
|
+
}
|
|
507
|
+
return true;
|
|
508
|
+
}
|
|
@@ -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 });
|