chrome-devtools-mcp-for-extension 0.19.2 → 0.20.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/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +13 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +9 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +1 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +9 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +5 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +10 -20
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +0 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +6 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +1 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +110 -99
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +1 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +1 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +21 -2
- 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 +102 -86
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +32 -450
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +32 -29
- 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 +5 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +10 -22
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +26 -15
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +2 -2
- 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/StringUtilities.js +34 -32
- 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 +2 -2
- 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 +49 -312
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +4 -9
- 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/root.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +2 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +0 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +51 -17
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +21 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +11 -5
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +4 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +11 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +34 -24
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +52 -10
- 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 +4 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +39 -35
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +10 -47
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +29 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +5 -20
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +17 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +1 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +428 -121
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +8 -22
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +44 -34
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +64 -19
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +139 -12
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +5 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +3 -2
- 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 +20 -18
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +26 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +3 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +54 -14
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +16 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +19 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +240 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +12 -17
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +38 -29
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +11 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +80 -31
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +1301 -174
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +67 -22
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +62 -91
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +188 -100
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +30 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +50 -34
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +152 -101
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +11 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +25 -26
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +46 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +10 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +82 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +33 -15
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +105 -14
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +38 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +5 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +9 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +6 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +6 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +16 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +6 -4
- 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 +12 -16
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +8 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +1 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +6 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +4 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +11 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +7 -5
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +8 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +4 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +29 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +59 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +26 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +18 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +12 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +3 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +14 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +13 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +4 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +4 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +9 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +25 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +41 -48
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +38 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +5 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
- package/build/src/McpContext.js +8 -1
- package/build/src/tools/bookmarks.js +0 -1
- package/build/src/tools/gemini-web.js +17 -25
- package/build/src/tools/snapshot.js +9 -2
- package/package.json +3 -3
|
@@ -86,7 +86,8 @@ export class ResourceTreeModel extends SDKModel {
|
|
|
86
86
|
if (!this.framesInternal.has(frameId)) {
|
|
87
87
|
return null;
|
|
88
88
|
}
|
|
89
|
-
|
|
89
|
+
// TODO(crbug.com/445966299): Refactor to use `storageAgent().invoke_getStorageKey()` instead.
|
|
90
|
+
const response = await this.storageAgent.invoke_getStorageKey({ frameId });
|
|
90
91
|
if (response.getError() === 'Frame tree node for given frame not found') {
|
|
91
92
|
return null;
|
|
92
93
|
}
|
|
@@ -721,7 +722,7 @@ export class ResourceTreeFrame {
|
|
|
721
722
|
}
|
|
722
723
|
addRequest(request) {
|
|
723
724
|
let resource = this.resourcesMap.get(request.url());
|
|
724
|
-
if (resource
|
|
725
|
+
if (resource?.request === request) {
|
|
725
726
|
// Already in the tree, we just got an extra update.
|
|
726
727
|
return;
|
|
727
728
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 * as Formatter from '../../models/formatter/formatter.js';
|
|
5
|
+
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
6
|
+
/** If a script failed to parse, we stash null in order to prevent unnecessary re-parsing */
|
|
7
|
+
const scopeTrees = new WeakMap();
|
|
8
|
+
/**
|
|
9
|
+
* Computes and caches the scope tree for `script`.
|
|
10
|
+
*
|
|
11
|
+
* We use {@link Script} as a key to uniquely identify scripts.
|
|
12
|
+
* {@link Script} boils down to "target" + "script ID". This
|
|
13
|
+
* duplicates work in case of identical script running on multiple targets
|
|
14
|
+
* (e.g. workers).
|
|
15
|
+
*
|
|
16
|
+
* We also return a {@link TextUtils.Text.Text} instance. The scope tree uses offsets
|
|
17
|
+
* and the text allows conversion from/to line/column numbers.
|
|
18
|
+
*/
|
|
19
|
+
export function scopeTreeForScript(script) {
|
|
20
|
+
let promise = scopeTrees.get(script);
|
|
21
|
+
if (promise === undefined) {
|
|
22
|
+
promise = script.requestContentData().then(content => {
|
|
23
|
+
if (TextUtils.ContentData.ContentData.isError(content)) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const sourceType = script.isModule ? 'module' : 'script';
|
|
27
|
+
return Formatter.FormatterWorkerPool.formatterWorkerPool()
|
|
28
|
+
.javaScriptScopeTree(content.text, sourceType)
|
|
29
|
+
.then(scopeTree => scopeTree ? ({ scopeTree, text: content.textObj }) : null)
|
|
30
|
+
.catch(() => null);
|
|
31
|
+
});
|
|
32
|
+
scopeTrees.set(script, promise);
|
|
33
|
+
}
|
|
34
|
+
// We intentionally return `null` here if the script already failed to parse once.
|
|
35
|
+
return promise;
|
|
36
|
+
}
|
package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js
CHANGED
|
@@ -3,24 +3,26 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
import { OverlayModel } from './OverlayModel.js';
|
|
5
5
|
import { SDKModel } from './SDKModel.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Manages concurrent screencast requests by queuing and prioritizing.
|
|
8
|
+
*
|
|
9
|
+
* When startScreencast is invoked:
|
|
10
|
+
* - If a screencast is currently active, the existing screencast's parameters and callbacks are
|
|
11
|
+
* saved in the #screencastOperations array.
|
|
12
|
+
* - The active screencast is then stopped.
|
|
13
|
+
* - A new screencast is initiated using the parameters and callbacks from the current startScreencast call.
|
|
14
|
+
*
|
|
15
|
+
* When stopScreencast is invoked:
|
|
16
|
+
* - The currently active screencast is stopped.
|
|
17
|
+
* - The #screencastOperations is checked for interrupted screencast operations.
|
|
18
|
+
* - If any operations are found, the latest one is started
|
|
19
|
+
* using its saved parameters and callbacks.
|
|
20
|
+
*
|
|
21
|
+
* This ensures that:
|
|
22
|
+
* - Only one screencast is active at a time.
|
|
23
|
+
* - Interrupted screencasts are resumed after the current screencast is stopped.
|
|
24
|
+
* This ensures animation previews, which use screencasting, don't disrupt ongoing remote debugging sessions. Without this mechanism, stopping a preview screencast would terminate the debugging screencast, freezing the ScreencastView.
|
|
25
|
+
**/
|
|
24
26
|
export class ScreenCaptureModel extends SDKModel {
|
|
25
27
|
#agent;
|
|
26
28
|
#nextScreencastOperationId = 1;
|
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
// Copyright 2021 The Chromium Authors
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (C) 2008 Apple Inc. All Rights Reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions
|
|
9
|
+
* are met:
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
13
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
14
|
+
* documentation and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
|
|
17
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
19
|
+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
|
|
20
|
+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
21
|
+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
22
|
+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
23
|
+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
24
|
+
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
26
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
import * as Platform from '../../core/platform/platform.js';
|
|
4
29
|
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
5
30
|
import * as Common from '../common/common.js';
|
|
6
31
|
import * as i18n from '../i18n/i18n.js';
|
|
@@ -366,7 +391,7 @@ function frameIdForScript(script) {
|
|
|
366
391
|
}
|
|
367
392
|
export const sourceURLRegex = /^[\x20\t]*\/\/[@#] sourceURL=\s*(\S*?)\s*$/;
|
|
368
393
|
export async function disassembleWasm(content) {
|
|
369
|
-
const worker =
|
|
394
|
+
const worker = Platform.HostRuntime.HOST_RUNTIME.createWorker(new URL('../../entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.js', import.meta.url).toString());
|
|
370
395
|
const promise = new Promise((resolve, reject) => {
|
|
371
396
|
worker.onmessage = ({ data }) => {
|
|
372
397
|
if ('method' in data) {
|
package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js
CHANGED
|
@@ -28,6 +28,9 @@ export class ServerSentEventsParser {
|
|
|
28
28
|
async addBase64Chunk(raw) {
|
|
29
29
|
await this.#decoder.addBase64Chunk(raw);
|
|
30
30
|
}
|
|
31
|
+
addTextChunk(chunk) {
|
|
32
|
+
this.#onTextChunk(chunk);
|
|
33
|
+
}
|
|
31
34
|
#onTextChunk(chunk) {
|
|
32
35
|
// A line consists of "this.#line" plus a slice of "chunk[start:<next new cr/lf>]".
|
|
33
36
|
let start = 0;
|
|
@@ -7,6 +7,7 @@ import * as ScopesCodec from '../../third_party/source-map-scopes-codec/source-m
|
|
|
7
7
|
import * as Common from '../common/common.js';
|
|
8
8
|
import * as Platform from '../platform/platform.js';
|
|
9
9
|
import * as Root from '../root/root.js';
|
|
10
|
+
import { scopeTreeForScript } from './ScopeTreeCache.js';
|
|
10
11
|
import { buildOriginalScopes, decodePastaRanges } from './SourceMapFunctionRanges.js';
|
|
11
12
|
import { SourceMapScopesInfo } from './SourceMapScopesInfo.js';
|
|
12
13
|
/**
|
|
@@ -56,22 +57,24 @@ export class SourceMap {
|
|
|
56
57
|
#compiledURL;
|
|
57
58
|
#sourceMappingURL;
|
|
58
59
|
#baseURL;
|
|
59
|
-
#mappings;
|
|
60
|
+
#mappings = null;
|
|
60
61
|
#sourceInfos = [];
|
|
61
62
|
#sourceInfoByURL = new Map();
|
|
63
|
+
#script;
|
|
62
64
|
#scopesInfo = null;
|
|
63
65
|
#debugId;
|
|
66
|
+
scopesFallbackPromiseForTest;
|
|
64
67
|
/**
|
|
65
68
|
* Implements Source Map V3 model. See https://github.com/google/closure-compiler/wiki/Source-Maps
|
|
66
69
|
* for format description.
|
|
67
70
|
*/
|
|
68
|
-
constructor(compiledURL, sourceMappingURL, payload) {
|
|
71
|
+
constructor(compiledURL, sourceMappingURL, payload, script) {
|
|
69
72
|
this.#json = payload;
|
|
73
|
+
this.#script = script;
|
|
70
74
|
this.#compiledURL = compiledURL;
|
|
71
75
|
this.#sourceMappingURL = sourceMappingURL;
|
|
72
76
|
this.#baseURL = (Common.ParsedURL.schemeIs(sourceMappingURL, 'data:')) ? compiledURL : sourceMappingURL;
|
|
73
77
|
this.#debugId = 'debugId' in payload ? payload.debugId : undefined;
|
|
74
|
-
this.#mappings = null;
|
|
75
78
|
if ('sections' in this.#json) {
|
|
76
79
|
if (this.#json.sections.find(section => 'url' in section)) {
|
|
77
80
|
Common.Console.Console.instance().warn(`SourceMap "${sourceMappingURL}" contains unsupported "URL" field in one of its sections.`);
|
|
@@ -83,7 +86,7 @@ export class SourceMap {
|
|
|
83
86
|
return this.#json;
|
|
84
87
|
}
|
|
85
88
|
augmentWithScopes(scriptUrl, ranges) {
|
|
86
|
-
this.#
|
|
89
|
+
this.#ensureSourceMapProcessed();
|
|
87
90
|
if (this.#json && this.#json.version > 3) {
|
|
88
91
|
throw new Error('Only support augmenting source maps up to version 3.');
|
|
89
92
|
}
|
|
@@ -115,6 +118,9 @@ export class SourceMap {
|
|
|
115
118
|
debugId() {
|
|
116
119
|
return this.#debugId ?? null;
|
|
117
120
|
}
|
|
121
|
+
sourceURLForSourceIndex(index) {
|
|
122
|
+
return this.#sourceInfos[index]?.sourceURL;
|
|
123
|
+
}
|
|
118
124
|
sourceURLs() {
|
|
119
125
|
return [...this.#sourceInfoByURL.keys()];
|
|
120
126
|
}
|
|
@@ -126,11 +132,11 @@ export class SourceMap {
|
|
|
126
132
|
return entry.content;
|
|
127
133
|
}
|
|
128
134
|
hasScopeInfo() {
|
|
129
|
-
this.#
|
|
130
|
-
return this.#scopesInfo !== null;
|
|
135
|
+
this.#ensureSourceMapProcessed();
|
|
136
|
+
return this.#scopesInfo !== null && !this.#scopesInfo.isEmpty();
|
|
131
137
|
}
|
|
132
138
|
findEntry(lineNumber, columnNumber, inlineFrameIndex) {
|
|
133
|
-
this.#
|
|
139
|
+
this.#ensureSourceMapProcessed();
|
|
134
140
|
if (inlineFrameIndex && this.#scopesInfo !== null) {
|
|
135
141
|
// For inlineFrameIndex != 0 we use the callsite info for the corresponding inlining site.
|
|
136
142
|
// Note that the callsite for "inlineFrameIndex" is actually in the previous frame.
|
|
@@ -253,18 +259,36 @@ export class SourceMap {
|
|
|
253
259
|
return ranges;
|
|
254
260
|
}
|
|
255
261
|
mappings() {
|
|
256
|
-
this.#
|
|
262
|
+
this.#ensureSourceMapProcessed();
|
|
257
263
|
return this.#mappings ?? [];
|
|
258
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* If the source map does not contain scope information by itself (e.g. "scopes proposal"
|
|
267
|
+
* or "pasta" scopes), then we'll use this getter to calculate basic function name information from
|
|
268
|
+
* the AST and mappings.
|
|
269
|
+
*/
|
|
270
|
+
async #buildScopesFallback() {
|
|
271
|
+
const scopeTreeAndText = this.#script ? await scopeTreeForScript(this.#script) : null;
|
|
272
|
+
if (!scopeTreeAndText) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
const { scopeTree, text } = scopeTreeAndText;
|
|
276
|
+
return SourceMapScopesInfo.createFromAst(this, scopeTree, text);
|
|
277
|
+
}
|
|
259
278
|
reversedMappings(sourceURL) {
|
|
260
|
-
this.#
|
|
279
|
+
this.#ensureSourceMapProcessed();
|
|
261
280
|
return this.#sourceInfoByURL.get(sourceURL)?.reverseMappings ?? [];
|
|
262
281
|
}
|
|
263
|
-
#
|
|
282
|
+
#ensureSourceMapProcessed() {
|
|
264
283
|
if (this.#mappings === null) {
|
|
265
284
|
this.#mappings = [];
|
|
266
285
|
try {
|
|
267
286
|
this.eachSection(this.parseMap.bind(this));
|
|
287
|
+
if (!this.hasScopeInfo()) {
|
|
288
|
+
this.scopesFallbackPromiseForTest = this.#buildScopesFallback().then(info => {
|
|
289
|
+
this.#scopesInfo = info;
|
|
290
|
+
});
|
|
291
|
+
}
|
|
268
292
|
}
|
|
269
293
|
catch (e) {
|
|
270
294
|
console.error('Failed to parse source map', e);
|
|
@@ -281,7 +305,7 @@ export class SourceMap {
|
|
|
281
305
|
#computeReverseMappings(mappings) {
|
|
282
306
|
const reverseMappingsPerUrl = new Map();
|
|
283
307
|
for (let i = 0; i < mappings.length; i++) {
|
|
284
|
-
const entryUrl = mappings[i]
|
|
308
|
+
const entryUrl = mappings[i]?.sourceURL;
|
|
285
309
|
if (!entryUrl) {
|
|
286
310
|
continue;
|
|
287
311
|
}
|
|
@@ -568,23 +592,39 @@ export class SourceMap {
|
|
|
568
592
|
this.hasIgnoreListHint(sourceURL) === other.hasIgnoreListHint(sourceURL);
|
|
569
593
|
}
|
|
570
594
|
expandCallFrame(frame) {
|
|
571
|
-
this.#
|
|
595
|
+
this.#ensureSourceMapProcessed();
|
|
572
596
|
if (this.#scopesInfo === null) {
|
|
573
597
|
return [frame];
|
|
574
598
|
}
|
|
575
599
|
return this.#scopesInfo.expandCallFrame(frame);
|
|
576
600
|
}
|
|
577
601
|
resolveScopeChain(frame) {
|
|
578
|
-
this.#
|
|
602
|
+
this.#ensureSourceMapProcessed();
|
|
579
603
|
if (this.#scopesInfo === null) {
|
|
580
604
|
return null;
|
|
581
605
|
}
|
|
582
606
|
return this.#scopesInfo.resolveMappedScopeChain(frame);
|
|
583
607
|
}
|
|
584
608
|
findOriginalFunctionName(position) {
|
|
585
|
-
this.#
|
|
609
|
+
this.#ensureSourceMapProcessed();
|
|
586
610
|
return this.#scopesInfo?.findOriginalFunctionName(position) ?? null;
|
|
587
611
|
}
|
|
612
|
+
findOriginalFunctionScope(position) {
|
|
613
|
+
this.#ensureSourceMapProcessed();
|
|
614
|
+
return this.#scopesInfo?.findOriginalFunctionScope(position) ?? null;
|
|
615
|
+
}
|
|
616
|
+
isOutlinedFrame(generatedLine, generatedColumn) {
|
|
617
|
+
this.#ensureSourceMapProcessed();
|
|
618
|
+
return this.#scopesInfo?.isOutlinedFrame(generatedLine, generatedColumn) ?? false;
|
|
619
|
+
}
|
|
620
|
+
hasInlinedFrames(generatedLine, generatedColumn) {
|
|
621
|
+
this.#ensureSourceMapProcessed();
|
|
622
|
+
return this.#scopesInfo?.hasInlinedFrames(generatedLine, generatedColumn) ?? false;
|
|
623
|
+
}
|
|
624
|
+
translateCallSite(generatedLine, generatedColumn) {
|
|
625
|
+
this.#ensureSourceMapProcessed();
|
|
626
|
+
return this.#scopesInfo?.translateCallSite(generatedLine, generatedColumn) ?? [];
|
|
627
|
+
}
|
|
588
628
|
}
|
|
589
629
|
_a = SourceMap;
|
|
590
630
|
const VLQ_BASE_SHIFT = 5;
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
export class SourceMapCache {
|
|
6
6
|
static #INSTANCE = new SourceMapCache('devtools-source-map-cache');
|
|
7
7
|
static instance() {
|
|
8
|
+
if (typeof window === 'undefined') {
|
|
9
|
+
// TODO(crbug.com/451502260): Move this behind a `HostRuntime` interface.
|
|
10
|
+
return IN_MEMORY_INSTANCE; // TS doesn't like that our in-memory class doesn't have the same private fields.
|
|
11
|
+
}
|
|
8
12
|
return this.#INSTANCE;
|
|
9
13
|
}
|
|
10
14
|
static createForTest(name) {
|
|
@@ -39,3 +43,15 @@ export class SourceMapCache {
|
|
|
39
43
|
await window.caches.delete(this.#name);
|
|
40
44
|
}
|
|
41
45
|
}
|
|
46
|
+
const IN_MEMORY_INSTANCE = new (class {
|
|
47
|
+
#cache = new Map();
|
|
48
|
+
async set(debugId, sourceMap) {
|
|
49
|
+
this.#cache.set(debugId, sourceMap);
|
|
50
|
+
}
|
|
51
|
+
async get(debugId) {
|
|
52
|
+
return this.#cache.get(debugId) ?? null;
|
|
53
|
+
}
|
|
54
|
+
async disposeForTest() {
|
|
55
|
+
// Do nothing.
|
|
56
|
+
}
|
|
57
|
+
})();
|
|
@@ -9,13 +9,16 @@ import { SourceMapCache } from './SourceMapCache.js';
|
|
|
9
9
|
import { Type } from './Target.js';
|
|
10
10
|
export class SourceMapManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
11
11
|
#target;
|
|
12
|
+
#factory;
|
|
12
13
|
#isEnabled = true;
|
|
13
14
|
#clientData = new Map();
|
|
14
15
|
#sourceMaps = new Map();
|
|
15
16
|
#attachingClient = null;
|
|
16
|
-
constructor(target) {
|
|
17
|
+
constructor(target, factory) {
|
|
17
18
|
super();
|
|
18
19
|
this.#target = target;
|
|
20
|
+
this.#factory =
|
|
21
|
+
factory ?? ((compiledURL, sourceMappingURL, payload) => new SourceMap(compiledURL, sourceMappingURL, payload));
|
|
19
22
|
}
|
|
20
23
|
setEnabled(isEnabled) {
|
|
21
24
|
if (isEnabled === this.#isEnabled) {
|
|
@@ -86,10 +89,16 @@ export class SourceMapManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
86
89
|
if (this.#attachingClient === client) {
|
|
87
90
|
this.#attachingClient = null;
|
|
88
91
|
const initiator = client.createPageResourceLoadInitiator();
|
|
92
|
+
// TODO(crbug.com/458180550): Pass PageResourceLoader via constructor.
|
|
93
|
+
// The reason we grab it here lazily from the context is that otherwise every
|
|
94
|
+
// unit test using `createTarget` would need to set up a `PageResourceLoader`, as
|
|
95
|
+
// CSSModel and DebuggerModel are autostarted by default, and they create a
|
|
96
|
+
// SourceMapManager in their respective constructors.
|
|
97
|
+
const resourceLoader = this.#target.targetManager().context.get(PageResourceLoader);
|
|
89
98
|
clientData.sourceMapPromise =
|
|
90
|
-
loadSourceMap(sourceMapURL, client.debugId(), initiator)
|
|
99
|
+
loadSourceMap(resourceLoader, sourceMapURL, client.debugId(), initiator)
|
|
91
100
|
.then(payload => {
|
|
92
|
-
const sourceMap =
|
|
101
|
+
const sourceMap = this.#factory(sourceURL, sourceMapURL, payload, client);
|
|
93
102
|
if (this.#clientData.get(client) === clientData) {
|
|
94
103
|
clientData.sourceMap = sourceMap;
|
|
95
104
|
this.#sourceMaps.set(sourceMap, client);
|
|
@@ -148,8 +157,11 @@ export class SourceMapManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
148
157
|
this.dispatchEventToListeners(Events.SourceMapFailedToAttach, { client });
|
|
149
158
|
}
|
|
150
159
|
}
|
|
160
|
+
waitForSourceMapsProcessedForTest() {
|
|
161
|
+
return Promise.all(this.#sourceMaps.keys().map(sourceMap => sourceMap.scopesFallbackPromiseForTest));
|
|
162
|
+
}
|
|
151
163
|
}
|
|
152
|
-
|
|
164
|
+
async function loadSourceMap(resourceLoader, url, debugId, initiator) {
|
|
153
165
|
try {
|
|
154
166
|
if (debugId) {
|
|
155
167
|
const cachedSourceMap = await SourceMapCache.instance().get(debugId);
|
|
@@ -157,7 +169,7 @@ export async function loadSourceMap(url, debugId, initiator) {
|
|
|
157
169
|
return cachedSourceMap;
|
|
158
170
|
}
|
|
159
171
|
}
|
|
160
|
-
const { content } = await
|
|
172
|
+
const { content } = await resourceLoader.loadResource(url, initiator);
|
|
161
173
|
const sourceMap = parseSourceMap(content);
|
|
162
174
|
if ('debugId' in sourceMap && sourceMap.debugId) {
|
|
163
175
|
// In case something goes wrong with updating the cache, we still want to use the source map.
|
|
@@ -169,9 +181,9 @@ export async function loadSourceMap(url, debugId, initiator) {
|
|
|
169
181
|
throw new Error(`Could not load content for ${url}: ${cause.message}`, { cause });
|
|
170
182
|
}
|
|
171
183
|
}
|
|
172
|
-
export async function tryLoadSourceMap(url, initiator) {
|
|
184
|
+
export async function tryLoadSourceMap(resourceLoader, url, initiator) {
|
|
173
185
|
try {
|
|
174
|
-
return await loadSourceMap(url, null, initiator);
|
|
186
|
+
return await loadSourceMap(resourceLoader, url, null, initiator);
|
|
175
187
|
}
|
|
176
188
|
catch (cause) {
|
|
177
189
|
console.error(cause);
|