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
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js
CHANGED
|
@@ -15,7 +15,7 @@ export const UIStrings = {
|
|
|
15
15
|
/**
|
|
16
16
|
* @description Description of an insight that provides details about the LCP metric, and the network requests necessary to load it.
|
|
17
17
|
*/
|
|
18
|
-
description: 'Optimize LCP by making the LCP image
|
|
18
|
+
description: '[Optimize LCP](https://developer.chrome.com/docs/performance/insights/lcp-discovery) by making the LCP image discoverable from the HTML immediately, and avoiding lazy-loading',
|
|
19
19
|
/**
|
|
20
20
|
* @description Text to tell the user how long after the earliest discovery time their LCP element loaded.
|
|
21
21
|
* @example {401ms} PH1
|
|
@@ -61,6 +61,7 @@ function finalize(partialModel) {
|
|
|
61
61
|
strings: UIStrings,
|
|
62
62
|
title: i18nString(UIStrings.title),
|
|
63
63
|
description: i18nString(UIStrings.description),
|
|
64
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/lcp-discovery',
|
|
64
65
|
category: InsightCategory.LCP,
|
|
65
66
|
state: partialModel.lcpRequest && partialModel.checklist &&
|
|
66
67
|
(!partialModel.checklist.eagerlyLoaded.value || !partialModel.checklist.requestDiscoverable.value ||
|
|
@@ -15,7 +15,7 @@ export const UIStrings = {
|
|
|
15
15
|
/**
|
|
16
16
|
* @description Description of an insight that identifies polyfills for modern JavaScript features, and recommends their removal.
|
|
17
17
|
*/
|
|
18
|
-
description: 'Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren\'t necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/articles/baseline-and-polyfills) features, unless you know you must support older browsers. [Learn why most sites can deploy ES6+ code without transpiling](https://
|
|
18
|
+
description: 'Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren\'t necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/articles/baseline-and-polyfills) features, unless you know you must support older browsers. [Learn why most sites can deploy ES6+ code without transpiling](https://developer.chrome.com/docs/performance/insights/legacy-javascript)',
|
|
19
19
|
/** Label for a column in a data table; entries will be the individual JavaScript scripts. */
|
|
20
20
|
columnScript: 'Script',
|
|
21
21
|
/** Label for a column in a data table; entries will be the number of wasted bytes (aka the estimated savings in terms of bytes). */
|
|
@@ -31,6 +31,7 @@ function finalize(partialModel) {
|
|
|
31
31
|
strings: UIStrings,
|
|
32
32
|
title: i18nString(UIStrings.title),
|
|
33
33
|
description: i18nString(UIStrings.description),
|
|
34
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/legacy-javascript',
|
|
34
35
|
category: InsightCategory.ALL,
|
|
35
36
|
state: requests.length ? 'fail' : 'pass',
|
|
36
37
|
relatedEvents: [...new Set(requests)],
|
|
@@ -48,7 +49,8 @@ export function generateInsight(data, context) {
|
|
|
48
49
|
if (script.url?.startsWith('chrome-extension://')) {
|
|
49
50
|
return false;
|
|
50
51
|
}
|
|
51
|
-
return Helpers.Timing.timestampIsInBounds(context.bounds, script.ts)
|
|
52
|
+
return Helpers.Timing.timestampIsInBounds(context.bounds, script.ts) ||
|
|
53
|
+
(script.request && Helpers.Timing.eventIsInBounds(script.request, context.bounds));
|
|
52
54
|
});
|
|
53
55
|
const legacyJavaScriptResults = new Map();
|
|
54
56
|
const wastedBytesByRequestId = new Map();
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js
CHANGED
|
@@ -14,7 +14,7 @@ export const UIStrings = {
|
|
|
14
14
|
/**
|
|
15
15
|
* @description Description of an insight that recommends recommends using HTTP/2 over HTTP/1.1 because of the performance benefits. "HTTP" should not be translated.
|
|
16
16
|
*/
|
|
17
|
-
description: 'HTTP/2 and HTTP/3 offer many benefits over HTTP/1.1, such as multiplexing. [Learn more about using modern HTTP](https://developer.chrome.com/docs/
|
|
17
|
+
description: 'HTTP/2 and HTTP/3 offer many benefits over HTTP/1.1, such as multiplexing. [Learn more about using modern HTTP](https://developer.chrome.com/docs/performance/insights/modern-http).',
|
|
18
18
|
/**
|
|
19
19
|
* @description Column header for a table where each cell represents a network request.
|
|
20
20
|
*/
|
|
@@ -169,6 +169,7 @@ function finalize(partialModel) {
|
|
|
169
169
|
strings: UIStrings,
|
|
170
170
|
title: i18nString(UIStrings.title),
|
|
171
171
|
description: i18nString(UIStrings.description),
|
|
172
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/modern-http',
|
|
172
173
|
category: InsightCategory.LCP,
|
|
173
174
|
state: partialModel.http1Requests.length > 0 ? 'fail' : 'pass',
|
|
174
175
|
...partialModel,
|
|
@@ -15,7 +15,7 @@ export const UIStrings = {
|
|
|
15
15
|
/**
|
|
16
16
|
* @description Description of an insight that recommends avoiding chaining critical requests.
|
|
17
17
|
*/
|
|
18
|
-
description: '[Avoid chaining critical requests](https://developer.chrome.com/docs/
|
|
18
|
+
description: '[Avoid chaining critical requests](https://developer.chrome.com/docs/performance/insights/network-dependency-tree) by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.',
|
|
19
19
|
/**
|
|
20
20
|
* @description Description of the warning that recommends avoiding chaining critical requests.
|
|
21
21
|
*/
|
|
@@ -105,6 +105,7 @@ function finalize(partialModel) {
|
|
|
105
105
|
strings: UIStrings,
|
|
106
106
|
title: i18nString(UIStrings.title),
|
|
107
107
|
description: i18nString(UIStrings.description),
|
|
108
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/network-dependency-tree',
|
|
108
109
|
category: InsightCategory.LCP,
|
|
109
110
|
state: partialModel.fail ? 'fail' : 'pass',
|
|
110
111
|
...partialModel,
|
|
@@ -337,7 +338,7 @@ export function handleLinkResponseHeader(linkHeaderValue) {
|
|
|
337
338
|
}
|
|
338
339
|
return preconnectedOrigins;
|
|
339
340
|
}
|
|
340
|
-
|
|
341
|
+
/** Export the function for test purpose. **/
|
|
341
342
|
export function generatePreconnectedOrigins(data, context, contextRequests, preconnectCandidates) {
|
|
342
343
|
const preconnectedOrigins = [];
|
|
343
344
|
for (const event of data.NetworkRequests.linkPreconnectEvents) {
|
|
@@ -436,7 +437,7 @@ function candidateRequestsByOrigin(data, mainResource, contextRequests, lcpGraph
|
|
|
436
437
|
});
|
|
437
438
|
return origins;
|
|
438
439
|
}
|
|
439
|
-
|
|
440
|
+
/** Export the function for test purpose. **/
|
|
440
441
|
export function generatePreconnectCandidates(data, context, contextRequests) {
|
|
441
442
|
if (!context.lantern) {
|
|
442
443
|
return [];
|
|
@@ -14,7 +14,7 @@ export const UIStrings = {
|
|
|
14
14
|
* @description Text to describe that there are requests blocking rendering, which may affect LCP.
|
|
15
15
|
*/
|
|
16
16
|
description: 'Requests are blocking the page\'s initial render, which may delay LCP. ' +
|
|
17
|
-
'[Deferring or inlining](https://
|
|
17
|
+
'[Deferring or inlining](https://developer.chrome.com/docs/performance/insights/render-blocking) ' +
|
|
18
18
|
'can move these network requests out of the critical path.',
|
|
19
19
|
/**
|
|
20
20
|
* @description Label to describe a network request (that happens to be render-blocking).
|
|
@@ -117,6 +117,7 @@ function finalize(partialModel) {
|
|
|
117
117
|
strings: UIStrings,
|
|
118
118
|
title: i18nString(UIStrings.title),
|
|
119
119
|
description: i18nString(UIStrings.description),
|
|
120
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/render-blocking',
|
|
120
121
|
category: InsightCategory.LCP,
|
|
121
122
|
state: partialModel.renderBlockingRequests.length > 0 ? 'fail' : 'pass',
|
|
122
123
|
...partialModel,
|
|
@@ -14,7 +14,7 @@ export const UIStrings = {
|
|
|
14
14
|
/**
|
|
15
15
|
* @description Text to describe how to improve the performance of CSS selectors.
|
|
16
16
|
*/
|
|
17
|
-
description: 'If Recalculate Style costs remain high, selector optimization can reduce them. [Optimize the selectors](https://developer.chrome.com/docs/
|
|
17
|
+
description: 'If Recalculate Style costs remain high, selector optimization can reduce them. [Optimize the selectors](https://developer.chrome.com/docs/performance/insights/slow-css-selector) with both high elapsed time and high slow-path %. Simpler selectors, fewer selectors, a smaller DOM, and a shallower DOM will all reduce matching costs.',
|
|
18
18
|
/**
|
|
19
19
|
* @description Column name for count of elements that the engine attempted to match against a style rule
|
|
20
20
|
*/
|
|
@@ -82,6 +82,7 @@ function finalize(partialModel) {
|
|
|
82
82
|
strings: UIStrings,
|
|
83
83
|
title: i18nString(UIStrings.title),
|
|
84
84
|
description: i18nString(UIStrings.description),
|
|
85
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/slow-css-selector',
|
|
85
86
|
category: InsightCategory.ALL,
|
|
86
87
|
state: partialModel.topSelectorElapsedMs && partialModel.topSelectorMatchAttempts ? 'informative' : 'pass',
|
|
87
88
|
...partialModel,
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js
CHANGED
|
@@ -14,7 +14,7 @@ export const UIStrings = {
|
|
|
14
14
|
* This is displayed after a user expands the section to see more. No character length limits.
|
|
15
15
|
*/
|
|
16
16
|
description: '3rd party code can significantly impact load performance. ' +
|
|
17
|
-
'[Reduce and defer loading of 3rd party code](https://
|
|
17
|
+
'[Reduce and defer loading of 3rd party code](https://developer.chrome.com/docs/performance/insights/third-parties) to prioritize your page\'s content.',
|
|
18
18
|
/** Label for a table column that displays the name of a third-party provider. */
|
|
19
19
|
columnThirdParty: '3rd party',
|
|
20
20
|
/** Label for a column in a data table; entries will be the download size of a web resource in kilobytes. */
|
|
@@ -43,6 +43,7 @@ function finalize(partialModel) {
|
|
|
43
43
|
strings: UIStrings,
|
|
44
44
|
title: i18nString(UIStrings.title),
|
|
45
45
|
description: i18nString(UIStrings.description),
|
|
46
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/third-parties',
|
|
46
47
|
category: InsightCategory.ALL,
|
|
47
48
|
state: partialModel.entitySummaries.find(summary => summary.entity !== partialModel.firstPartyEntity) ?
|
|
48
49
|
'informative' :
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js
CHANGED
|
@@ -13,7 +13,7 @@ export const UIStrings = {
|
|
|
13
13
|
/**
|
|
14
14
|
* @description Text to tell the user how a viewport meta element can improve performance. \xa0 is a non-breaking space
|
|
15
15
|
*/
|
|
16
|
-
description: 'Tap interactions may be [delayed by up to 300\xA0ms](https://developer.chrome.com/
|
|
16
|
+
description: 'Tap interactions may be [delayed by up to 300\xA0ms](https://developer.chrome.com/docs/performance/insights/viewport) if the viewport is not optimized for mobile.',
|
|
17
17
|
/**
|
|
18
18
|
* @description Text for a label describing the portion of an interaction event that was delayed due to a bad mobile viewport.
|
|
19
19
|
*/
|
|
@@ -27,6 +27,7 @@ function finalize(partialModel) {
|
|
|
27
27
|
strings: UIStrings,
|
|
28
28
|
title: i18nString(UIStrings.title),
|
|
29
29
|
description: i18nString(UIStrings.description),
|
|
30
|
+
docs: 'https://developer.chrome.com/docs/performance/insights/viewport',
|
|
30
31
|
category: InsightCategory.INP,
|
|
31
32
|
state: partialModel.mobileOptimized === false ? 'fail' : 'pass',
|
|
32
33
|
...partialModel,
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js
CHANGED
|
@@ -19,6 +19,7 @@ export function objectIsCallFrame(object) {
|
|
|
19
19
|
('lineNumber' in object && typeof object.lineNumber === 'number') &&
|
|
20
20
|
('url' in object && typeof object.url === 'string');
|
|
21
21
|
}
|
|
22
|
+
export const VALID_PROFILE_SOURCES = ['Inspector', 'SelfProfiling', 'Internal'];
|
|
22
23
|
export function isRunTask(event) {
|
|
23
24
|
return event.name === "RunTask" /* Name.RUN_TASK */ && event.ph === "X" /* Phase.COMPLETE */;
|
|
24
25
|
}
|
|
@@ -349,7 +350,7 @@ export function isResourceWillSendRequest(event) {
|
|
|
349
350
|
export function isResourceReceivedData(event) {
|
|
350
351
|
return event.name === 'ResourceReceivedData';
|
|
351
352
|
}
|
|
352
|
-
|
|
353
|
+
/** Any event where we receive data (and get an encodedDataLength) **/
|
|
353
354
|
export function isReceivedDataEvent(event) {
|
|
354
355
|
return event.name === 'ResourceReceivedData' || event.name === 'ResourceFinish' ||
|
|
355
356
|
event.name === 'ResourceReceiveResponse';
|
|
@@ -547,8 +548,10 @@ export function isFlowPhaseEvent(event) {
|
|
|
547
548
|
export function isParseAuthorStyleSheetEvent(event) {
|
|
548
549
|
return event.name === "ParseAuthorStyleSheet" /* Name.PARSE_AUTHOR_STYLE_SHEET */ && event.ph === "X" /* Phase.COMPLETE */;
|
|
549
550
|
}
|
|
550
|
-
|
|
551
|
-
|
|
551
|
+
/**
|
|
552
|
+
* NOT AN EXHAUSTIVE LIST: just some categories we use and refer
|
|
553
|
+
* to in multiple places.
|
|
554
|
+
**/
|
|
552
555
|
export const Categories = {
|
|
553
556
|
Console: 'blink.console',
|
|
554
557
|
UserTiming: 'blink.user_timing',
|
|
@@ -572,3 +575,6 @@ export function isRundownScriptSourceLarge(event) {
|
|
|
572
575
|
export function isAnyScriptSourceEvent(event) {
|
|
573
576
|
return event.cat === 'disabled-by-default-devtools.v8-source-rundown-sources';
|
|
574
577
|
}
|
|
578
|
+
export function isPreloadRenderBlockingStatusChangeEvent(event) {
|
|
579
|
+
return event.name === "PreloadRenderBlockingStatusChange" /* Name.PRELOAD_RENDER_BLOCKING_STATUS_CHANGE */;
|
|
580
|
+
}
|
|
@@ -13,7 +13,7 @@ export class SourceMappingsUpdated extends Event {
|
|
|
13
13
|
super(SourceMappingsUpdated.eventName, { composed: true, bubbles: true });
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
/** The code location key is created as a concatenation of its fields. **/
|
|
17
17
|
export const resolvedCodeLocationDataNames = new Map();
|
|
18
18
|
export class SourceMapsResolver extends EventTarget {
|
|
19
19
|
executionContextNamesByOrigin = new Map();
|
|
@@ -81,6 +81,29 @@ export class SourceMapsResolver extends EventTarget {
|
|
|
81
81
|
}
|
|
82
82
|
return null;
|
|
83
83
|
}
|
|
84
|
+
static codeLocationForEntry(parsedTrace, entry) {
|
|
85
|
+
const uiLocation = _a.resolvedCodeLocationForEntry(entry)?.devtoolsLocation;
|
|
86
|
+
if (uiLocation) {
|
|
87
|
+
return { url: uiLocation.uiSourceCode.url(), line: uiLocation.lineNumber, column: uiLocation.columnNumber };
|
|
88
|
+
}
|
|
89
|
+
// If no source mapping was found for an entry's URL, then default
|
|
90
|
+
// to the frame contained in the event itself, if any.
|
|
91
|
+
const rawCallFrame = Trace.Helpers.Trace.rawCallFrameForEntry(entry);
|
|
92
|
+
if (rawCallFrame) {
|
|
93
|
+
const line = rawCallFrame.lineNumber >= 0 ? rawCallFrame.lineNumber : undefined;
|
|
94
|
+
const column = rawCallFrame.columnNumber >= 0 ? rawCallFrame.columnNumber : undefined;
|
|
95
|
+
return { url: rawCallFrame.url, line, column };
|
|
96
|
+
}
|
|
97
|
+
// Lastly, look for just a url.
|
|
98
|
+
let url = Trace.Handlers.Helpers.getNonResolvedURL(entry, parsedTrace.data);
|
|
99
|
+
if (url) {
|
|
100
|
+
url = Workspace.Workspace.WorkspaceImpl.instance().uiSourceCodeForURL(url)?.url() ?? url;
|
|
101
|
+
}
|
|
102
|
+
if (url) {
|
|
103
|
+
return { url };
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
84
107
|
static storeResolvedCodeDataForCallFrame(callFrame, resolvedCodeLocationData) {
|
|
85
108
|
const keyForCallFrame = this.keyForCodeLocation(callFrame);
|
|
86
109
|
resolvedCodeLocationDataNames.set(keyForCallFrame, resolvedCodeLocationData);
|
|
@@ -142,7 +165,7 @@ export class SourceMapsResolver extends EventTarget {
|
|
|
142
165
|
for (const node of nodes) {
|
|
143
166
|
const resolvedFunctionName = await SourceMapScopes.NamesResolver.resolveProfileFrameFunctionName(node.callFrame, target);
|
|
144
167
|
updatedMappings ||= Boolean(resolvedFunctionName);
|
|
145
|
-
node.
|
|
168
|
+
node.setOriginalFunctionName(resolvedFunctionName);
|
|
146
169
|
const debuggerModel = target.model(SDK.DebuggerModel.DebuggerModel);
|
|
147
170
|
const script = debuggerModel?.scriptForId(node.scriptId) || null;
|
|
148
171
|
const location = debuggerModel &&
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import * as Common from '../../core/common/common.js';
|
|
5
5
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
6
6
|
import * as Platform from '../../core/platform/platform.js';
|
|
7
|
+
import * as Root from '../../core/root/root.js';
|
|
7
8
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
8
9
|
import { projectTypes } from './WorkspaceImpl.js';
|
|
9
10
|
const UIStrings = {
|
|
@@ -34,45 +35,38 @@ const UIStrings = {
|
|
|
34
35
|
};
|
|
35
36
|
const str_ = i18n.i18n.registerUIStrings('models/workspace/IgnoreListManager.ts', UIStrings);
|
|
36
37
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
37
|
-
let ignoreListManagerInstance;
|
|
38
38
|
export class IgnoreListManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
|
|
39
|
+
#settings;
|
|
40
|
+
#targetManager;
|
|
41
|
+
#listeners = new Set();
|
|
42
|
+
#isIgnoreListedURLCache = new Map();
|
|
43
|
+
#contentScriptExecutionContexts = new Set();
|
|
44
|
+
constructor(settings, targetManager) {
|
|
43
45
|
super();
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
this.#settings = settings;
|
|
47
|
+
this.#targetManager = targetManager;
|
|
48
|
+
this.#targetManager.addModelListener(SDK.DebuggerModel.DebuggerModel, SDK.DebuggerModel.Events.GlobalObjectCleared, this.clearCacheIfNeeded.bind(this), this);
|
|
49
|
+
this.#targetManager.addModelListener(SDK.RuntimeModel.RuntimeModel, SDK.RuntimeModel.Events.ExecutionContextCreated, this.onExecutionContextCreated, this, { scoped: true });
|
|
50
|
+
this.#targetManager.addModelListener(SDK.RuntimeModel.RuntimeModel, SDK.RuntimeModel.Events.ExecutionContextDestroyed, this.onExecutionContextDestroyed, this, { scoped: true });
|
|
51
|
+
this.#settings.moduleSetting('skip-stack-frames-pattern').addChangeListener(this.patternChanged.bind(this));
|
|
52
|
+
this.#settings.moduleSetting('skip-content-scripts').addChangeListener(this.patternChanged.bind(this));
|
|
53
|
+
this.#settings.moduleSetting('automatically-ignore-list-known-third-party-scripts')
|
|
49
54
|
.addChangeListener(this.patternChanged.bind(this));
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Common.Settings.Settings.instance()
|
|
54
|
-
.moduleSetting('automatically-ignore-list-known-third-party-scripts')
|
|
55
|
-
.addChangeListener(this.patternChanged.bind(this));
|
|
56
|
-
Common.Settings.Settings.instance()
|
|
57
|
-
.moduleSetting('enable-ignore-listing')
|
|
58
|
-
.addChangeListener(this.patternChanged.bind(this));
|
|
59
|
-
Common.Settings.Settings.instance()
|
|
60
|
-
.moduleSetting('skip-anonymous-scripts')
|
|
61
|
-
.addChangeListener(this.patternChanged.bind(this));
|
|
62
|
-
this.#listeners = new Set();
|
|
63
|
-
this.#isIgnoreListedURLCache = new Map();
|
|
64
|
-
this.#contentScriptExecutionContexts = new Set();
|
|
65
|
-
SDK.TargetManager.TargetManager.instance().observeModels(SDK.DebuggerModel.DebuggerModel, this);
|
|
55
|
+
this.#settings.moduleSetting('enable-ignore-listing').addChangeListener(this.patternChanged.bind(this));
|
|
56
|
+
this.#settings.moduleSetting('skip-anonymous-scripts').addChangeListener(this.patternChanged.bind(this));
|
|
57
|
+
this.#targetManager.observeModels(SDK.DebuggerModel.DebuggerModel, this);
|
|
66
58
|
}
|
|
67
|
-
static instance(opts = {
|
|
59
|
+
static instance(opts = {
|
|
60
|
+
forceNew: null,
|
|
61
|
+
}) {
|
|
68
62
|
const { forceNew } = opts;
|
|
69
|
-
if (
|
|
70
|
-
|
|
63
|
+
if (forceNew) {
|
|
64
|
+
Root.DevToolsContext.globalInstance().set(IgnoreListManager, new IgnoreListManager(opts.settings ?? Common.Settings.Settings.instance(), opts.targetManager ?? SDK.TargetManager.TargetManager.instance()));
|
|
71
65
|
}
|
|
72
|
-
return
|
|
66
|
+
return Root.DevToolsContext.globalInstance().get(IgnoreListManager);
|
|
73
67
|
}
|
|
74
68
|
static removeInstance() {
|
|
75
|
-
|
|
69
|
+
Root.DevToolsContext.globalInstance().delete(IgnoreListManager);
|
|
76
70
|
}
|
|
77
71
|
addChangeListener(listener) {
|
|
78
72
|
this.#listeners.add(listener);
|
|
@@ -99,7 +93,7 @@ export class IgnoreListManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
99
93
|
if (this.isContentScript(event.data)) {
|
|
100
94
|
this.#contentScriptExecutionContexts.add(event.data.uniqueId);
|
|
101
95
|
if (this.skipContentScripts) {
|
|
102
|
-
for (const debuggerModel of
|
|
96
|
+
for (const debuggerModel of this.#targetManager.models(SDK.DebuggerModel.DebuggerModel)) {
|
|
103
97
|
void this.updateIgnoredExecutionContexts(debuggerModel);
|
|
104
98
|
}
|
|
105
99
|
}
|
|
@@ -109,7 +103,7 @@ export class IgnoreListManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
109
103
|
if (this.isContentScript(event.data)) {
|
|
110
104
|
this.#contentScriptExecutionContexts.delete(event.data.uniqueId);
|
|
111
105
|
if (this.skipContentScripts) {
|
|
112
|
-
for (const debuggerModel of
|
|
106
|
+
for (const debuggerModel of this.#targetManager.models(SDK.DebuggerModel.DebuggerModel)) {
|
|
113
107
|
void this.updateIgnoredExecutionContexts(debuggerModel);
|
|
114
108
|
}
|
|
115
109
|
}
|
|
@@ -121,7 +115,7 @@ export class IgnoreListManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
121
115
|
}
|
|
122
116
|
}
|
|
123
117
|
getSkipStackFramesPatternSetting() {
|
|
124
|
-
return
|
|
118
|
+
return this.#settings.moduleSetting('skip-stack-frames-pattern');
|
|
125
119
|
}
|
|
126
120
|
setIgnoreListPatterns(debuggerModel) {
|
|
127
121
|
const regexPatterns = this.enableIgnoreListing ? this.getSkipStackFramesPatternSetting().getAsArray() : [];
|
|
@@ -201,7 +195,7 @@ export class IgnoreListManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
201
195
|
}
|
|
202
196
|
async updateScriptRanges(script, sourceMap) {
|
|
203
197
|
let hasIgnoreListedMappings = false;
|
|
204
|
-
if (!
|
|
198
|
+
if (!this.isUserIgnoreListedURL(script.sourceURL, { isContentScript: script.isContentScript() })) {
|
|
205
199
|
hasIgnoreListedMappings =
|
|
206
200
|
sourceMap?.sourceURLs().some(url => this.isUserIgnoreListedURL(url, { isKnownThirdParty: sourceMap.hasIgnoreListHint(url) })) ??
|
|
207
201
|
false;
|
|
@@ -253,48 +247,47 @@ export class IgnoreListManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
253
247
|
this.unIgnoreListURL(this.uiSourceCodeURL(uiSourceCode), this.getGeneralRulesForUISourceCode(uiSourceCode));
|
|
254
248
|
}
|
|
255
249
|
get enableIgnoreListing() {
|
|
256
|
-
return
|
|
250
|
+
return this.#settings.moduleSetting('enable-ignore-listing').get();
|
|
257
251
|
}
|
|
258
252
|
set enableIgnoreListing(value) {
|
|
259
|
-
|
|
253
|
+
this.#settings.moduleSetting('enable-ignore-listing').set(value);
|
|
260
254
|
}
|
|
261
255
|
get skipContentScripts() {
|
|
262
|
-
return this.enableIgnoreListing &&
|
|
256
|
+
return this.enableIgnoreListing && this.#settings.moduleSetting('skip-content-scripts').get();
|
|
263
257
|
}
|
|
264
258
|
get skipAnonymousScripts() {
|
|
265
|
-
return this.enableIgnoreListing &&
|
|
266
|
-
Common.Settings.Settings.instance().moduleSetting('skip-anonymous-scripts').get();
|
|
259
|
+
return this.enableIgnoreListing && this.#settings.moduleSetting('skip-anonymous-scripts').get();
|
|
267
260
|
}
|
|
268
261
|
get automaticallyIgnoreListKnownThirdPartyScripts() {
|
|
269
262
|
return this.enableIgnoreListing &&
|
|
270
|
-
|
|
263
|
+
this.#settings.moduleSetting('automatically-ignore-list-known-third-party-scripts').get();
|
|
271
264
|
}
|
|
272
265
|
ignoreListContentScripts() {
|
|
273
266
|
if (!this.enableIgnoreListing) {
|
|
274
267
|
this.enableIgnoreListing = true;
|
|
275
268
|
}
|
|
276
|
-
|
|
269
|
+
this.#settings.moduleSetting('skip-content-scripts').set(true);
|
|
277
270
|
}
|
|
278
271
|
unIgnoreListContentScripts() {
|
|
279
|
-
|
|
272
|
+
this.#settings.moduleSetting('skip-content-scripts').set(false);
|
|
280
273
|
}
|
|
281
274
|
ignoreListAnonymousScripts() {
|
|
282
275
|
if (!this.enableIgnoreListing) {
|
|
283
276
|
this.enableIgnoreListing = true;
|
|
284
277
|
}
|
|
285
|
-
|
|
278
|
+
this.#settings.moduleSetting('skip-anonymous-scripts').set(true);
|
|
286
279
|
}
|
|
287
280
|
unIgnoreListAnonymousScripts() {
|
|
288
|
-
|
|
281
|
+
this.#settings.moduleSetting('skip-anonymous-scripts').set(false);
|
|
289
282
|
}
|
|
290
283
|
ignoreListThirdParty() {
|
|
291
284
|
if (!this.enableIgnoreListing) {
|
|
292
285
|
this.enableIgnoreListing = true;
|
|
293
286
|
}
|
|
294
|
-
|
|
287
|
+
this.#settings.moduleSetting('automatically-ignore-list-known-third-party-scripts').set(true);
|
|
295
288
|
}
|
|
296
289
|
unIgnoreListThirdParty() {
|
|
297
|
-
|
|
290
|
+
this.#settings.moduleSetting('automatically-ignore-list-known-third-party-scripts').set(false);
|
|
298
291
|
}
|
|
299
292
|
ignoreListURL(url) {
|
|
300
293
|
const regexValue = this.urlToRegExpString(url);
|
|
@@ -372,7 +365,7 @@ export class IgnoreListManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
372
365
|
async patternChanged() {
|
|
373
366
|
this.#isIgnoreListedURLCache.clear();
|
|
374
367
|
const promises = [];
|
|
375
|
-
for (const debuggerModel of
|
|
368
|
+
for (const debuggerModel of this.#targetManager.models(SDK.DebuggerModel.DebuggerModel)) {
|
|
376
369
|
promises.push(this.setIgnoreListPatterns(debuggerModel));
|
|
377
370
|
const sourceMapManager = debuggerModel.sourceMapManager();
|
|
378
371
|
for (const script of debuggerModel.scripts()) {
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js
CHANGED
|
@@ -515,6 +515,19 @@ export class UILocationRange {
|
|
|
515
515
|
this.range = range;
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
|
+
/**
|
|
519
|
+
* A text range inside a specific {@link UISourceCode}, representing a function.
|
|
520
|
+
*/
|
|
521
|
+
export class UIFunctionBounds {
|
|
522
|
+
uiSourceCode;
|
|
523
|
+
range;
|
|
524
|
+
name;
|
|
525
|
+
constructor(uiSourceCode, range, name) {
|
|
526
|
+
this.uiSourceCode = uiSourceCode;
|
|
527
|
+
this.range = range;
|
|
528
|
+
this.name = name;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
518
531
|
/**
|
|
519
532
|
* A message associated with a range in a `UISourceCode`. The range will be
|
|
520
533
|
* underlined starting at the range's start and ending at the line end (the
|
|
@@ -561,3 +574,28 @@ export class UISourceCodeMetadata {
|
|
|
561
574
|
this.contentSize = contentSize;
|
|
562
575
|
}
|
|
563
576
|
}
|
|
577
|
+
/**
|
|
578
|
+
* Converts an existing LineColumnProfileMap to a new one using the provided mapping.
|
|
579
|
+
*
|
|
580
|
+
* The input and output line/column of originalToMappedLocation is 0-indexed.
|
|
581
|
+
*/
|
|
582
|
+
export function createMappedProfileData(profileData, originalToMappedLocation) {
|
|
583
|
+
const mappedProfileData = new Map();
|
|
584
|
+
for (const [lineNumber, columnData] of profileData) {
|
|
585
|
+
for (const [columnNumber, data] of columnData) {
|
|
586
|
+
const mappedLocation = originalToMappedLocation(lineNumber - 1, columnNumber - 1);
|
|
587
|
+
if (!mappedLocation) {
|
|
588
|
+
continue;
|
|
589
|
+
}
|
|
590
|
+
const oneBasedFormattedLineNumber = mappedLocation[0] + 1;
|
|
591
|
+
const oneBasedFormattedColumnNumber = mappedLocation[1] + 1;
|
|
592
|
+
let mappedColumnData = mappedProfileData.get(oneBasedFormattedLineNumber);
|
|
593
|
+
if (!mappedColumnData) {
|
|
594
|
+
mappedColumnData = new Map();
|
|
595
|
+
mappedProfileData.set(oneBasedFormattedLineNumber, mappedColumnData);
|
|
596
|
+
}
|
|
597
|
+
mappedColumnData.set(oneBasedFormattedColumnNumber, (mappedColumnData.get(oneBasedFormattedColumnNumber) || 0) + data);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
return mappedProfileData;
|
|
601
|
+
}
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
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
4
|
import * as Common from '../../core/common/common.js';
|
|
5
|
+
import * as Root from '../../core/root/root.js';
|
|
5
6
|
import { UISourceCode } from './UISourceCode.js';
|
|
6
7
|
/* eslint-disable @typescript-eslint/naming-convention -- Used by web_tests. */
|
|
7
8
|
export var projectTypes;
|
|
@@ -92,22 +93,18 @@ export class ProjectStore {
|
|
|
92
93
|
indexContent(_progress) {
|
|
93
94
|
}
|
|
94
95
|
}
|
|
95
|
-
let workspaceInstance;
|
|
96
96
|
export class WorkspaceImpl extends Common.ObjectWrapper.ObjectWrapper {
|
|
97
97
|
#projects = new Map();
|
|
98
98
|
#hasResourceContentTrackingExtensions = false;
|
|
99
|
-
constructor() {
|
|
100
|
-
super();
|
|
101
|
-
}
|
|
102
99
|
static instance(opts = { forceNew: null }) {
|
|
103
100
|
const { forceNew } = opts;
|
|
104
|
-
if (!
|
|
105
|
-
|
|
101
|
+
if (!Root.DevToolsContext.globalInstance().has(WorkspaceImpl) || forceNew) {
|
|
102
|
+
Root.DevToolsContext.globalInstance().set(WorkspaceImpl, new WorkspaceImpl());
|
|
106
103
|
}
|
|
107
|
-
return
|
|
104
|
+
return Root.DevToolsContext.globalInstance().get(WorkspaceImpl);
|
|
108
105
|
}
|
|
109
106
|
static removeInstance() {
|
|
110
|
-
|
|
107
|
+
Root.DevToolsContext.globalInstance().delete(WorkspaceImpl);
|
|
111
108
|
}
|
|
112
109
|
uiSourceCode(projectId, url) {
|
|
113
110
|
const project = this.#projects.get(projectId);
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
import * as Common from '../../core/common/common.js';
|
|
5
|
+
Common.Settings.registerSettingExtension({
|
|
6
|
+
storageType: "Synced" /* Common.Settings.SettingStorageType.SYNCED */,
|
|
7
|
+
settingName: 'skip-stack-frames-pattern',
|
|
8
|
+
settingType: "regex" /* Common.Settings.SettingType.REGEX */,
|
|
9
|
+
defaultValue: '/node_modules/|^node:',
|
|
10
|
+
});
|
|
11
|
+
Common.Settings.registerSettingExtension({
|
|
12
|
+
storageType: "Synced" /* Common.Settings.SettingStorageType.SYNCED */,
|
|
13
|
+
settingName: 'skip-content-scripts',
|
|
14
|
+
settingType: "boolean" /* Common.Settings.SettingType.BOOLEAN */,
|
|
15
|
+
defaultValue: true,
|
|
16
|
+
});
|
|
17
|
+
Common.Settings.registerSettingExtension({
|
|
18
|
+
storageType: "Synced" /* Common.Settings.SettingStorageType.SYNCED */,
|
|
19
|
+
settingName: 'automatically-ignore-list-known-third-party-scripts',
|
|
20
|
+
settingType: "boolean" /* Common.Settings.SettingType.BOOLEAN */,
|
|
21
|
+
defaultValue: true,
|
|
22
|
+
});
|
|
23
|
+
Common.Settings.registerSettingExtension({
|
|
24
|
+
storageType: "Synced" /* Common.Settings.SettingStorageType.SYNCED */,
|
|
25
|
+
settingName: 'skip-anonymous-scripts',
|
|
26
|
+
settingType: "boolean" /* Common.Settings.SettingType.BOOLEAN */,
|
|
27
|
+
defaultValue: false,
|
|
28
|
+
});
|
|
29
|
+
Common.Settings.registerSettingExtension({
|
|
30
|
+
storageType: "Synced" /* Common.Settings.SettingStorageType.SYNCED */,
|
|
31
|
+
settingName: 'enable-ignore-listing',
|
|
32
|
+
settingType: "boolean" /* Common.Settings.SettingType.BOOLEAN */,
|
|
33
|
+
defaultValue: true,
|
|
34
|
+
});
|
package/build/src/McpContext.js
CHANGED
|
@@ -65,7 +65,14 @@ export class McpContext {
|
|
|
65
65
|
collect(event);
|
|
66
66
|
});
|
|
67
67
|
page.on('pageerror', event => {
|
|
68
|
-
|
|
68
|
+
if (event instanceof Error) {
|
|
69
|
+
collect(event);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const error = new Error(`${event}`);
|
|
73
|
+
error.stack = undefined;
|
|
74
|
+
collect(error);
|
|
75
|
+
}
|
|
69
76
|
});
|
|
70
77
|
});
|
|
71
78
|
}
|
|
@@ -24,7 +24,6 @@ function getDefaultBookmarks() {
|
|
|
24
24
|
'docs': 'https://developer.chrome.com/docs/extensions/',
|
|
25
25
|
'localhost': 'http://localhost:3000',
|
|
26
26
|
'localhost8080': 'http://localhost:8080',
|
|
27
|
-
'suno': 'https://suno.com/create',
|
|
28
27
|
'chatgpt': CHATGPT_CONFIG.DEFAULT_URL
|
|
29
28
|
};
|
|
30
29
|
}
|