chrome-devtools-frontend 1.0.1602348 → 1.0.1603822
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/.agents/skills/version-control/SKILL.md +17 -2
- package/AUTHORS +1 -0
- package/front_end/core/common/Settings.ts +1 -871
- package/front_end/core/common/VersionController.ts +880 -0
- package/front_end/core/common/common.ts +2 -0
- package/front_end/core/platform/HostRuntime.ts +9 -3
- package/front_end/core/protocol_client/InspectorBackend.ts +8 -0
- package/front_end/core/root/Runtime.ts +5 -0
- package/front_end/core/sdk/OverlayModel.ts +13 -13
- package/front_end/core/sdk/OverlayPersistentHighlighter.ts +13 -10
- package/front_end/core/sdk/RuntimeModel.ts +5 -5
- package/front_end/core/sdk/ServiceWorkerManager.ts +4 -2
- package/front_end/core/sdk/Target.ts +5 -0
- package/front_end/core/sdk/TargetManager.ts +5 -0
- package/front_end/core/sdk/WebMCPModel.ts +104 -0
- package/front_end/core/sdk/sdk.ts +2 -0
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +13 -19
- package/front_end/generated/InspectorBackendCommands.ts +3 -0
- package/front_end/generated/protocol-mapping.d.ts +8 -0
- package/front_end/generated/protocol-proxy-api.d.ts +10 -0
- package/front_end/generated/protocol.ts +57 -0
- package/front_end/models/ai_assistance/AiConversation.ts +3 -3
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +50 -0
- package/front_end/models/ai_assistance/agents/AiAgent.ts +14 -1
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +19 -4
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +7 -1
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +30 -7
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +0 -23
- package/front_end/models/ai_assistance/data_formatters/LighthouseFormatter.snapshot.txt +60 -9
- package/front_end/models/ai_assistance/data_formatters/LighthouseFormatter.ts +71 -15
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +7 -7
- package/front_end/models/javascript_metadata/NativeFunctions.js +6 -2
- package/front_end/models/lighthouse/LighthouseReporterTypes.ts +10 -8
- package/front_end/models/lighthouse/RunTypes.ts +3 -1
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +13 -5
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +143 -18
- package/front_end/panels/ai_assistance/components/WalkthroughView.ts +30 -10
- package/front_end/panels/ai_assistance/components/chatMessage.css +58 -3
- package/front_end/panels/ai_assistance/components/walkthroughView.css +35 -5
- package/front_end/panels/application/AppManifestView.ts +2 -2
- package/front_end/panels/application/BackgroundServiceView.ts +9 -9
- package/front_end/panels/application/FrameDetailsView.ts +4 -13
- package/front_end/panels/application/IndexedDBViews.ts +1 -1
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +3 -3
- package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -1
- package/front_end/panels/application/components/permissionsPolicySection.css +54 -52
- package/front_end/panels/application/frameDetailsReportView.css +13 -1
- package/front_end/panels/common/ThrottlingUtils.ts +46 -0
- package/front_end/panels/common/common.ts +1 -0
- package/front_end/panels/elements/CSSValueTraceView.ts +9 -1
- package/front_end/panels/elements/ComputedStyleWidget.ts +11 -1
- package/front_end/panels/elements/PropertiesWidget.ts +14 -13
- package/front_end/panels/elements/PropertyRenderer.ts +10 -9
- package/front_end/panels/elements/StandaloneStylesContainer.ts +15 -5
- package/front_end/panels/elements/StylePropertiesSection.ts +0 -49
- package/front_end/panels/elements/StylePropertyTreeElement.ts +20 -0
- package/front_end/panels/elements/StylesContainer.ts +0 -1
- package/front_end/panels/elements/StylesSidebarPane.ts +65 -31
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +5 -0
- package/front_end/panels/issues/AffectedSelectivePermissionsInterventionView.ts +2 -2
- package/front_end/panels/lighthouse/LighthouseController.ts +4 -1
- package/front_end/panels/media/EventDisplayTable.ts +3 -2
- package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +14 -0
- package/front_end/panels/network/EventSourceMessagesView.ts +2 -2
- package/front_end/panels/network/ResourceChunkView.ts +1 -1
- package/front_end/panels/profiler/HeapDetachedElementsView.ts +9 -4
- package/front_end/panels/profiler/HeapProfileView.ts +8 -4
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +40 -33
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +1 -1
- package/front_end/panels/profiler/HeapSnapshotProxy.ts +1 -1
- package/front_end/panels/profiler/HeapSnapshotView.ts +12 -18
- package/front_end/panels/profiler/LiveHeapProfileView.ts +3 -4
- package/front_end/panels/profiler/ProfileHeader.ts +5 -11
- package/front_end/panels/profiler/ProfileView.ts +1 -10
- package/front_end/panels/sensors/SensorsView.ts +24 -43
- package/front_end/panels/settings/keybindsSettingsTab.css +25 -31
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +2 -2
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +8 -0
- package/front_end/panels/timeline/TimelinePanel.ts +14 -2
- package/front_end/panels/timeline/TimelineTreeView.ts +19 -17
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +5 -9
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -2
- package/front_end/panels/timeline/components/OriginMap.ts +176 -159
- package/front_end/panels/timeline/components/originMap.css +4 -51
- package/front_end/panels/timeline/components/timelineRangeSummaryView.css +3 -1
- package/front_end/panels/timeline/thirdPartyTreeView.css +6 -0
- package/front_end/panels/timeline/timeline-meta.ts +11 -0
- package/front_end/panels/timeline/utils/Helpers.ts +5 -25
- package/front_end/panels/webauthn/WebauthnPane.ts +52 -0
- package/front_end/third_party/acorn/README.chromium +1 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/{list → lists}/List.ts +1 -1
- package/front_end/ui/components/{list → lists}/list.css +0 -1
- package/front_end/ui/legacy/Treeoutline.ts +7 -3
- package/front_end/ui/legacy/UIUtils.ts +13 -11
- package/front_end/ui/legacy/Widget.ts +5 -0
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +3 -3
- package/front_end/ui/legacy/components/data_grid/SortableDataGrid.ts +2 -2
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +39 -23
- package/front_end/ui/legacy/components/perf_ui/GCActionDelegate.ts +20 -4
- package/front_end/ui/legacy/treeoutline.css +4 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
- package/package.json +1 -1
- /package/front_end/ui/components/{list → lists}/lists.ts +0 -0
|
@@ -11,6 +11,7 @@ import {LighthouseFormatter} from '../data_formatters/LighthouseFormatter.js';
|
|
|
11
11
|
import {debugLog} from '../debug.js';
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
|
+
type AgentOptions,
|
|
14
15
|
AiAgent,
|
|
15
16
|
type ContextDetail,
|
|
16
17
|
type ContextResponse,
|
|
@@ -41,6 +42,7 @@ Your role is to help users understand and fix accessibility issues found in Ligh
|
|
|
41
42
|
|
|
42
43
|
# Capabilities
|
|
43
44
|
* \`getLighthouseAudits\`: Get detailed audit data.
|
|
45
|
+
* \`runAccessibilityAudits\`: Trigger new accessibility snapshot audits.
|
|
44
46
|
* \`getStyles\`: Get computed styles for an element by its path.
|
|
45
47
|
* \`getElementAccessibilityDetails\`: Get A11y properties for an element by its path.
|
|
46
48
|
|
|
@@ -81,6 +83,13 @@ export class AccessibilityContext extends ConversationContext<LHModel.ReporterTy
|
|
|
81
83
|
export class AccessibilityAgent extends AiAgent<LHModel.ReporterTypes.ReportJSON> {
|
|
82
84
|
readonly preamble = preamble;
|
|
83
85
|
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_ACCESSIBILITY_AGENT;
|
|
86
|
+
readonly #lighthouseRecording?:
|
|
87
|
+
(overrides?: LHModel.RunTypes.RunOverrides) => Promise<LHModel.ReporterTypes.ReportJSON|null>;
|
|
88
|
+
|
|
89
|
+
constructor(opts: AgentOptions) {
|
|
90
|
+
super(opts);
|
|
91
|
+
this.#lighthouseRecording = opts.lighthouseRecording;
|
|
92
|
+
}
|
|
84
93
|
|
|
85
94
|
get userTier(): string|undefined {
|
|
86
95
|
return Root.Runtime.hostConfig.devToolsFreestyler?.userTier;
|
|
@@ -127,6 +136,47 @@ export class AccessibilityAgent extends AiAgent<LHModel.ReporterTypes.ReportJSON
|
|
|
127
136
|
}
|
|
128
137
|
|
|
129
138
|
#declareFunctions(): void {
|
|
139
|
+
this.declareFunction<{explanation: string}, {audits: string}>('runAccessibilityAudits', {
|
|
140
|
+
description:
|
|
141
|
+
'Triggers new Lighthouse accessibility audits in snapshot mode. Use this if the user has made changes to the page and you want to re-evaluate the accessibility audits.',
|
|
142
|
+
parameters: {
|
|
143
|
+
type: Host.AidaClient.ParametersTypes.OBJECT,
|
|
144
|
+
description: '',
|
|
145
|
+
nullable: false,
|
|
146
|
+
properties: {
|
|
147
|
+
explanation: {
|
|
148
|
+
type: Host.AidaClient.ParametersTypes.STRING,
|
|
149
|
+
description: 'Explain why you want to run new audits.',
|
|
150
|
+
nullable: false,
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
required: ['explanation'],
|
|
154
|
+
},
|
|
155
|
+
displayInfoFromArgs: params => {
|
|
156
|
+
return {
|
|
157
|
+
title: i18n.i18n.lockedString('Running accessibility audits…'),
|
|
158
|
+
thought: params.explanation,
|
|
159
|
+
action: 'runAccessibilityAudits()'
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
handler: async params => {
|
|
163
|
+
debugLog('Function call: runAccessibilityAudits', params);
|
|
164
|
+
if (!this.#lighthouseRecording) {
|
|
165
|
+
return {error: 'Lighthouse recording is not available.'};
|
|
166
|
+
}
|
|
167
|
+
const report = await this.#lighthouseRecording({
|
|
168
|
+
mode: 'snapshot',
|
|
169
|
+
categoryIds: ['accessibility'],
|
|
170
|
+
isAIControlled: true,
|
|
171
|
+
});
|
|
172
|
+
if (!report) {
|
|
173
|
+
return {error: 'Failed to run accessibility audits.'};
|
|
174
|
+
}
|
|
175
|
+
const audits = new LighthouseFormatter().audits(report, 'accessibility');
|
|
176
|
+
return {result: {audits}};
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
|
|
130
180
|
this.declareFunction<{categoryId: LHModel.RunTypes.CategoryId}, {audits: string}>('getLighthouseAudits', {
|
|
131
181
|
description:
|
|
132
182
|
'Returns the audits for a specific Lighthouse category. Use this to get more information about the performance, accessibility, best-practices, or seo audits.',
|
|
@@ -7,6 +7,7 @@ import * as Root from '../../../core/root/root.js';
|
|
|
7
7
|
import type * as SDK from '../../../core/sdk/sdk.js';
|
|
8
8
|
import type * as Protocol from '../../../generated/protocol.js';
|
|
9
9
|
import * as Greendev from '../../greendev/greendev.js';
|
|
10
|
+
import type * as LHModel from '../../lighthouse/lighthouse.js';
|
|
10
11
|
import type * as Trace from '../../trace/trace.js';
|
|
11
12
|
import {debugLog, isStructuredLogEnabled} from '../debug.js';
|
|
12
13
|
|
|
@@ -151,6 +152,7 @@ export interface AgentOptions {
|
|
|
151
152
|
onInspectElement?: () => Promise<SDK.DOMModel.DOMNode|null>;
|
|
152
153
|
history?: Host.AidaClient.Content[];
|
|
153
154
|
allowedOrigin?: () => string | undefined;
|
|
155
|
+
lighthouseRecording?: (overrides?: LHModel.RunTypes.RunOverrides) => Promise<LHModel.ReporterTypes.ReportJSON|null>;
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
export interface ParsedAnswer {
|
|
@@ -277,9 +279,20 @@ export interface LcpBreakdownAiWidget {
|
|
|
277
279
|
};
|
|
278
280
|
}
|
|
279
281
|
|
|
282
|
+
export interface TimelineRangeSummaryAiWidget {
|
|
283
|
+
name: 'TIMELINE_RANGE_SUMMARY';
|
|
284
|
+
data: {
|
|
285
|
+
bounds: Trace.Types.Timing.TraceWindowMicro,
|
|
286
|
+
parsedTrace: Trace.TraceModel.ParsedTrace,
|
|
287
|
+
// We can use this component for other tracks summaries later, so
|
|
288
|
+
// we include the track in the data.
|
|
289
|
+
track: 'main',
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
|
|
280
293
|
// This type will grow as we add more widgets.
|
|
281
294
|
export type AiWidget = ComputedStyleAiWidget|CoreVitalsAiWidget|StylePropertiesAiWidget|DomTreeAiWidget|
|
|
282
|
-
PerformanceTraceAiWidget|LcpBreakdownAiWidget;
|
|
295
|
+
PerformanceTraceAiWidget|LcpBreakdownAiWidget|TimelineRangeSummaryAiWidget;
|
|
283
296
|
|
|
284
297
|
export type FunctionCallHandlerResult<Result> = {
|
|
285
298
|
requiresApproval: true,
|
|
@@ -82,14 +82,14 @@ export class ContextSelectionAgent extends AiAgent<never> {
|
|
|
82
82
|
readonly #performanceRecordAndReload?: () => Promise<Trace.TraceModel.ParsedTrace>;
|
|
83
83
|
readonly #onInspectElement?: () => Promise<SDK.DOMModel.DOMNode|null>;
|
|
84
84
|
readonly #networkTimeCalculator?: NetworkTimeCalculator.NetworkTransferTimeCalculator;
|
|
85
|
-
readonly #lighthouseRecording?:
|
|
85
|
+
readonly #lighthouseRecording?:
|
|
86
|
+
(overrides?: LHModel.RunTypes.RunOverrides) => Promise<LHModel.ReporterTypes.ReportJSON|null>;
|
|
86
87
|
#allowedOrigin: () => string | undefined;
|
|
87
88
|
|
|
88
89
|
constructor(opts: AgentOptions&{
|
|
89
90
|
performanceRecordAndReload?: () => Promise<Trace.TraceModel.ParsedTrace>,
|
|
90
91
|
onInspectElement?: () => Promise<SDK.DOMModel.DOMNode|null>,
|
|
91
92
|
networkTimeCalculator?: NetworkTimeCalculator.NetworkTransferTimeCalculator,
|
|
92
|
-
lighthouseRecording?: () => Promise<LHModel.ReporterTypes.ReportJSON|null>,
|
|
93
93
|
}) {
|
|
94
94
|
super(opts);
|
|
95
95
|
this.#performanceRecordAndReload = opts.performanceRecordAndReload;
|
|
@@ -119,7 +119,16 @@ export class ContextSelectionAgent extends AiAgent<never> {
|
|
|
119
119
|
|
|
120
120
|
let hasCrossOriginRequest = false;
|
|
121
121
|
for (const request of Logs.NetworkLog.NetworkLog.instance().requests()) {
|
|
122
|
-
|
|
122
|
+
const requestOrigin = new URL(request.documentURL).origin;
|
|
123
|
+
/**
|
|
124
|
+
* NOTE: this origin check does not ensure that all the requests are
|
|
125
|
+
* from the same origin as the target page. Instead, it ensures that
|
|
126
|
+
* the document that loaded the request is the same as the target
|
|
127
|
+
* page. This ensures that we limit the scope to all requests fetched
|
|
128
|
+
* during the loading of the target page, and do not leak URLs from
|
|
129
|
+
* other pages.
|
|
130
|
+
*/
|
|
131
|
+
if (origin && requestOrigin !== origin) {
|
|
123
132
|
hasCrossOriginRequest = true;
|
|
124
133
|
continue;
|
|
125
134
|
}
|
|
@@ -170,8 +179,14 @@ export class ContextSelectionAgent extends AiAgent<never> {
|
|
|
170
179
|
};
|
|
171
180
|
},
|
|
172
181
|
handler: async ({id}) => {
|
|
182
|
+
const origin = this.#allowedOrigin();
|
|
173
183
|
const request = Logs.NetworkLog.NetworkLog.instance().requests().find(req => {
|
|
174
|
-
|
|
184
|
+
if (req.requestId() !== id) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const requestOrigin = new URL(req.documentURL).origin;
|
|
189
|
+
return !origin || requestOrigin === origin;
|
|
175
190
|
});
|
|
176
191
|
|
|
177
192
|
if (request) {
|
|
@@ -95,8 +95,14 @@ export class RequestContext extends ConversationContext<SDK.NetworkRequest.Netwo
|
|
|
95
95
|
this.#calculator = calculator;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Note: this is not the literal origin of the network request. This origin
|
|
100
|
+
* is used to determine when we should force the user to start a new AI
|
|
101
|
+
* conversation when the context changes. We allow a single AI conversation to
|
|
102
|
+
* inspect all network requests that were made for that given target URL.
|
|
103
|
+
*/
|
|
98
104
|
override getOrigin(): string {
|
|
99
|
-
return
|
|
105
|
+
return this.#request.documentURL;
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
override getItem(): SDK.NetworkRequest.NetworkRequest {
|
|
@@ -82,9 +82,9 @@ Your primary goal is to provide actionable advice to web developers about their
|
|
|
82
82
|
|
|
83
83
|
You will be provided a summary of a trace: some performance metrics; the most critical network requests; a bottom-up call graph summary; and a brief overview of available insights. Each insight has information about potential performance issues with the page.
|
|
84
84
|
|
|
85
|
-
Don't mention anything about an insight without first getting more data about it by calling \`getInsightDetails\`.
|
|
85
|
+
Don't mention anything about an insight or the actual LCP element without first getting more data about it by calling \`getInsightDetails\`.
|
|
86
86
|
|
|
87
|
-
You have
|
|
87
|
+
You have functions available to learn more about the trace. Use these to confirm hypotheses, or to further explore the trace when diagnosing performance issues.
|
|
88
88
|
|
|
89
89
|
${annotationsEnabled ? greenDevAdditionalAnnotationsFunction : ''}
|
|
90
90
|
|
|
@@ -106,14 +106,15 @@ Note: if the user asks a specific question about the trace (such as "What is my
|
|
|
106
106
|
### Step 1: Determine a performance problem to investigate
|
|
107
107
|
|
|
108
108
|
- With help from the user, determine what performance problem to focus on.
|
|
109
|
-
- If the user is not specific about what problem to investigate, help them by doing a
|
|
109
|
+
- If the user is not specific about what problem to investigate, help them by doing a investigation yourself. Present to the user options with 1-sentence summaries. Mention what performance metrics each option impacts. Call as many functions and confirm the data thoroughly: never present an option without being certain it is a real performance issue. Don't suggest solutions yet.
|
|
110
110
|
- Rank the options from most impactful to least impactful, and present them to the user in that order.
|
|
111
|
-
- Don't present more than
|
|
111
|
+
- Don't present more than 2 options.
|
|
112
112
|
- Once a performance problem has been identified for investigation, move on to step 2.
|
|
113
113
|
|
|
114
114
|
### Step 2: Suggest solutions
|
|
115
115
|
|
|
116
|
-
- Suggest
|
|
116
|
+
- Suggest solutions to remedy the identified performance problem. Be as specific as possible, using data from the trace via the provided functions to back up everything you say. You should prefer specific solutions, but absent any specific solution you may suggest general solutions (such as from an insight's documentation links).
|
|
117
|
+
- If you are unsure, be honest and present information that can be helpful for further investigation.
|
|
117
118
|
- A good first step to discover solutions is to consider the insights, but you should also validate all potential advice by analyzing the trace until you are confident about the root cause of a performance issue.
|
|
118
119
|
|
|
119
120
|
## Guidelines
|
|
@@ -145,6 +146,16 @@ Adhere to the following critical requirements:
|
|
|
145
146
|
- Do not mention that you are an AI, or refer to yourself in the third person. You are simulating a performance expert.
|
|
146
147
|
- If asked about sensitive topics (religion, race, politics, sexuality, gender, etc.), respond with: "My expertise is limited to website performance analysis. I cannot provide information on that topic.".
|
|
147
148
|
- Do not provide answers on non-web-development topics, such as legal, financial, medical, or personal advice.
|
|
149
|
+
- Use the precision of Strunk & White, the brevity of Hemingway, and the simple clarity of Vonnegut. Don't add repeated information, and keep the whole answer short.
|
|
150
|
+
|
|
151
|
+
## Response Structure
|
|
152
|
+
|
|
153
|
+
- If available, point out the root cause of the problem. It may be a bullet point list.
|
|
154
|
+
- Example: "**Root Cause**: The page is slow because of [reason]."
|
|
155
|
+
- if applicable, list actionable solution suggestion(s) in order of impact:
|
|
156
|
+
- Example: "**Suggestions**:
|
|
157
|
+
- [Suggestion 1]
|
|
158
|
+
- [Suggestion 2]
|
|
148
159
|
`;
|
|
149
160
|
};
|
|
150
161
|
|
|
@@ -942,7 +953,17 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
942
953
|
|
|
943
954
|
const key = `getMainThreadTrackSummary({min: ${bounds.min}, max: ${bounds.max}})`;
|
|
944
955
|
this.#cacheFunctionResult(focus, key, summary);
|
|
945
|
-
return {
|
|
956
|
+
return {
|
|
957
|
+
result: {summary},
|
|
958
|
+
widgets: [{
|
|
959
|
+
name: 'TIMELINE_RANGE_SUMMARY',
|
|
960
|
+
data: {
|
|
961
|
+
parsedTrace,
|
|
962
|
+
bounds,
|
|
963
|
+
track: 'main',
|
|
964
|
+
},
|
|
965
|
+
}],
|
|
966
|
+
};
|
|
946
967
|
},
|
|
947
968
|
|
|
948
969
|
});
|
|
@@ -999,7 +1020,9 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
999
1020
|
|
|
1000
1021
|
const key = `getNetworkTrackSummary({min: ${bounds.min}, max: ${bounds.max}})`;
|
|
1001
1022
|
this.#cacheFunctionResult(focus, key, summary);
|
|
1002
|
-
return {
|
|
1023
|
+
return {
|
|
1024
|
+
result: {summary},
|
|
1025
|
+
};
|
|
1003
1026
|
},
|
|
1004
1027
|
|
|
1005
1028
|
});
|
|
@@ -20,7 +20,6 @@ import {AI_ASSISTANCE_CSS_CLASS_NAME, FREESTYLER_WORLD_NAME} from '../injected.j
|
|
|
20
20
|
import {
|
|
21
21
|
type AgentOptions as BaseAgentOptions,
|
|
22
22
|
AiAgent,
|
|
23
|
-
type AnswerResponse,
|
|
24
23
|
type ComputedStyleAiWidget,
|
|
25
24
|
type ContextResponse,
|
|
26
25
|
ConversationContext,
|
|
@@ -1052,28 +1051,6 @@ const data = {
|
|
|
1052
1051
|
this.#currentTurnId++;
|
|
1053
1052
|
}
|
|
1054
1053
|
|
|
1055
|
-
protected override async finalizeAnswer(answer: AnswerResponse): Promise<AnswerResponse> {
|
|
1056
|
-
if (!Root.Runtime.hostConfig.devToolsAiAssistanceV2?.enabled) {
|
|
1057
|
-
return answer;
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
const changedNodeIds = this.#changes.getChangedNodesForGroupId(this.sessionId, this.#currentTurnId);
|
|
1061
|
-
if (changedNodeIds.length === 0) {
|
|
1062
|
-
return answer;
|
|
1063
|
-
}
|
|
1064
|
-
answer.widgets = [
|
|
1065
|
-
...(answer.widgets ?? []),
|
|
1066
|
-
...changedNodeIds.map(id => ({
|
|
1067
|
-
name: 'STYLE_PROPERTIES' as const,
|
|
1068
|
-
data: {
|
|
1069
|
-
backendNodeId: id,
|
|
1070
|
-
selector: AI_ASSISTANCE_FILTER_REGEX,
|
|
1071
|
-
},
|
|
1072
|
-
})),
|
|
1073
|
-
];
|
|
1074
|
-
return answer;
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
1054
|
override async enhanceQuery(
|
|
1078
1055
|
query: string, selectedElement: ConversationContext<SDK.DOMModel.DOMNode>|null,
|
|
1079
1056
|
multimodalInputType?: MultimodalInputType): Promise<string> {
|
|
@@ -39,9 +39,18 @@ The following audits in this category have a score below 90 and may need attenti
|
|
|
39
39
|
- **Table Audit**: 50
|
|
40
40
|
* Audit with a table
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
- Item:
|
|
43
|
+
* **URL**: https://example.com/script.js
|
|
44
|
+
* **Wasted Bytes**: 1 kB
|
|
45
|
+
* **Node**: div.main
|
|
46
|
+
* **Node path**: 1,HTML,1,BODY,5,DIV
|
|
47
|
+
* **Location**: https://example.com/script.js:10:5
|
|
48
|
+
- Item:
|
|
49
|
+
* **URL**: https://example.com/style.css
|
|
50
|
+
* **Wasted Bytes**: 512 B
|
|
51
|
+
* **Node**: body > p
|
|
52
|
+
* **Node path**: 1,HTML,1,BODY,10,P
|
|
53
|
+
* **Location**: https://example.com/style.css
|
|
45
54
|
=== end content
|
|
46
55
|
|
|
47
56
|
Title: LighthouseFormatter formats opportunity details
|
|
@@ -53,8 +62,9 @@ The following audits in this category have a score below 90 and may need attenti
|
|
|
53
62
|
* Audit with an opportunity
|
|
54
63
|
|
|
55
64
|
Potential savings: 500ms, Potential savings: 2048 bytes
|
|
56
|
-
|
|
57
|
-
|
|
65
|
+
- Item:
|
|
66
|
+
* **URL**: https://example.com/large-script.js
|
|
67
|
+
* **Wasted Bytes**: 2 kB
|
|
58
68
|
=== end content
|
|
59
69
|
|
|
60
70
|
Title: LighthouseFormatter formats table details with summary
|
|
@@ -67,8 +77,8 @@ The following audits in this category have a score below 90 and may need attenti
|
|
|
67
77
|
|
|
68
78
|
Wasted time: 100ms
|
|
69
79
|
Wasted bytes: 512
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
- Item:
|
|
81
|
+
* **Text**: Some detail
|
|
72
82
|
=== end content
|
|
73
83
|
|
|
74
84
|
Title: LighthouseFormatter formats landmark-one-main audit with node explanation
|
|
@@ -79,6 +89,47 @@ The following audits in this category have a score below 90 and may need attenti
|
|
|
79
89
|
- **Document does not have a main landmark.**: 0
|
|
80
90
|
* One main landmark helps screen reader users navigate a web page. [Learn more about landmarks](https://dequeuniversity.com/rules/axe/4.11/landmark-one-main).
|
|
81
91
|
|
|
82
|
-
|
|
83
|
-
|
|
92
|
+
- Item:
|
|
93
|
+
* **Failing Elements**: html
|
|
94
|
+
* **Failing Elements path**: 1,HTML
|
|
95
|
+
* **Failing Elements explanation**: Fix all of the following: Document does not have a main landmark
|
|
96
|
+
=== end content
|
|
97
|
+
|
|
98
|
+
Title: LighthouseFormatter formats table details with subItems
|
|
99
|
+
Content:
|
|
100
|
+
# Audits for Performance
|
|
101
|
+
|
|
102
|
+
The following audits in this category have a score below 90 and may need attention:
|
|
103
|
+
- **SubItems Audit**: 50
|
|
104
|
+
* Audit with subItems
|
|
105
|
+
|
|
106
|
+
- Item:
|
|
107
|
+
* **URL**: https://example.com/script.js
|
|
108
|
+
* Failed to load sourcemap
|
|
109
|
+
* Another error
|
|
110
|
+
* **Map URL**: https://example.com/script.js.map
|
|
111
|
+
=== end content
|
|
112
|
+
|
|
113
|
+
Title: LighthouseFormatter formats image-delivery-insight audit from realistic data
|
|
114
|
+
Content:
|
|
115
|
+
# Audits for Performance
|
|
116
|
+
|
|
117
|
+
The following audits in this category have a score below 90 and may need attention:
|
|
118
|
+
- **Improve image delivery**: 50 (Est savings of 35 KiB)
|
|
119
|
+
* Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/performance/insights/image-delivery)
|
|
120
|
+
|
|
121
|
+
- Item:
|
|
122
|
+
* **node**: div.devsite-landing-row-item-media > figure.devsite-landing-row-item-image > picture > img
|
|
123
|
+
* **node path**: 1,HTML,1,BODY,2,SECTION,6,SECTION,0,MAIN,1,DEVSITE-CONTENT,0,ARTICLE,4,DIV,0,SECTION,0,DIV,0,DIV,0,DIV,0,DIV,0,FIGURE,0,PICTURE,0,IMG
|
|
124
|
+
* **URL**: https://web.dev/static/images/home-blue_856.png
|
|
125
|
+
* This image file is larger than it needs to be (856x505) for its displayed dimensions (568x335). Use responsive images to reduce the image download size.
|
|
126
|
+
* **Resource Size**: 33.3 kB
|
|
127
|
+
* **Est Savings**: 18.6 kB
|
|
128
|
+
- Item:
|
|
129
|
+
* **node**: figure.devsite-landing-row-item-image > a > picture > img
|
|
130
|
+
* **node path**: 1,HTML,1,BODY,2,SECTION,6,SECTION,0,MAIN,1,DEVSITE-CONTENT,0,ARTICLE,4,DIV,1,SECTION,0,DIV,0,DIV,3,DIV,0,DIV,0,FIGURE,0,A,0,PICTURE,0,IMG
|
|
131
|
+
* **URL**: https://web.dev/static/identity/image/hero-identity_480.png
|
|
132
|
+
* This image file is larger than it needs to be (1296x881) for its displayed dimensions (632x430). Use responsive images to reduce the image download size.
|
|
133
|
+
* **Resource Size**: 22.2 kB
|
|
134
|
+
* **Est Savings**: 16.9 kB
|
|
84
135
|
=== end content
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import type * as LHModel from '../../lighthouse/lighthouse.js';
|
|
6
6
|
|
|
7
|
+
import {bytes, millis} from './UnitFormatters.js';
|
|
8
|
+
|
|
7
9
|
/**
|
|
8
10
|
* A formatter that takes a raw Lighthouse report JSON and creates a markdown
|
|
9
11
|
* summary for an AI Agent.
|
|
@@ -120,37 +122,74 @@ export class LighthouseFormatter {
|
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
124
|
|
|
123
|
-
#formatTable(headings: LHModel.ReporterTypes.TableHeadingJSON[], items:
|
|
125
|
+
#formatTable(headings: LHModel.ReporterTypes.TableHeadingJSON[], items: LHModel.ReporterTypes.TableItem[]): string {
|
|
124
126
|
const lines: string[] = [];
|
|
125
|
-
|
|
127
|
+
|
|
126
128
|
for (const item of items) {
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
+
const itemLines: string[] = [];
|
|
130
|
+
for (const heading of headings) {
|
|
131
|
+
const value = item[heading.key] as LHModel.ReporterTypes.TableItemValue;
|
|
132
|
+
const formattedValues = this.#formatTableValues(value, heading.valueType);
|
|
133
|
+
for (const {labelSuffix, value: v} of formattedValues) {
|
|
134
|
+
const baseLabel = heading.label || heading.key;
|
|
135
|
+
const label = labelSuffix ? `${baseLabel} ${labelSuffix}` : baseLabel;
|
|
136
|
+
itemLines.push(` * **${label}**: ${v}`);
|
|
137
|
+
}
|
|
138
|
+
const subItems = item.subItems;
|
|
139
|
+
// subItems can technically be a string (TableItemValue), but we
|
|
140
|
+
// only care about it here if it's a SubItemsJSON (type:
|
|
141
|
+
// 'subitems'), which represents a nested table of values.
|
|
142
|
+
if (subItems && typeof subItems === 'object' && 'type' in subItems && subItems.type === 'subitems' &&
|
|
143
|
+
heading.subItemsHeading) {
|
|
144
|
+
for (const subItem of subItems.items) {
|
|
145
|
+
const subValue = subItem[heading.subItemsHeading.key] as LHModel.ReporterTypes.TableItemValue;
|
|
146
|
+
// Skip sub-item values that are identical to the main item's value
|
|
147
|
+
// for the same heading to avoid redundant output (e.g. if both
|
|
148
|
+
// show the same "Est Savings" value).
|
|
149
|
+
if (subValue === value) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const formattedSubValues = this.#formatTableValues(subValue, heading.subItemsHeading.valueType);
|
|
153
|
+
for (const {value: v} of formattedSubValues) {
|
|
154
|
+
itemLines.push(` * ${v}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (itemLines.length > 0) {
|
|
160
|
+
lines.push(`- Item:`);
|
|
161
|
+
lines.push(...itemLines);
|
|
162
|
+
}
|
|
129
163
|
}
|
|
130
164
|
return lines.join('\n');
|
|
131
165
|
}
|
|
132
166
|
|
|
133
|
-
#
|
|
167
|
+
#formatTableValues(value: LHModel.ReporterTypes.TableItemValue|undefined, valueType?: string): Array<{
|
|
168
|
+
value: string,
|
|
169
|
+
labelSuffix?: string,
|
|
170
|
+
}> {
|
|
134
171
|
if (value === undefined || value === null) {
|
|
135
|
-
return
|
|
172
|
+
return [];
|
|
136
173
|
}
|
|
137
174
|
if (typeof value === 'string' || typeof value === 'number') {
|
|
138
|
-
return
|
|
175
|
+
return [{value: this.#formatValue(value, valueType)}];
|
|
139
176
|
}
|
|
140
177
|
if (typeof value === 'object' && 'type' in value) {
|
|
141
178
|
switch (value.type) {
|
|
142
179
|
case 'node': {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
180
|
+
const results = [];
|
|
181
|
+
const label = value.nodeLabel || value.selector || value.snippet || '(node)';
|
|
182
|
+
results.push({value: label});
|
|
183
|
+
if (value.selector && value.selector !== label) {
|
|
184
|
+
results.push({labelSuffix: 'selector', value: value.selector});
|
|
146
185
|
}
|
|
147
186
|
if (value.path) {
|
|
148
|
-
|
|
187
|
+
results.push({labelSuffix: 'path', value: value.path});
|
|
149
188
|
}
|
|
150
189
|
if (value.explanation) {
|
|
151
|
-
|
|
190
|
+
results.push({labelSuffix: 'explanation', value: value.explanation.replace(/\n/g, ' ')});
|
|
152
191
|
}
|
|
153
|
-
return
|
|
192
|
+
return results;
|
|
154
193
|
}
|
|
155
194
|
case 'source-location': {
|
|
156
195
|
const parts = [];
|
|
@@ -163,10 +202,27 @@ export class LighthouseFormatter {
|
|
|
163
202
|
if (value.column) {
|
|
164
203
|
parts.push(String(value.column));
|
|
165
204
|
}
|
|
166
|
-
return parts.join(':');
|
|
205
|
+
return [{value: parts.join(':')}];
|
|
167
206
|
}
|
|
168
207
|
}
|
|
169
208
|
}
|
|
170
|
-
return
|
|
209
|
+
return [];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
#formatValue(value: string|number, valueType?: string): string {
|
|
213
|
+
if (typeof value === 'string') {
|
|
214
|
+
return value;
|
|
215
|
+
}
|
|
216
|
+
switch (valueType) {
|
|
217
|
+
case 'bytes': {
|
|
218
|
+
return bytes(value);
|
|
219
|
+
}
|
|
220
|
+
case 'timespanMs':
|
|
221
|
+
case 'ms': {
|
|
222
|
+
return millis(value);
|
|
223
|
+
}
|
|
224
|
+
default:
|
|
225
|
+
return String(value);
|
|
226
|
+
}
|
|
171
227
|
}
|
|
172
228
|
}
|
|
@@ -108,13 +108,13 @@ export class Edge {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
export
|
|
112
|
-
count
|
|
113
|
-
distance
|
|
114
|
-
self
|
|
115
|
-
maxRet
|
|
116
|
-
name
|
|
117
|
-
idxs
|
|
111
|
+
export interface AggregatedInfo {
|
|
112
|
+
count: number;
|
|
113
|
+
distance: number;
|
|
114
|
+
self: number;
|
|
115
|
+
maxRet: number;
|
|
116
|
+
name: string;
|
|
117
|
+
idxs: number[];
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
export class AggregateForDiff {
|
|
@@ -1003,7 +1003,7 @@ export const NativeFunctions = [
|
|
|
1003
1003
|
{
|
|
1004
1004
|
name: "addEventListener",
|
|
1005
1005
|
signatures: [["type","listener","?options"]],
|
|
1006
|
-
receivers: ["AbortSignal","SharedWorker","Worker","ServiceWorker","Animation","AudioBufferSourceNode","AudioContext","AudioDecoder","AudioEncoder","AudioScheduledSourceNode","AudioWorkletNode","BaseAudioContext","BroadcastChannel","CSSAnimation","CSSTransition","CanvasCaptureMediaStreamTrack","ConstantSourceNode","CookieStore","Document","Element","EventSource","FileReader","FontFaceSet","Window","HTMLElement","MathMLElement","SVGElement","HTMLAnchorElement","HTMLAreaElement","HTMLAudioElement","HTMLBRElement","HTMLBaseElement","HTMLBodyElement","HTMLButtonElement","HTMLCanvasElement","HTMLDListElement","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLDivElement","HTMLDocument","HTMLEmbedElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLFrameElement","HTMLFrameSetElement","HTMLHRElement","HTMLHeadElement","HTMLHeadingElement","HTMLHtmlElement","HTMLIFrameElement","HTMLImageElement","HTMLInputElement","HTMLLIElement","HTMLLabelElement","HTMLLegendElement","HTMLLinkElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMenuElement","HTMLMetaElement","HTMLMeterElement","HTMLModElement","HTMLOListElement","HTMLObjectElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOutputElement","HTMLParagraphElement","HTMLParamElement","HTMLPictureElement","HTMLPreElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLSlotElement","HTMLSourceElement","HTMLSpanElement","HTMLStyleElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableDataCellElement","HTMLTableElement","HTMLTableHeaderCellElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLTimeElement","HTMLTitleElement","HTMLTrackElement","HTMLUListElement","HTMLUnknownElement","HTMLVideoElement","IDBDatabase","IDBOpenDBRequest","IDBRequest","IDBTransaction","MIDIAccess","MIDIInput","MIDIOutput","MIDIPort","MediaDevices","MediaKeySession","MediaQueryList","MediaRecorder","MediaSource","MediaStream","MediaStreamTrack","MessageEventTarget","MessagePort","NavigationHistoryEntry","Notification","OfflineAudioContext","OffscreenCanvas","OscillatorNode","PaymentRequest","PaymentResponse","Performance","PermissionStatus","PictureInPictureWindow","RTCDTMFSender","RTCDataChannel","RTCDtlsTransport","RTCIceTransport","RTCPeerConnection","RTCSctpTransport","RemotePlayback","SVGAElement","SVGAnimateElement","SVGAnimateMotionElement","SVGAnimateTransformElement","SVGAnimationElement","SVGCircleElement","SVGClipPathElement","SVGComponentTransferFunctionElement","SVGDefsElement","SVGDescElement","SVGEllipseElement","SVGFEBlendElement","SVGFEColorMatrixElement","SVGFEComponentTransferElement","SVGFECompositeElement","SVGFEConvolveMatrixElement","SVGFEDiffuseLightingElement","SVGFEDisplacementMapElement","SVGFEDistantLightElement","SVGFEDropShadowElement","SVGFEFloodElement","SVGFEFuncAElement","SVGFEFuncBElement","SVGFEFuncGElement","SVGFEFuncRElement","SVGFEGaussianBlurElement","SVGFEImageElement","SVGFEMergeElement","SVGFEMergeNodeElement","SVGFEMorphologyElement","SVGFEOffsetElement","SVGFEPointLightElement","SVGFESpecularLightingElement","SVGFESpotLightElement","SVGFETileElement","SVGFETurbulenceElement","SVGFilterElement","SVGForeignObjectElement","SVGGElement","SVGGeometryElement","SVGGradientElement","SVGGraphicsElement","SVGImageElement","SVGLineElement","SVGLinearGradientElement","SVGMPathElement","SVGMarkerElement","SVGMaskElement","SVGMetadataElement","SVGPathElement","SVGPatternElement","SVGPolygonElement","SVGPolylineElement","SVGRadialGradientElement","SVGRectElement","SVGSVGElement","SVGScriptElement","SVGSetElement","SVGStopElement","SVGStyleElement","SVGSwitchElement","SVGSymbolElement","SVGTSpanElement","SVGTextContentElement","SVGTextElement","SVGTextPathElement","SVGTextPositioningElement","SVGTitleElement","SVGUseElement","SVGViewElement","ScreenOrientation","ScriptProcessorNode","ServiceWorkerContainer","ServiceWorkerRegistration","ShadowRoot","SourceBuffer","SourceBufferList","SpeechSynthesis","SpeechSynthesisUtterance","TextTrack","TextTrackCue","TextTrackList","VTTCue","VideoDecoder","VideoEncoder","VisualViewport","WakeLockSentinel","WebSocket","XMLDocument","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload","DedicatedWorkerGlobalScope","ServiceWorkerGlobalScope","SharedWorkerGlobalScope","WorkerGlobalScope"
|
|
1006
|
+
receivers: ["AbortSignal","SharedWorker","Worker","ServiceWorker","Animation","AudioBufferSourceNode","AudioContext","AudioDecoder","AudioEncoder","AudioScheduledSourceNode","AudioWorkletNode","BaseAudioContext","BroadcastChannel","CSSAnimation","CSSTransition","CanvasCaptureMediaStreamTrack","ConstantSourceNode","CookieStore","Document","Element","EventSource","FileReader","FontFaceSet","Window","HTMLElement","MathMLElement","SVGElement","HTMLAnchorElement","HTMLAreaElement","HTMLAudioElement","HTMLBRElement","HTMLBaseElement","HTMLBodyElement","HTMLButtonElement","HTMLCanvasElement","HTMLDListElement","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLDivElement","HTMLDocument","HTMLEmbedElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLFrameElement","HTMLFrameSetElement","HTMLHRElement","HTMLHeadElement","HTMLHeadingElement","HTMLHtmlElement","HTMLIFrameElement","HTMLImageElement","HTMLInputElement","HTMLLIElement","HTMLLabelElement","HTMLLegendElement","HTMLLinkElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMenuElement","HTMLMetaElement","HTMLMeterElement","HTMLModElement","HTMLOListElement","HTMLObjectElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOutputElement","HTMLParagraphElement","HTMLParamElement","HTMLPictureElement","HTMLPreElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLSlotElement","HTMLSourceElement","HTMLSpanElement","HTMLStyleElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableDataCellElement","HTMLTableElement","HTMLTableHeaderCellElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLTimeElement","HTMLTitleElement","HTMLTrackElement","HTMLUListElement","HTMLUnknownElement","HTMLVideoElement","IDBDatabase","IDBOpenDBRequest","IDBRequest","IDBTransaction","MIDIAccess","MIDIInput","MIDIOutput","MIDIPort","MediaDevices","MediaKeySession","MediaQueryList","MediaRecorder","MediaSource","MediaStream","MediaStreamTrack","MessageEventTarget","MessagePort","NavigationHistoryEntry","Notification","OfflineAudioContext","OffscreenCanvas","OscillatorNode","PaymentRequest","PaymentResponse","Performance","PermissionStatus","PictureInPictureWindow","RTCDTMFSender","RTCDataChannel","RTCDtlsTransport","RTCIceTransport","RTCPeerConnection","RTCSctpTransport","RemotePlayback","SVGAElement","SVGAnimateElement","SVGAnimateMotionElement","SVGAnimateTransformElement","SVGAnimationElement","SVGCircleElement","SVGClipPathElement","SVGComponentTransferFunctionElement","SVGDefsElement","SVGDescElement","SVGEllipseElement","SVGFEBlendElement","SVGFEColorMatrixElement","SVGFEComponentTransferElement","SVGFECompositeElement","SVGFEConvolveMatrixElement","SVGFEDiffuseLightingElement","SVGFEDisplacementMapElement","SVGFEDistantLightElement","SVGFEDropShadowElement","SVGFEFloodElement","SVGFEFuncAElement","SVGFEFuncBElement","SVGFEFuncGElement","SVGFEFuncRElement","SVGFEGaussianBlurElement","SVGFEImageElement","SVGFEMergeElement","SVGFEMergeNodeElement","SVGFEMorphologyElement","SVGFEOffsetElement","SVGFEPointLightElement","SVGFESpecularLightingElement","SVGFESpotLightElement","SVGFETileElement","SVGFETurbulenceElement","SVGFilterElement","SVGForeignObjectElement","SVGGElement","SVGGeometryElement","SVGGradientElement","SVGGraphicsElement","SVGImageElement","SVGLineElement","SVGLinearGradientElement","SVGMPathElement","SVGMarkerElement","SVGMaskElement","SVGMetadataElement","SVGPathElement","SVGPatternElement","SVGPolygonElement","SVGPolylineElement","SVGRadialGradientElement","SVGRectElement","SVGSVGElement","SVGScriptElement","SVGSetElement","SVGStopElement","SVGStyleElement","SVGSwitchElement","SVGSymbolElement","SVGTSpanElement","SVGTextContentElement","SVGTextElement","SVGTextPathElement","SVGTextPositioningElement","SVGTitleElement","SVGUseElement","SVGViewElement","ScreenOrientation","ScriptProcessorNode","ServiceWorkerContainer","ServiceWorkerRegistration","ShadowRoot","SourceBuffer","SourceBufferList","SpeechSynthesis","SpeechSynthesisUtterance","TextTrack","TextTrackCue","TextTrackList","VTTCue","VideoDecoder","VideoEncoder","VisualViewport","WakeLockSentinel","WebSocket","XMLDocument","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload","DedicatedWorkerGlobalScope","ServiceWorkerGlobalScope","SharedWorkerGlobalScope","WorkerGlobalScope"]
|
|
1007
1007
|
},
|
|
1008
1008
|
{
|
|
1009
1009
|
name: "addEventListener",
|
|
@@ -1013,7 +1013,7 @@ export const NativeFunctions = [
|
|
|
1013
1013
|
{
|
|
1014
1014
|
name: "removeEventListener",
|
|
1015
1015
|
signatures: [["type","listener","?options"]],
|
|
1016
|
-
receivers: ["AbortSignal","SharedWorker","Worker","ServiceWorker","Animation","AudioBufferSourceNode","AudioContext","AudioDecoder","AudioEncoder","AudioScheduledSourceNode","AudioWorkletNode","BaseAudioContext","BroadcastChannel","CSSAnimation","CSSTransition","CanvasCaptureMediaStreamTrack","ConstantSourceNode","CookieStore","Document","Element","EventSource","FileReader","FontFaceSet","Window","HTMLElement","MathMLElement","SVGElement","HTMLAnchorElement","HTMLAreaElement","HTMLAudioElement","HTMLBRElement","HTMLBaseElement","HTMLBodyElement","HTMLButtonElement","HTMLCanvasElement","HTMLDListElement","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLDivElement","HTMLDocument","HTMLEmbedElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLFrameElement","HTMLFrameSetElement","HTMLHRElement","HTMLHeadElement","HTMLHeadingElement","HTMLHtmlElement","HTMLIFrameElement","HTMLImageElement","HTMLInputElement","HTMLLIElement","HTMLLabelElement","HTMLLegendElement","HTMLLinkElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMenuElement","HTMLMetaElement","HTMLMeterElement","HTMLModElement","HTMLOListElement","HTMLObjectElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOutputElement","HTMLParagraphElement","HTMLParamElement","HTMLPictureElement","HTMLPreElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLSlotElement","HTMLSourceElement","HTMLSpanElement","HTMLStyleElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableDataCellElement","HTMLTableElement","HTMLTableHeaderCellElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLTimeElement","HTMLTitleElement","HTMLTrackElement","HTMLUListElement","HTMLUnknownElement","HTMLVideoElement","IDBDatabase","IDBOpenDBRequest","IDBRequest","IDBTransaction","MIDIAccess","MIDIInput","MIDIOutput","MIDIPort","MediaDevices","MediaKeySession","MediaQueryList","MediaRecorder","MediaSource","MediaStream","MediaStreamTrack","MessageEventTarget","MessagePort","NavigationHistoryEntry","Notification","OfflineAudioContext","OffscreenCanvas","OscillatorNode","PaymentRequest","PaymentResponse","Performance","PermissionStatus","PictureInPictureWindow","RTCDTMFSender","RTCDataChannel","RTCDtlsTransport","RTCIceTransport","RTCPeerConnection","RTCSctpTransport","RemotePlayback","SVGAElement","SVGAnimateElement","SVGAnimateMotionElement","SVGAnimateTransformElement","SVGAnimationElement","SVGCircleElement","SVGClipPathElement","SVGComponentTransferFunctionElement","SVGDefsElement","SVGDescElement","SVGEllipseElement","SVGFEBlendElement","SVGFEColorMatrixElement","SVGFEComponentTransferElement","SVGFECompositeElement","SVGFEConvolveMatrixElement","SVGFEDiffuseLightingElement","SVGFEDisplacementMapElement","SVGFEDistantLightElement","SVGFEDropShadowElement","SVGFEFloodElement","SVGFEFuncAElement","SVGFEFuncBElement","SVGFEFuncGElement","SVGFEFuncRElement","SVGFEGaussianBlurElement","SVGFEImageElement","SVGFEMergeElement","SVGFEMergeNodeElement","SVGFEMorphologyElement","SVGFEOffsetElement","SVGFEPointLightElement","SVGFESpecularLightingElement","SVGFESpotLightElement","SVGFETileElement","SVGFETurbulenceElement","SVGFilterElement","SVGForeignObjectElement","SVGGElement","SVGGeometryElement","SVGGradientElement","SVGGraphicsElement","SVGImageElement","SVGLineElement","SVGLinearGradientElement","SVGMPathElement","SVGMarkerElement","SVGMaskElement","SVGMetadataElement","SVGPathElement","SVGPatternElement","SVGPolygonElement","SVGPolylineElement","SVGRadialGradientElement","SVGRectElement","SVGSVGElement","SVGScriptElement","SVGSetElement","SVGStopElement","SVGStyleElement","SVGSwitchElement","SVGSymbolElement","SVGTSpanElement","SVGTextContentElement","SVGTextElement","SVGTextPathElement","SVGTextPositioningElement","SVGTitleElement","SVGUseElement","SVGViewElement","ScreenOrientation","ScriptProcessorNode","ServiceWorkerContainer","ServiceWorkerRegistration","ShadowRoot","SourceBuffer","SourceBufferList","SpeechSynthesis","SpeechSynthesisUtterance","TextTrack","TextTrackCue","TextTrackList","VTTCue","VideoDecoder","VideoEncoder","VisualViewport","WakeLockSentinel","WebSocket","XMLDocument","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload","DedicatedWorkerGlobalScope","ServiceWorkerGlobalScope","SharedWorkerGlobalScope","WorkerGlobalScope"
|
|
1016
|
+
receivers: ["AbortSignal","SharedWorker","Worker","ServiceWorker","Animation","AudioBufferSourceNode","AudioContext","AudioDecoder","AudioEncoder","AudioScheduledSourceNode","AudioWorkletNode","BaseAudioContext","BroadcastChannel","CSSAnimation","CSSTransition","CanvasCaptureMediaStreamTrack","ConstantSourceNode","CookieStore","Document","Element","EventSource","FileReader","FontFaceSet","Window","HTMLElement","MathMLElement","SVGElement","HTMLAnchorElement","HTMLAreaElement","HTMLAudioElement","HTMLBRElement","HTMLBaseElement","HTMLBodyElement","HTMLButtonElement","HTMLCanvasElement","HTMLDListElement","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLDivElement","HTMLDocument","HTMLEmbedElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLFrameElement","HTMLFrameSetElement","HTMLHRElement","HTMLHeadElement","HTMLHeadingElement","HTMLHtmlElement","HTMLIFrameElement","HTMLImageElement","HTMLInputElement","HTMLLIElement","HTMLLabelElement","HTMLLegendElement","HTMLLinkElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMenuElement","HTMLMetaElement","HTMLMeterElement","HTMLModElement","HTMLOListElement","HTMLObjectElement","HTMLOptGroupElement","HTMLOptionElement","HTMLOutputElement","HTMLParagraphElement","HTMLParamElement","HTMLPictureElement","HTMLPreElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLSlotElement","HTMLSourceElement","HTMLSpanElement","HTMLStyleElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableDataCellElement","HTMLTableElement","HTMLTableHeaderCellElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLTimeElement","HTMLTitleElement","HTMLTrackElement","HTMLUListElement","HTMLUnknownElement","HTMLVideoElement","IDBDatabase","IDBOpenDBRequest","IDBRequest","IDBTransaction","MIDIAccess","MIDIInput","MIDIOutput","MIDIPort","MediaDevices","MediaKeySession","MediaQueryList","MediaRecorder","MediaSource","MediaStream","MediaStreamTrack","MessageEventTarget","MessagePort","NavigationHistoryEntry","Notification","OfflineAudioContext","OffscreenCanvas","OscillatorNode","PaymentRequest","PaymentResponse","Performance","PermissionStatus","PictureInPictureWindow","RTCDTMFSender","RTCDataChannel","RTCDtlsTransport","RTCIceTransport","RTCPeerConnection","RTCSctpTransport","RemotePlayback","SVGAElement","SVGAnimateElement","SVGAnimateMotionElement","SVGAnimateTransformElement","SVGAnimationElement","SVGCircleElement","SVGClipPathElement","SVGComponentTransferFunctionElement","SVGDefsElement","SVGDescElement","SVGEllipseElement","SVGFEBlendElement","SVGFEColorMatrixElement","SVGFEComponentTransferElement","SVGFECompositeElement","SVGFEConvolveMatrixElement","SVGFEDiffuseLightingElement","SVGFEDisplacementMapElement","SVGFEDistantLightElement","SVGFEDropShadowElement","SVGFEFloodElement","SVGFEFuncAElement","SVGFEFuncBElement","SVGFEFuncGElement","SVGFEFuncRElement","SVGFEGaussianBlurElement","SVGFEImageElement","SVGFEMergeElement","SVGFEMergeNodeElement","SVGFEMorphologyElement","SVGFEOffsetElement","SVGFEPointLightElement","SVGFESpecularLightingElement","SVGFESpotLightElement","SVGFETileElement","SVGFETurbulenceElement","SVGFilterElement","SVGForeignObjectElement","SVGGElement","SVGGeometryElement","SVGGradientElement","SVGGraphicsElement","SVGImageElement","SVGLineElement","SVGLinearGradientElement","SVGMPathElement","SVGMarkerElement","SVGMaskElement","SVGMetadataElement","SVGPathElement","SVGPatternElement","SVGPolygonElement","SVGPolylineElement","SVGRadialGradientElement","SVGRectElement","SVGSVGElement","SVGScriptElement","SVGSetElement","SVGStopElement","SVGStyleElement","SVGSwitchElement","SVGSymbolElement","SVGTSpanElement","SVGTextContentElement","SVGTextElement","SVGTextPathElement","SVGTextPositioningElement","SVGTitleElement","SVGUseElement","SVGViewElement","ScreenOrientation","ScriptProcessorNode","ServiceWorkerContainer","ServiceWorkerRegistration","ShadowRoot","SourceBuffer","SourceBufferList","SpeechSynthesis","SpeechSynthesisUtterance","TextTrack","TextTrackCue","TextTrackList","VTTCue","VideoDecoder","VideoEncoder","VisualViewport","WakeLockSentinel","WebSocket","XMLDocument","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload","DedicatedWorkerGlobalScope","ServiceWorkerGlobalScope","SharedWorkerGlobalScope","WorkerGlobalScope"]
|
|
1017
1017
|
},
|
|
1018
1018
|
{
|
|
1019
1019
|
name: "removeEventListener",
|
|
@@ -2895,6 +2895,10 @@ export const NativeFunctions = [
|
|
|
2895
2895
|
signatures: [["?detailsPromise"]],
|
|
2896
2896
|
receivers: ["PaymentRequest"]
|
|
2897
2897
|
},
|
|
2898
|
+
{
|
|
2899
|
+
name: "attachInternals",
|
|
2900
|
+
signatures: [["?options"]]
|
|
2901
|
+
},
|
|
2898
2902
|
{
|
|
2899
2903
|
name: "showPopover",
|
|
2900
2904
|
signatures: [["?options"]]
|