chrome-devtools-frontend 1.0.1556696 → 1.0.1558690
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/front_end/core/common/Object.ts +5 -1
- package/front_end/core/host/ResourceLoader.ts +1 -1
- package/front_end/core/host/UserMetrics.ts +3 -1
- package/front_end/core/sdk/DOMModel.ts +7 -0
- package/front_end/core/sdk/NetworkManager.ts +0 -7
- package/front_end/core/sdk/SourceMap.ts +16 -2
- package/front_end/core/sdk/SourceMapManager.ts +1 -1
- package/front_end/core/sdk/SourceMapScopesInfo.ts +11 -4
- package/front_end/entrypoints/formatter_worker/FormatterActions.ts +1 -0
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +51 -8
- package/front_end/entrypoints/main/GlobalAiButton.ts +5 -1
- package/front_end/generated/Deprecation.ts +0 -7
- package/front_end/generated/InspectorBackendCommands.ts +3 -3
- package/front_end/generated/protocol.ts +9 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +3 -3
- package/front_end/models/bindings/CompilerScriptMapping.ts +7 -6
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +4 -4
- package/front_end/models/javascript_metadata/NativeFunctions.js +2 -2
- package/front_end/models/stack_trace/StackTraceImpl.ts +5 -3
- package/front_end/models/stack_trace/StackTraceModel.ts +53 -40
- package/front_end/models/trace/EventsSerializer.ts +8 -2
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
- package/front_end/panels/application/AppManifestView.ts +134 -223
- package/front_end/panels/application/CookieItemsView.ts +1 -0
- package/front_end/panels/application/SharedStorageTreeElement.ts +3 -0
- package/front_end/panels/application/appManifestView.css +1 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +4 -3
- package/front_end/panels/elements/ElementsTreeElement.ts +30 -1
- package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +7 -1
- package/front_end/panels/elements/components/AdornerManager.ts +8 -0
- package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
- package/front_end/panels/issues/AffectedResourcesView.ts +0 -1
- package/front_end/panels/lighthouse/LighthousePanel.ts +10 -0
- package/front_end/panels/lighthouse/lighthousePanel.css +46 -3
- package/front_end/panels/network/NetworkLogViewColumns.ts +9 -9
- package/front_end/panels/network/RequestCookiesView.ts +125 -141
- package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
- package/front_end/panels/network/requestCookiesView.css +22 -20
- package/front_end/panels/recorder/components/RecordingView.ts +3 -3
- package/front_end/panels/recorder/components/StepView.ts +2 -1
- package/front_end/panels/settings/keybindsSettingsTab.css +4 -0
- package/front_end/panels/sources/CallStackSidebarPane.ts +7 -3
- package/front_end/panels/sources/DebuggerPausedMessage.ts +125 -90
- package/front_end/panels/sources/SourcesPanel.ts +10 -7
- package/front_end/panels/sources/debuggerPausedMessage.css +8 -0
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +2 -0
- package/front_end/third_party/acorn/estree-legacy.d.ts +2 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +12 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +14 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts +0 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +0 -20
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +10 -14
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +12 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js +22 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +26 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +72 -15
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +12 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +14 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts +0 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +0 -20
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +11 -15
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +12 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js +22 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +26 -0
- package/front_end/third_party/puppeteer/package/package.json +1 -1
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +18 -0
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +16 -2
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +13 -0
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +0 -33
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +14 -28
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +19 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +19 -0
- package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +30 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +15 -6
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/icon_button/iconButton.css +3 -1
- package/front_end/ui/components/report_view/ReportView.ts +11 -2
- package/front_end/ui/components/report_view/report.css +16 -0
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +135 -7
- package/front_end/ui/components/text_editor/config.ts +6 -6
- package/front_end/ui/legacy/ContextMenu.ts +11 -2
- package/front_end/ui/legacy/TextPrompt.ts +1 -1
- package/front_end/ui/legacy/Toolbar.ts +4 -0
- package/front_end/ui/legacy/UIUtils.ts +0 -2
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +18 -3
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +6 -0
- package/package.json +1 -1
|
@@ -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
|
|
|
5
|
+
import * as Common from '../../core/common/common.js';
|
|
5
6
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
6
7
|
import type * as Protocol from '../../generated/protocol.js';
|
|
7
8
|
|
|
@@ -32,6 +33,7 @@ export type TranslateRawFrames = (frames: readonly RawFrame[], target: SDK.Targe
|
|
|
32
33
|
*/
|
|
33
34
|
export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
34
35
|
readonly #trie = new Trie();
|
|
36
|
+
readonly #mutex = new Common.Mutex.Mutex();
|
|
35
37
|
|
|
36
38
|
/** @returns the {@link StackTraceModel} for the target, or the model for the primaryPageTarget when passing null/undefined */
|
|
37
39
|
static #modelForTarget(target: SDK.Target.Target|null|undefined): StackTraceModel {
|
|
@@ -45,7 +47,7 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
|
45
47
|
async createFromProtocolRuntime(stackTrace: Protocol.Runtime.StackTrace, rawFramesToUIFrames: TranslateRawFrames):
|
|
46
48
|
Promise<StackTrace.StackTrace.StackTrace> {
|
|
47
49
|
const [syncFragment, asyncFragments] = await Promise.all([
|
|
48
|
-
this.#
|
|
50
|
+
this.#createFragment(stackTrace.callFrames, rawFramesToUIFrames),
|
|
49
51
|
this.#createAsyncFragments(stackTrace, rawFramesToUIFrames),
|
|
50
52
|
]);
|
|
51
53
|
|
|
@@ -65,53 +67,51 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
|
65
67
|
|
|
66
68
|
/** Trigger re-translation of all fragments with the provide script in their call stack */
|
|
67
69
|
async scriptInfoChanged(script: SDK.Script.Script, translateRawFrames: TranslateRawFrames): Promise<void> {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
const release = await this.#mutex.acquire();
|
|
71
|
+
try {
|
|
72
|
+
const translatePromises: Array<Promise<unknown>> = [];
|
|
73
|
+
let stackTracesToUpdate = new Set<AnyStackTraceImpl>();
|
|
74
|
+
|
|
75
|
+
for (const fragment of this.#affectedFragments(script)) {
|
|
76
|
+
// We trigger re-translation only for fragments of leaf-nodes. Any fragment along the ancestor-chain
|
|
77
|
+
// is re-translated as a side-effect.
|
|
78
|
+
// We just need to remember the stack traces of the skipped over fragments, so we can send the
|
|
79
|
+
// UPDATED event also to them.
|
|
80
|
+
if (fragment.node.children.length === 0) {
|
|
81
|
+
translatePromises.push(this.#translateFragment(fragment, translateRawFrames));
|
|
82
|
+
}
|
|
83
|
+
stackTracesToUpdate = stackTracesToUpdate.union(fragment.stackTraces);
|
|
78
84
|
}
|
|
79
|
-
stackTracesToUpdate = stackTracesToUpdate.union(fragment.stackTraces);
|
|
80
|
-
}
|
|
81
85
|
|
|
82
|
-
|
|
86
|
+
await Promise.all(translatePromises);
|
|
83
87
|
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
for (const stackTrace of stackTracesToUpdate) {
|
|
89
|
+
stackTrace.dispatchEventToListeners(StackTrace.StackTrace.Events.UPDATED);
|
|
90
|
+
}
|
|
91
|
+
} finally {
|
|
92
|
+
release();
|
|
86
93
|
}
|
|
87
94
|
}
|
|
88
95
|
|
|
89
|
-
async #createSyncFragment(stackTrace: Protocol.Runtime.StackTrace, rawFramesToUIFrames: TranslateRawFrames):
|
|
90
|
-
Promise<FragmentImpl> {
|
|
91
|
-
const fragment = this.#createFragment(stackTrace.callFrames);
|
|
92
|
-
await this.#translateFragment(fragment, rawFramesToUIFrames);
|
|
93
|
-
return fragment;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
96
|
async #createDebuggableFragment(
|
|
97
97
|
pausedDetails: SDK.DebuggerModel.DebuggerPausedDetails,
|
|
98
98
|
rawFramesToUIFrames: TranslateRawFrames): Promise<DebuggableFragmentImpl> {
|
|
99
|
-
const fragment = this.#createFragment(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
99
|
+
const fragment = await this.#createFragment(
|
|
100
|
+
pausedDetails.callFrames.map(frame => ({
|
|
101
|
+
scriptId: frame.script.scriptId,
|
|
102
|
+
url: frame.script.sourceURL,
|
|
103
|
+
functionName: frame.functionName,
|
|
104
|
+
lineNumber: frame.location().lineNumber,
|
|
105
|
+
columnNumber: frame.location().columnNumber,
|
|
106
|
+
})),
|
|
107
|
+
rawFramesToUIFrames);
|
|
107
108
|
return new DebuggableFragmentImpl(fragment, pausedDetails.callFrames);
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
async #createAsyncFragments(
|
|
111
112
|
stackTraceOrPausedEvent: Protocol.Runtime.StackTrace|SDK.DebuggerModel.DebuggerPausedDetails,
|
|
112
113
|
rawFramesToUIFrames: TranslateRawFrames): Promise<AsyncFragmentImpl[]> {
|
|
113
|
-
const asyncFragments: AsyncFragmentImpl
|
|
114
|
-
const translatePromises: Array<Promise<unknown>> = [];
|
|
114
|
+
const asyncFragments: Array<Promise<AsyncFragmentImpl>> = [];
|
|
115
115
|
|
|
116
116
|
const debuggerModel = this.target().model(SDK.DebuggerModel.DebuggerModel);
|
|
117
117
|
if (debuggerModel) {
|
|
@@ -122,18 +122,31 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
|
122
122
|
continue;
|
|
123
123
|
}
|
|
124
124
|
const model = StackTraceModel.#modelForTarget(target);
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
const asyncFragmentPromise =
|
|
126
|
+
model.#createFragment(asyncStackTrace.callFrames, rawFramesToUIFrames)
|
|
127
|
+
.then(fragment => new AsyncFragmentImpl(asyncStackTrace.description ?? '', fragment));
|
|
128
|
+
asyncFragments.push(asyncFragmentPromise);
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
|
|
131
|
-
await Promise.all(
|
|
132
|
-
return asyncFragments;
|
|
132
|
+
return await Promise.all(asyncFragments);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
#createFragment(frames: RawFrame[]): FragmentImpl {
|
|
136
|
-
|
|
135
|
+
async #createFragment(frames: RawFrame[], rawFramesToUIFrames: TranslateRawFrames): Promise<FragmentImpl> {
|
|
136
|
+
const release = await this.#mutex.acquire();
|
|
137
|
+
try {
|
|
138
|
+
const node = this.#trie.insert(frames);
|
|
139
|
+
const requiresTranslation = !Boolean(node.fragment);
|
|
140
|
+
const fragment = FragmentImpl.getOrCreate(node);
|
|
141
|
+
|
|
142
|
+
if (requiresTranslation) {
|
|
143
|
+
await this.#translateFragment(fragment, rawFramesToUIFrames);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return fragment;
|
|
147
|
+
} finally {
|
|
148
|
+
release();
|
|
149
|
+
}
|
|
137
150
|
}
|
|
138
151
|
|
|
139
152
|
async #translateFragment(fragment: FragmentImpl, rawFramesToUIFrames: TranslateRawFrames): Promise<void> {
|
|
@@ -20,9 +20,15 @@ export class EventsSerializer {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const rawEvents = Helpers.SyntheticEvents.SyntheticEventsManager.getActiveManager().getRawTraceEvents();
|
|
23
|
+
const isSynthetic = Types.Events.isSyntheticBased(event);
|
|
24
|
+
const index = rawEvents.indexOf(isSynthetic ? event.rawSourceEvent : event);
|
|
25
|
+
if (index === -1) {
|
|
26
|
+
throw new Error(`Unknown trace event: ${event.name}`);
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
const key: Types.File.SyntheticEventKey|Types.File.RawEventKey = Types.Events.isSyntheticBased(event) ?
|
|
24
|
-
`${Types.File.EventKeyType.SYNTHETIC_EVENT}-${
|
|
25
|
-
`${Types.File.EventKeyType.RAW_EVENT}-${
|
|
30
|
+
`${Types.File.EventKeyType.SYNTHETIC_EVENT}-${index}` :
|
|
31
|
+
`${Types.File.EventKeyType.RAW_EVENT}-${index}`;
|
|
26
32
|
if (key.length < 3) {
|
|
27
33
|
return null;
|
|
28
34
|
}
|
|
@@ -443,7 +443,7 @@ async function buildLayoutShiftsClusters(): Promise<void> {
|
|
|
443
443
|
}
|
|
444
444
|
|
|
445
445
|
let largestScore = 0;
|
|
446
|
-
let worstShiftEvent: Types.Events.
|
|
446
|
+
let worstShiftEvent: Types.Events.SyntheticLayoutShift|null = null;
|
|
447
447
|
|
|
448
448
|
for (const shift of cluster.events) {
|
|
449
449
|
weightedScore += shift.args.data ? shift.args.data.weighted_score_delta : 0;
|
|
@@ -504,7 +504,7 @@ async function buildLayoutShiftsClusters(): Promise<void> {
|
|
|
504
504
|
// Update the cluster's worst layout shift.
|
|
505
505
|
if (worstShiftEvent) {
|
|
506
506
|
cluster.worstShiftEvent = worstShiftEvent;
|
|
507
|
-
cluster.rawSourceEvent = worstShiftEvent;
|
|
507
|
+
cluster.rawSourceEvent = worstShiftEvent.rawSourceEvent;
|
|
508
508
|
}
|
|
509
509
|
|
|
510
510
|
// layout shifts are already sorted by time ascending.
|