chrome-devtools-mcp 0.12.0 → 0.13.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.
Files changed (702) hide show
  1. package/README.md +103 -19
  2. package/build/src/DevtoolsUtils.js +16 -14
  3. package/build/src/McpContext.js +20 -5
  4. package/build/src/McpResponse.js +40 -21
  5. package/build/src/PageCollector.js +28 -18
  6. package/build/src/browser.js +3 -2
  7. package/build/src/cli.js +30 -0
  8. package/build/src/formatters/SnapshotFormatter.js +128 -0
  9. package/build/src/formatters/consoleFormatter.js +40 -5
  10. package/build/src/issue-descriptions.js +1 -1
  11. package/build/src/main.js +45 -7
  12. package/build/src/telemetry/clearcut-logger.js +28 -0
  13. package/build/src/telemetry/clearcut-sender.js +11 -0
  14. package/build/src/telemetry/flag-utils.js +45 -0
  15. package/build/src/telemetry/types.js +27 -0
  16. package/build/src/third_party/THIRD_PARTY_NOTICES +603 -6
  17. package/build/src/third_party/devtools.js +6 -0
  18. package/build/src/third_party/index.js +82488 -642
  19. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabled.md +7 -0
  20. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
  21. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
  22. package/build/src/third_party/issue-descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
  23. package/build/src/third_party/issue-descriptions/permissionElementFencedFrameDisallowed.md +5 -0
  24. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooLarge.md +5 -0
  25. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooSmall.md +5 -0
  26. package/build/src/third_party/issue-descriptions/permissionElementGeolocationDeprecated.md +5 -0
  27. package/build/src/third_party/issue-descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
  28. package/build/src/third_party/issue-descriptions/permissionElementInvalidDisplayStyle.md +5 -0
  29. package/build/src/third_party/issue-descriptions/permissionElementInvalidSizeValue.md +5 -0
  30. package/build/src/third_party/issue-descriptions/permissionElementInvalidType.md +5 -0
  31. package/build/src/third_party/issue-descriptions/permissionElementInvalidTypeActivation.md +5 -0
  32. package/build/src/third_party/issue-descriptions/permissionElementLowContrast.md +5 -0
  33. package/build/src/third_party/issue-descriptions/permissionElementNonOpaqueColor.md +5 -0
  34. package/build/src/third_party/issue-descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
  35. package/build/src/third_party/issue-descriptions/permissionElementPaddingRightUnsupported.md +6 -0
  36. package/build/src/third_party/issue-descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
  37. package/build/src/third_party/issue-descriptions/permissionElementRegistrationFailed.md +5 -0
  38. package/build/src/third_party/issue-descriptions/permissionElementRequestInProgress.md +5 -0
  39. package/build/src/third_party/issue-descriptions/permissionElementSecurityChecksFailed.md +5 -0
  40. package/build/src/third_party/issue-descriptions/permissionElementTypeNotSupported.md +5 -0
  41. package/build/src/third_party/issue-descriptions/permissionElementUntrustedEvent.md +7 -0
  42. package/build/src/tools/input.js +31 -4
  43. package/build/src/tools/pages.js +49 -8
  44. package/build/src/tools/performance.js +32 -7
  45. package/build/src/trace-processing/parse.js +7 -7
  46. package/build/src/utils/string.js +36 -0
  47. package/package.json +15 -14
  48. package/build/node_modules/chrome-devtools-frontend/LICENSE +0 -27
  49. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +0 -4
  50. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +0 -17
  51. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +0 -43
  52. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +0 -27
  53. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +0 -2033
  54. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +0 -332
  55. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +0 -221
  56. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +0 -79
  57. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +0 -14
  58. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +0 -14
  59. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +0 -66
  60. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +0 -4
  61. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +0 -29
  62. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +0 -22
  63. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +0 -49
  64. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +0 -86
  65. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +0 -449
  66. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +0 -144
  67. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +0 -69
  68. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +0 -495
  69. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +0 -15
  70. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +0 -164
  71. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +0 -24
  72. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +0 -78
  73. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +0 -164
  74. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +0 -1263
  75. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +0 -97
  76. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +0 -14
  77. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +0 -40
  78. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +0 -71
  79. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +0 -127
  80. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +0 -41
  81. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +0 -434
  82. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +0 -66
  83. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +0 -202
  84. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +0 -92
  85. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +0 -69
  86. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +0 -430
  87. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +0 -61
  88. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +0 -220
  89. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +0 -968
  90. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +0 -13
  91. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/ByteUtilities.js +0 -72
  92. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/DevToolsLocale.js +0 -64
  93. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/NumberFormatter.js +0 -67
  94. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/collect-ui-strings.js +0 -73
  95. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/generate-locales-js.js +0 -51
  96. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +0 -9
  97. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18nImpl.js +0 -135
  98. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18nTypes.js +0 -4
  99. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/locales.js +0 -14
  100. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/time-utilities.js +0 -148
  101. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +0 -199
  102. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +0 -4
  103. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +0 -4
  104. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +0 -13
  105. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +0 -27
  106. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +0 -19
  107. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +0 -21
  108. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +0 -79
  109. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +0 -143
  110. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +0 -72
  111. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +0 -538
  112. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +0 -9
  113. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +0 -157
  114. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +0 -24
  115. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +0 -4
  116. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +0 -22
  117. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +0 -4
  118. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +0 -5
  119. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +0 -63
  120. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +0 -5
  121. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +0 -72
  122. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +0 -5
  123. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +0 -26
  124. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +0 -17
  125. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +0 -12
  126. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +0 -138
  127. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +0 -539
  128. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +0 -8
  129. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +0 -54
  130. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +0 -11
  131. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +0 -6
  132. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +0 -281
  133. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +0 -845
  134. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +0 -155
  135. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +0 -99
  136. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +0 -217
  137. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +0 -98
  138. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +0 -31
  139. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +0 -22
  140. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +0 -1318
  141. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +0 -100
  142. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +0 -1532
  143. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +0 -908
  144. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +0 -312
  145. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +0 -574
  146. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +0 -1346
  147. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +0 -53
  148. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +0 -403
  149. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +0 -22
  150. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +0 -21
  151. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +0 -275
  152. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +0 -166
  153. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +0 -24
  154. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +0 -29
  155. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +0 -236
  156. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +0 -47
  157. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +0 -205
  158. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +0 -629
  159. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +0 -14
  160. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +0 -241
  161. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +0 -198
  162. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +0 -163
  163. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +0 -597
  164. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +0 -1635
  165. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +0 -1216
  166. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +0 -527
  167. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +0 -364
  168. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +0 -127
  169. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +0 -4
  170. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +0 -199
  171. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +0 -130
  172. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +0 -75
  173. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +0 -80
  174. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +0 -208
  175. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +0 -41
  176. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +0 -95
  177. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +0 -34
  178. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +0 -2223
  179. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +0 -1654
  180. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +0 -48
  181. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +0 -765
  182. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +0 -384
  183. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +0 -25
  184. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +0 -310
  185. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +0 -67
  186. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +0 -62
  187. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +0 -608
  188. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +0 -413
  189. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +0 -4
  190. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +0 -908
  191. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +0 -163
  192. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +0 -923
  193. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +0 -535
  194. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +0 -45
  195. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +0 -36
  196. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +0 -176
  197. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +0 -420
  198. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +0 -54
  199. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +0 -67
  200. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +0 -113
  201. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +0 -216
  202. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +0 -271
  203. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +0 -511
  204. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +0 -691
  205. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +0 -57
  206. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +0 -132
  207. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +0 -201
  208. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +0 -156
  209. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +0 -508
  210. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +0 -143
  211. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +0 -53
  212. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +0 -257
  213. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +0 -395
  214. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +0 -55
  215. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +0 -66
  216. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +0 -1166
  217. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +0 -91
  218. package/build/node_modules/chrome-devtools-frontend/front_end/foundation/Universe.js +0 -34
  219. package/build/node_modules/chrome-devtools-frontend/front_end/foundation/foundation.js +0 -5
  220. package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +0 -2640
  221. package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +0 -384
  222. package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +0 -1532
  223. package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +0 -7602
  224. package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +0 -4
  225. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +0 -289
  226. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +0 -995
  227. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +0 -664
  228. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +0 -139
  229. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +0 -377
  230. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +0 -131
  231. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +0 -149
  232. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +0 -245
  233. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +0 -486
  234. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +0 -130
  235. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +0 -992
  236. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +0 -592
  237. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +0 -112
  238. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +0 -186
  239. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +0 -60
  240. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +0 -107
  241. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +0 -244
  242. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +0 -564
  243. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +0 -437
  244. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +0 -87
  245. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +0 -182
  246. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +0 -268
  247. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +0 -55
  248. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +0 -20
  249. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +0 -516
  250. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +0 -89
  251. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +0 -6
  252. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +0 -285
  253. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +0 -4
  254. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +0 -775
  255. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +0 -1706
  256. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +0 -6
  257. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +0 -145
  258. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +0 -77
  259. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +0 -6
  260. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +0 -347
  261. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +0 -4
  262. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/AttributionReportingIssue.js +0 -201
  263. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/BounceTrackingIssue.js +0 -49
  264. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CheckFormsIssuesTrigger.js +0 -31
  265. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ClientHintIssue.js +0 -71
  266. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ContentSecurityPolicyIssue.js +0 -135
  267. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ContrastCheckTrigger.js +0 -59
  268. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CookieDeprecationMetadataIssue.js +0 -58
  269. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CookieIssue.js +0 -514
  270. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CorsIssue.js +0 -244
  271. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.js +0 -110
  272. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/DeprecationIssue.js +0 -90
  273. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ElementAccessibilityIssue.js +0 -95
  274. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthRequestIssue.js +0 -231
  275. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.js +0 -141
  276. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/GenericIssue.js +0 -212
  277. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/HeavyAdIssue.js +0 -52
  278. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/Issue.js +0 -152
  279. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssueAggregator.js +0 -314
  280. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssueResolver.js +0 -40
  281. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssuesManager.js +0 -416
  282. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssuesManagerEvents.js +0 -4
  283. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/LowTextContrastIssue.js +0 -48
  284. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/MarkdownIssueDescription.js +0 -104
  285. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/MixedContentIssue.js +0 -55
  286. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/PartitioningBlobURLIssue.js +0 -58
  287. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/PropertyRuleIssue.js +0 -58
  288. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/QuirksModeIssue.js +0 -48
  289. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/RelatedIssue.js +0 -70
  290. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SRIMessageSignatureIssue.js +0 -87
  291. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SharedArrayBufferIssue.js +0 -49
  292. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SharedDictionaryIssue.js +0 -292
  293. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SourceFrameIssuesManager.js +0 -81
  294. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/StylesheetLoadingIssue.js +0 -59
  295. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/UnencodedDigestIssue.js +0 -62
  296. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteInvalidSameParty.md +0 -8
  297. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteSamePartyCrossPartyContextSet.md +0 -10
  298. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/issues_manager.js +0 -35
  299. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +0 -67
  300. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +0 -494
  301. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +0 -49
  302. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +0 -73
  303. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +0 -7
  304. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +0 -4
  305. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +0 -256
  306. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +0 -122
  307. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +0 -6
  308. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +0 -192
  309. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +0 -622
  310. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +0 -59
  311. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +0 -7
  312. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +0 -4
  313. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +0 -67
  314. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +0 -97
  315. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +0 -121
  316. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +0 -5
  317. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +0 -7
  318. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +0 -32
  319. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +0 -173
  320. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +0 -30
  321. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +0 -32
  322. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +0 -79
  323. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +0 -69
  324. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +0 -35
  325. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +0 -231
  326. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +0 -355
  327. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +0 -68
  328. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +0 -14
  329. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +0 -122
  330. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +0 -81
  331. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +0 -371
  332. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +0 -169
  333. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +0 -114
  334. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +0 -555
  335. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +0 -815
  336. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +0 -44
  337. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +0 -76
  338. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +0 -162
  339. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +0 -191
  340. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +0 -118
  341. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +0 -50
  342. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +0 -599
  343. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +0 -10
  344. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +0 -109
  345. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +0 -26
  346. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +0 -187
  347. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +0 -162
  348. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +0 -21
  349. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +0 -263
  350. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +0 -148
  351. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +0 -485
  352. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +0 -35
  353. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +0 -147
  354. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +0 -180
  355. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +0 -126
  356. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +0 -85
  357. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +0 -27
  358. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +0 -103
  359. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +0 -449
  360. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +0 -21
  361. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +0 -404
  362. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +0 -33
  363. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +0 -566
  364. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +0 -42
  365. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +0 -349
  366. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +0 -346
  367. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +0 -260
  368. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +0 -97
  369. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +0 -276
  370. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +0 -71
  371. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +0 -101
  372. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +0 -317
  373. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +0 -183
  374. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +0 -134
  375. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +0 -33
  376. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +0 -7
  377. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +0 -163
  378. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +0 -1
  379. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +0 -41
  380. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +0 -102
  381. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +0 -495
  382. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +0 -74
  383. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +0 -186
  384. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +0 -820
  385. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +0 -254
  386. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +0 -10
  387. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +0 -489
  388. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +0 -209
  389. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +0 -340
  390. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +0 -181
  391. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +0 -258
  392. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +0 -90
  393. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +0 -82
  394. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +0 -161
  395. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +0 -129
  396. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +0 -263
  397. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +0 -199
  398. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +0 -183
  399. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +0 -90
  400. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +0 -21
  401. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +0 -200
  402. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +0 -545
  403. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +0 -192
  404. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +0 -136
  405. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +0 -92
  406. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +0 -98
  407. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +0 -102
  408. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +0 -9
  409. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +0 -18
  410. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +0 -6
  411. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +0 -488
  412. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +0 -5
  413. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +0 -276
  414. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +0 -63
  415. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +0 -82
  416. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +0 -551
  417. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +0 -7
  418. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +0 -9
  419. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +0 -136
  420. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +0 -67
  421. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +0 -68
  422. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +0 -48
  423. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +0 -68
  424. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +0 -101
  425. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +0 -64
  426. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +0 -78
  427. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +0 -11
  428. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +0 -115
  429. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +0 -42
  430. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +0 -47
  431. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +0 -134
  432. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +0 -450
  433. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +0 -154
  434. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +0 -9
  435. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +0 -24
  436. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +0 -4
  437. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +0 -17
  438. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +0 -18
  439. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +0 -37
  440. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +0 -57
  441. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +0 -4
  442. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +0 -15
  443. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +0 -580
  444. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +0 -9
  445. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +0 -224
  446. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +0 -4
  447. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +0 -64
  448. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +0 -504
  449. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +0 -113
  450. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +0 -601
  451. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +0 -201
  452. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +0 -34
  453. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +0 -9
  454. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +0 -1
  455. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/LICENSE +0 -202
  456. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/i18n-impl.js +0 -46
  457. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/i18n.js +0 -6
  458. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/localized-string-set.js +0 -122
  459. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/LICENSE +0 -33
  460. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/intl-messageformat.js +0 -5
  461. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/index.js +0 -13
  462. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +0 -1725
  463. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +0 -1840
  464. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/index.js +0 -10
  465. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/core.js +0 -233
  466. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/error.js +0 -48
  467. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +0 -177
  468. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/core.js +0 -236
  469. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/error.js +0 -51
  470. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/formatters.js +0 -182
  471. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +0 -202
  472. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +0 -2
  473. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +0 -940
  474. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/LICENSE +0 -39
  475. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/marked.js +0 -2
  476. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/bin/main.js +0 -255
  477. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/bin/marked.js +0 -11
  478. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.esm.js +0 -2695
  479. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.js +0 -2233
  480. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.umd.js +0 -2719
  481. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Lexer.js +0 -453
  482. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Parser.js +0 -233
  483. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Renderer.js +0 -137
  484. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Slugger.js +0 -46
  485. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/TextRenderer.js +0 -34
  486. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Tokenizer.js +0 -683
  487. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/defaults.js +0 -27
  488. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/helpers.js +0 -240
  489. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/marked.js +0 -318
  490. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/rules.js +0 -243
  491. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +0 -26
  492. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +0 -196
  493. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +0 -226
  494. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -4
  495. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +0 -394
  496. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +0 -24
  497. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +0 -283
  498. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +0 -7
  499. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +0 -9
  500. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +0 -84
  501. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +0 -4
  502. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +0 -20
  503. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +0 -146
  504. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +0 -2
  505. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +0 -2
  506. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +0 -118
  507. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +0 -40
  508. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +0 -26
  509. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +0 -4
  510. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +0 -215
  511. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +0 -4
  512. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +0 -4
  513. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +0 -4
  514. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +0 -2
  515. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +0 -2
  516. package/build/node_modules/chrome-devtools-frontend/mcp/HostBindings.js +0 -222
  517. package/build/node_modules/chrome-devtools-frontend/mcp/mcp.js +0 -35
  518. package/build/src/formatters/snapshotFormatter.js +0 -73
  519. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +0 -0
  520. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCorpNotSameOrigin.md +0 -0
  521. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +0 -0
  522. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepCorpNotSameSite.md +0 -0
  523. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CoepFrameResourceNeedsCoepHeader.md +0 -0
  524. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CompatibilityModeQuirks.md +0 -0
  525. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/CookieAttributeValueExceedsMaxSize.md +0 -0
  526. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/LowTextContrast.md +0 -0
  527. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteExcludeContextDowngradeRead.md +0 -0
  528. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteExcludeContextDowngradeSet.md +0 -0
  529. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteExcludeNavigationContextDowngrade.md +0 -0
  530. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureErrorRead.md +0 -0
  531. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureErrorSet.md +0 -0
  532. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureWarnRead.md +0 -0
  533. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteNoneInsecureWarnSet.md +0 -0
  534. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteUnspecifiedLaxAllowUnsafeRead.md +0 -0
  535. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteUnspecifiedLaxAllowUnsafeSet.md +0 -0
  536. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteWarnCrossDowngradeRead.md +0 -0
  537. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteWarnCrossDowngradeSet.md +0 -0
  538. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/SameSiteWarnStrictLaxDowngradeStrict.md +0 -0
  539. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInsecureContext.md +0 -0
  540. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidInfoHeader.md +0 -0
  541. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterOsSourceHeader.md +0 -0
  542. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterOsTriggerHeader.md +0 -0
  543. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterSourceHeader.md +0 -0
  544. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arInvalidRegisterTriggerHeader.md +0 -0
  545. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -0
  546. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNavigationRegistrationWithoutTransientUserActivation.md +0 -0
  547. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterOsSourceHeader.md +0 -0
  548. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterOsTriggerHeader.md +0 -0
  549. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterSourceHeader.md +0 -0
  550. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoRegisterTriggerHeader.md +0 -0
  551. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arNoWebOrOsSupport.md +0 -0
  552. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arOsSourceIgnored.md +0 -0
  553. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arOsTriggerIgnored.md +0 -0
  554. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arPermissionPolicyDisabled.md +0 -0
  555. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arSourceAndTriggerHeaders.md +0 -0
  556. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arSourceIgnored.md +0 -0
  557. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arTriggerIgnored.md +0 -0
  558. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arUntrustworthyReportingOrigin.md +0 -0
  559. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/arWebAndOsHeaders.md +0 -0
  560. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/bounceTrackingMitigations.md +0 -0
  561. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/clientHintMetaTagAllowListInvalidOrigin.md +0 -0
  562. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/clientHintMetaTagModifiedHTML.md +0 -0
  563. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieCrossSiteRedirectDowngrade.md +0 -0
  564. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeBlockedWithinRelatedWebsiteSet.md +0 -0
  565. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeDomainNonAscii.md +0 -0
  566. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludePortMismatch.md +0 -0
  567. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeSchemeMismatch.md +0 -0
  568. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeThirdPartyPhaseoutRead.md +0 -0
  569. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieExcludeThirdPartyPhaseoutSet.md +0 -0
  570. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnDomainNonAscii.md +0 -0
  571. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnMetadataGrantRead.md +0 -0
  572. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnMetadataGrantSet.md +0 -0
  573. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnThirdPartyPhaseoutRead.md +0 -0
  574. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cookieWarnThirdPartyPhaseoutSet.md +0 -0
  575. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsAllowCredentialsRequired.md +0 -0
  576. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsDisabledScheme.md +0 -0
  577. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsDisallowedByMode.md +0 -0
  578. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsHeaderDisallowedByPreflightResponse.md +0 -0
  579. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsInsecurePrivateNetwork.md +0 -0
  580. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsInvalidHeaderValues.md +0 -0
  581. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsLocalNetworkAccessPermissionDenied.md +0 -0
  582. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsMethodDisallowedByPreflightResponse.md +0 -0
  583. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsNoCorsRedirectModeNotFollow.md +0 -0
  584. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsOriginMismatch.md +0 -0
  585. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsPreflightAllowPrivateNetworkError.md +0 -0
  586. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsPreflightResponseInvalid.md +0 -0
  587. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsPrivateNetworkPermissionDenied.md +0 -0
  588. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsRedirectContainsCredentials.md +0 -0
  589. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/corsWildcardOriginNotAllowed.md +0 -0
  590. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspEvalViolation.md +0 -0
  591. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspInlineViolation.md +0 -0
  592. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspTrustedTypesPolicyViolation.md +0 -0
  593. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspTrustedTypesSinkViolation.md +0 -0
  594. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/cspURLViolation.md +0 -0
  595. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/deprecation.md +0 -0
  596. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestAccountsHttpNotFound.md +0 -0
  597. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestAccountsInvalidResponse.md +0 -0
  598. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestAccountsNoResponse.md +0 -0
  599. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestApprovalDeclined.md +0 -0
  600. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestCanceled.md +0 -0
  601. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestClientMetadataHttpNotFound.md +0 -0
  602. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestClientMetadataInvalidResponse.md +0 -0
  603. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestClientMetadataNoResponse.md +0 -0
  604. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestErrorFetchingSignin.md +0 -0
  605. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestErrorIdToken.md +0 -0
  606. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenHttpNotFound.md +0 -0
  607. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenInvalidRequest.md +0 -0
  608. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenInvalidResponse.md +0 -0
  609. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestIdTokenNoResponse.md +0 -0
  610. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestInvalidSigninResponse.md +0 -0
  611. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestManifestHttpNotFound.md +0 -0
  612. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestManifestInvalidResponse.md +0 -0
  613. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestManifestNoResponse.md +0 -0
  614. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthRequestTooManyRequests.md +0 -0
  615. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestInvalidAccountsResponse.md +0 -0
  616. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +0 -0
  617. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNoAccountSharingPermission.md +0 -0
  618. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNoApiPermission.md +0 -0
  619. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +0 -0
  620. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotIframe.md +0 -0
  621. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +0 -0
  622. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotSameOrigin.md +0 -0
  623. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/federatedAuthUserInfoRequestNotSignedInWithIdp.md +0 -0
  624. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/fetchingPartitionedBlobURL.md +0 -0
  625. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormAriaLabelledByToNonExistingIdError.md +0 -0
  626. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormAutocompleteAttributeEmptyError.md +0 -0
  627. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormDuplicateIdForInputError.md +0 -0
  628. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormEmptyIdAndNameAttributesForInputError.md +0 -0
  629. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +0 -0
  630. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +0 -0
  631. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormInputWithNoLabelError.md +0 -0
  632. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormLabelForMatchesNonExistingIdError.md +0 -0
  633. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormLabelForNameError.md +0 -0
  634. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericFormLabelHasNeitherForNorNestedInputError.md +0 -0
  635. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericNavigationEntryMarkedSkippable.md +0 -0
  636. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/genericResponseWasBlockedByORB.md +0 -0
  637. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/heavyAd.md +0 -0
  638. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/mixedContent.md +0 -0
  639. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/navigatingPartitionedBlobURL.md +0 -0
  640. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/placeholderDescriptionForInvisibleIssues.md +0 -0
  641. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/propertyRuleInvalidNameIssue.md +0 -0
  642. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/propertyRuleIssue.md +0 -0
  643. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityDisallowedOptGroupChild.md +0 -0
  644. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityDisallowedSelectChild.md +0 -0
  645. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +0 -0
  646. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityInteractiveContentLegendChild.md +0 -0
  647. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityInteractiveContentOptionChild.md +0 -0
  648. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/selectElementAccessibilityNonPhrasingContentOptionChild.md +0 -0
  649. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedArrayBuffer.md +0 -0
  650. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +0 -0
  651. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorDictionaryLoadFailure.md +0 -0
  652. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +0 -0
  653. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +0 -0
  654. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +0 -0
  655. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorDisallowedBySettings.md +0 -0
  656. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorExpiredResponse.md +0 -0
  657. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorFeatureDisabled.md +0 -0
  658. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInsufficientResources.md +0 -0
  659. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInvalidMatchField.md +0 -0
  660. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInvalidStructuredHeader.md +0 -0
  661. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorInvalidTTLField.md +0 -0
  662. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNavigationRequest.md +0 -0
  663. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNoMatchField.md +0 -0
  664. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonIntegerTTLField.md +0 -0
  665. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonListMatchDestField.md +0 -0
  666. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonSecureContext.md +0 -0
  667. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonStringIdField.md +0 -0
  668. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonStringInMatchDestList.md +0 -0
  669. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonStringMatchField.md +0 -0
  670. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorNonTokenTypeField.md +0 -0
  671. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorRequestAborted.md +0 -0
  672. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorShuttingDown.md +0 -0
  673. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorTooLongIdField.md +0 -0
  674. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sharedDictionaryWriteErrorUnsupportedType.md +0 -0
  675. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriInvalidSignatureHeader.md +0 -0
  676. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriInvalidSignatureInputHeader.md +0 -0
  677. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriMissingSignatureHeader.md +0 -0
  678. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriMissingSignatureInputHeader.md +0 -0
  679. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureHeaderValueIsIncorrectLength.md +0 -0
  680. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureHeaderValueIsNotByteSequence.md +0 -0
  681. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureHeaderValueIsParameterized.md +0 -0
  682. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidComponentName.md +0 -0
  683. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidComponentType.md +0 -0
  684. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +0 -0
  685. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +0 -0
  686. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderInvalidParameter.md +0 -0
  687. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderKeyIdLength.md +0 -0
  688. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderMissingLabel.md +0 -0
  689. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderMissingRequiredParameters.md +0 -0
  690. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderValueMissingComponents.md +0 -0
  691. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriSignatureInputHeaderValueNotInnerList.md +0 -0
  692. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedIntegrityMismatch.md +0 -0
  693. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedInvalidLength.md +0 -0
  694. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedSignatureExpired.md +0 -0
  695. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/sriValidationFailedSignatureMismatch.md +0 -0
  696. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/stylesheetLateImport.md +0 -0
  697. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/stylesheetRequestFailed.md +0 -0
  698. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +0 -0
  699. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestIncorrectDigestLength.md +0 -0
  700. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestIncorrectDigestType.md +0 -0
  701. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestMalformedDictionary.md +0 -0
  702. /package/build/{node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions → src/third_party/issue-descriptions}/unencodedDigestUnknownAlgorithm.md +0 -0
@@ -1,995 +0,0 @@
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
- import * as Trace from '../../trace/trace.js';
6
- import { PerformanceTraceFormatter } from './PerformanceTraceFormatter.js';
7
- import { bytes, millis } from './UnitFormatters.js';
8
- /**
9
- * For a given frame ID and navigation ID, returns the LCP Event and the LCP Request, if the resource was an image.
10
- */
11
- function getLCPData(parsedTrace, frameId, navigationId) {
12
- const navMetrics = parsedTrace.data.PageLoadMetrics.metricScoresByFrameId.get(frameId)?.get(navigationId);
13
- if (!navMetrics) {
14
- return null;
15
- }
16
- const metric = navMetrics.get("LCP" /* Trace.Handlers.ModelHandlers.PageLoadMetrics.MetricName.LCP */);
17
- if (!metric || !Trace.Handlers.ModelHandlers.PageLoadMetrics.metricIsLCP(metric)) {
18
- return null;
19
- }
20
- const lcpEvent = metric?.event;
21
- if (!lcpEvent || !Trace.Types.Events.isLargestContentfulPaintCandidate(lcpEvent)) {
22
- return null;
23
- }
24
- return {
25
- lcpEvent,
26
- lcpRequest: parsedTrace.data.LargestImagePaint.lcpRequestByNavigationId.get(navigationId),
27
- metricScore: metric,
28
- };
29
- }
30
- export class PerformanceInsightFormatter {
31
- #traceFormatter;
32
- #insight;
33
- #parsedTrace;
34
- constructor(focus, insight) {
35
- this.#traceFormatter = new PerformanceTraceFormatter(focus);
36
- this.#insight = insight;
37
- this.#parsedTrace = focus.parsedTrace;
38
- }
39
- #formatMilli(x) {
40
- if (x === undefined) {
41
- return '';
42
- }
43
- return millis(x);
44
- }
45
- #formatMicro(x) {
46
- if (x === undefined) {
47
- return '';
48
- }
49
- return this.#formatMilli(Trace.Helpers.Timing.microToMilli(x));
50
- }
51
- #formatRequestUrl(request) {
52
- return `${request.args.data.url} ${this.#traceFormatter.serializeEvent(request)}`;
53
- }
54
- #formatScriptUrl(script) {
55
- if (script.request) {
56
- return this.#formatRequestUrl(script.request);
57
- }
58
- return script.url ?? script.sourceUrl ?? script.scriptId;
59
- }
60
- #formatUrl(url) {
61
- const request = this.#parsedTrace.data.NetworkRequests.byTime.find(request => request.args.data.url === url);
62
- if (request) {
63
- return this.#formatRequestUrl(request);
64
- }
65
- return url;
66
- }
67
- /**
68
- * Information about LCP which we pass to the LLM for all insights that relate to LCP.
69
- */
70
- #lcpMetricSharedContext() {
71
- if (!this.#insight.navigationId) {
72
- // No navigation ID = no LCP.
73
- return '';
74
- }
75
- if (!this.#insight.frameId || !this.#insight.navigationId) {
76
- return '';
77
- }
78
- const data = getLCPData(this.#parsedTrace, this.#insight.frameId, this.#insight.navigationId);
79
- if (!data) {
80
- return '';
81
- }
82
- const { metricScore, lcpRequest, lcpEvent } = data;
83
- const theLcpElement = lcpEvent.args.data?.nodeName ?
84
- `The LCP element (${lcpEvent.args.data.nodeName}, nodeId: ${lcpEvent.args.data.nodeId})` :
85
- 'The LCP element';
86
- const parts = [
87
- `The Largest Contentful Paint (LCP) time for this navigation was ${this.#formatMicro(metricScore.timing)}.`,
88
- ];
89
- if (lcpRequest) {
90
- parts.push(`${theLcpElement} is an image fetched from ${this.#formatRequestUrl(lcpRequest)}.`);
91
- const request = this.#traceFormatter.formatNetworkRequests([lcpRequest], { verbose: true, customTitle: 'LCP resource network request' });
92
- parts.push(request);
93
- }
94
- else {
95
- parts.push(`${theLcpElement} is text and was not fetched from the network.`);
96
- }
97
- return parts.join('\n');
98
- }
99
- insightIsSupported() {
100
- // Although our types don't show it, Insights can end up as Errors if there
101
- // is an issue in the processing stage. In this case we should gracefully
102
- // ignore this error.
103
- if (this.#insight instanceof Error) {
104
- return false;
105
- }
106
- return this.#description().length > 0;
107
- }
108
- getSuggestions() {
109
- switch (this.#insight.insightKey) {
110
- case 'CLSCulprits':
111
- return [
112
- { title: 'Help me optimize my CLS score' },
113
- { title: 'How can I prevent layout shifts on this page?' },
114
- ];
115
- case 'DocumentLatency':
116
- return [
117
- { title: 'How do I decrease the initial loading time of my page?' },
118
- { title: 'Did anything slow down the request for this document?' },
119
- ];
120
- case 'DOMSize':
121
- return [{ title: 'How can I reduce the size of my DOM?' }];
122
- case 'DuplicatedJavaScript':
123
- return [
124
- { title: 'How do I deduplicate the identified scripts in my bundle?' },
125
- { title: 'Which duplicated JavaScript modules are the most problematic?' }
126
- ];
127
- case 'FontDisplay':
128
- return [
129
- { title: 'How can I update my CSS to avoid layout shifts caused by incorrect `font-display` properties?' }
130
- ];
131
- case 'ForcedReflow':
132
- return [
133
- { title: 'How can I avoid forced reflows and layout thrashing?' },
134
- { title: 'What is forced reflow and why is it problematic?' }
135
- ];
136
- case 'ImageDelivery':
137
- return [
138
- { title: 'What should I do to improve and optimize the time taken to fetch and display images on the page?' },
139
- { title: 'Are all images on my site optimized?' },
140
- ];
141
- case 'INPBreakdown':
142
- return [
143
- { title: 'Suggest fixes for my longest interaction' }, { title: 'Why is a large INP score problematic?' },
144
- { title: 'What\'s the biggest contributor to my longest interaction?' }
145
- ];
146
- case 'LCPDiscovery':
147
- return [
148
- { title: 'Suggest fixes to reduce my LCP' }, { title: 'What can I do to reduce my LCP discovery time?' },
149
- { title: 'Why is LCP discovery time important?' }
150
- ];
151
- case 'LCPBreakdown':
152
- return [
153
- { title: 'Help me optimize my LCP score' }, { title: 'Which LCP phase was most problematic?' },
154
- { title: 'What can I do to reduce the LCP time for this page load?' }
155
- ];
156
- case 'NetworkDependencyTree':
157
- return [{ title: 'How do I optimize my network dependency tree?' }];
158
- case 'RenderBlocking':
159
- return [
160
- { title: 'Show me the most impactful render blocking requests that I should focus on' },
161
- { title: 'How can I reduce the number of render blocking requests?' }
162
- ];
163
- case 'SlowCSSSelector':
164
- return [{ title: 'How can I optimize my CSS to increase the performance of CSS selectors?' }];
165
- case 'ThirdParties':
166
- return [{ title: 'Which third parties are having the largest impact on my page performance?' }];
167
- case 'Cache':
168
- return [{ title: 'What caching strategies can I apply to improve my page performance?' }];
169
- case 'Viewport':
170
- return [{ title: 'How do I make sure my page is optimized for mobile viewing?' }];
171
- case 'ModernHTTP':
172
- return [
173
- { title: 'Is my site using the best HTTP practices?' },
174
- { title: 'Which resources are not using a modern HTTP protocol?' },
175
- ];
176
- case 'LegacyJavaScript':
177
- return [
178
- { title: 'Is my site polyfilling modern JavaScript features?' },
179
- { title: 'How can I reduce the amount of legacy JavaScript on my page?' },
180
- ];
181
- default:
182
- throw new Error('Unknown insight key');
183
- }
184
- }
185
- /**
186
- * Create an AI prompt string out of the Cache Insight model to use with Ask AI.
187
- * Note: This function accesses the UIStrings within Cache to help build the
188
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
189
- * should all be sent in English (at least for now).
190
- * @param insight The Cache Insight Model to query.
191
- * @returns a string formatted for sending to Ask AI.
192
- */
193
- formatCacheInsight(insight) {
194
- if (insight.requests.length === 0) {
195
- return Trace.Insights.Models.Cache.UIStrings.noRequestsToCache + '.';
196
- }
197
- let output = 'The following resources were associated with ineffficient cache policies:\n';
198
- for (const entry of insight.requests) {
199
- output += `\n- ${this.#formatRequestUrl(entry.request)}`;
200
- output += `\n - Cache Time to Live (TTL): ${entry.ttl} seconds`;
201
- output += `\n - Wasted bytes: ${bytes(entry.wastedBytes)}`;
202
- }
203
- output += '\n\n' + Trace.Insights.Models.Cache.UIStrings.description;
204
- return output;
205
- }
206
- #formatLayoutShift(shift, index, rootCauses) {
207
- const baseTime = this.#parsedTrace.data.Meta.traceBounds.min;
208
- const potentialRootCauses = [];
209
- if (rootCauses) {
210
- rootCauses.iframes.forEach(iframe => potentialRootCauses.push(`- An iframe (id: ${iframe.frame}, url: ${iframe.url ?? 'unknown'} was injected into the page)`));
211
- rootCauses.webFonts.forEach(req => {
212
- potentialRootCauses.push(`- A font that was loaded over the network: ${this.#formatRequestUrl(req)}.`);
213
- });
214
- rootCauses.nonCompositedAnimations.forEach(nonCompositedFailure => {
215
- potentialRootCauses.push('- A non-composited animation:');
216
- const animationInfoOutput = [];
217
- potentialRootCauses.push(`- non-composited animation: \`${nonCompositedFailure.name || '(unnamed)'}\``);
218
- if (nonCompositedFailure.name) {
219
- animationInfoOutput.push(`Animation name: ${nonCompositedFailure.name}`);
220
- }
221
- if (nonCompositedFailure.unsupportedProperties) {
222
- animationInfoOutput.push('Unsupported CSS properties:');
223
- animationInfoOutput.push('- ' + nonCompositedFailure.unsupportedProperties.join(', '));
224
- }
225
- animationInfoOutput.push('Failure reasons:');
226
- animationInfoOutput.push(' - ' + nonCompositedFailure.failureReasons.join(', '));
227
- // Extra padding to the detail to not mess up the indentation.
228
- potentialRootCauses.push(animationInfoOutput.map(l => ' '.repeat(4) + l).join('\n'));
229
- });
230
- rootCauses.unsizedImages.forEach(img => {
231
- // TODO(b/413284569): if we store a nice human readable name for this
232
- // image in the trace metadata, we can do something much nicer here.
233
- const url = img.paintImageEvent.args.data.url;
234
- const nodeName = img.paintImageEvent.args.data.nodeName;
235
- const extraText = url ? `url: ${this.#formatUrl(url)}` : `id: ${img.backendNodeId}`;
236
- potentialRootCauses.push(`- An unsized image (${nodeName}) (${extraText}).`);
237
- });
238
- }
239
- const rootCauseText = potentialRootCauses.length ? `- Potential root causes:\n ${potentialRootCauses.join('\n')}` :
240
- '- No potential root causes identified';
241
- const startTime = Trace.Helpers.Timing.microToMilli(Trace.Types.Timing.Micro(shift.ts - baseTime));
242
- const impactedNodeNames = shift.rawSourceEvent.args.data?.impacted_nodes?.map(n => n.debug_name).filter(name => name !== undefined) ?? [];
243
- const impactedNodeText = impactedNodeNames.length ? `\n- Impacted elements:\n - ${impactedNodeNames.join('\n - ')}\n` : '';
244
- return `### Layout shift ${index + 1}:${impactedNodeText}
245
- - Start time: ${millis(startTime)}
246
- - Score: ${shift.args.data?.weighted_score_delta.toFixed(4)}
247
- ${rootCauseText}`;
248
- }
249
- /**
250
- * Create an AI prompt string out of the CLS Culprits Insight model to use with Ask AI.
251
- * @param insight The CLS Culprits Model to query.
252
- * @returns a string formatted for sending to Ask AI.
253
- */
254
- formatClsCulpritsInsight(insight) {
255
- const { worstCluster, shifts } = insight;
256
- if (!worstCluster) {
257
- return 'No layout shifts were found.';
258
- }
259
- const baseTime = this.#parsedTrace.data.Meta.traceBounds.min;
260
- const clusterTimes = {
261
- start: worstCluster.ts - baseTime,
262
- end: worstCluster.ts + worstCluster.dur - baseTime,
263
- };
264
- const shiftsFormatted = worstCluster.events.map((layoutShift, index) => {
265
- return this.#formatLayoutShift(layoutShift, index, shifts.get(layoutShift));
266
- });
267
- return `The worst layout shift cluster was the cluster that started at ${this.#formatMicro(clusterTimes.start)} and ended at ${this.#formatMicro(clusterTimes.end)}, with a duration of ${this.#formatMicro(worstCluster.dur)}.
268
- The score for this cluster is ${worstCluster.clusterCumulativeScore.toFixed(4)}.
269
-
270
- Layout shifts in this cluster:
271
- ${shiftsFormatted.join('\n')}`;
272
- }
273
- /**
274
- * Create an AI prompt string out of the Document Latency Insight model to use with Ask AI.
275
- * @param insight The Document Latency Model to query.
276
- * @returns a string formatted for sending to Ask AI.
277
- */
278
- formatDocumentLatencyInsight(insight) {
279
- if (!insight.data) {
280
- return '';
281
- }
282
- const { checklist, documentRequest } = insight.data;
283
- if (!documentRequest) {
284
- return '';
285
- }
286
- const checklistBulletPoints = [];
287
- checklistBulletPoints.push({
288
- name: 'The request was not redirected',
289
- passed: checklist.noRedirects.value,
290
- });
291
- checklistBulletPoints.push({
292
- name: 'Server responded quickly',
293
- passed: checklist.serverResponseIsFast.value,
294
- });
295
- checklistBulletPoints.push({
296
- name: 'Compression was applied',
297
- passed: checklist.usesCompression.value,
298
- });
299
- return `${this.#lcpMetricSharedContext()}
300
-
301
- ${this.#traceFormatter.formatNetworkRequests([documentRequest], {
302
- verbose: true,
303
- customTitle: 'Document network request'
304
- })}
305
-
306
- The result of the checks for this insight are:
307
- ${checklistBulletPoints.map(point => `- ${point.name}: ${point.passed ? 'PASSED' : 'FAILED'}`).join('\n')}`;
308
- }
309
- /**
310
- * Create an AI prompt string out of the DOM Size model to use with Ask AI.
311
- * Note: This function accesses the UIStrings within DomSize to help build the
312
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
313
- * should all be sent in English (at least for now).
314
- * @param insight The DOM Size Insight Model to query.
315
- * @returns a string formatted for sending to Ask AI.
316
- */
317
- formatDomSizeInsight(insight) {
318
- if (insight.state === 'pass') {
319
- return 'No DOM size issues were detected.';
320
- }
321
- let output = Trace.Insights.Models.DOMSize.UIStrings.description + '\n';
322
- if (insight.maxDOMStats) {
323
- output += '\n' + Trace.Insights.Models.DOMSize.UIStrings.statistic + ':\n\n';
324
- const maxDepthStats = insight.maxDOMStats.args.data.maxDepth;
325
- const maxChildrenStats = insight.maxDOMStats.args.data.maxChildren;
326
- output += Trace.Insights.Models.DOMSize.UIStrings.totalElements + ': ' +
327
- insight.maxDOMStats.args.data.totalElements + '.\n';
328
- if (maxDepthStats) {
329
- output += Trace.Insights.Models.DOMSize.UIStrings.maxDOMDepth + ': ' + maxDepthStats.depth +
330
- ` nodes, starting with element '${maxDepthStats.nodeName}'` +
331
- ' (node id: ' + maxDepthStats.nodeId + ').\n';
332
- }
333
- if (maxChildrenStats) {
334
- output += Trace.Insights.Models.DOMSize.UIStrings.maxChildren + ': ' + maxChildrenStats.numChildren +
335
- `, for parent '${maxChildrenStats.nodeName}'` +
336
- ' (node id: ' + maxChildrenStats.nodeId + ').\n';
337
- }
338
- }
339
- if (insight.largeLayoutUpdates.length > 0 || insight.largeStyleRecalcs.length > 0) {
340
- output += `\nLarge layout updates/style calculations:\n`;
341
- }
342
- if (insight.largeLayoutUpdates.length > 0) {
343
- for (const update of insight.largeLayoutUpdates) {
344
- output += `\n - Layout update: Duration: ${this.#formatMicro(update.dur)},`;
345
- output += ` with ${update.args.beginData.dirtyObjects} of ${update.args.beginData.totalObjects} nodes needing layout.`;
346
- }
347
- }
348
- if (insight.largeStyleRecalcs.length > 0) {
349
- for (const recalc of insight.largeStyleRecalcs) {
350
- output += `\n - Style recalculation: Duration: ${this.#formatMicro(recalc.dur)}, `;
351
- output += `with ${recalc.args.elementCount} elements affected.`;
352
- }
353
- }
354
- return output;
355
- }
356
- /**
357
- * Create an AI prompt string out of the Duplicated JavaScript Insight model to use with Ask AI.
358
- * @param insight The Duplicated JavaScript Model to query.
359
- * @returns a string formatted for sending to Ask AI.
360
- */
361
- formatDuplicatedJavaScriptInsight(insight) {
362
- const totalWastedBytes = insight.wastedBytes;
363
- const duplicatedScriptsByModule = insight.duplicationGroupedByNodeModules;
364
- if (duplicatedScriptsByModule.size === 0) {
365
- return 'There is no duplicated JavaScript in the page modules';
366
- }
367
- const filesFormatted = Array.from(duplicatedScriptsByModule)
368
- .map(([module, duplication]) => `- Source: ${module} - Duplicated bytes: ${duplication.estimatedDuplicateBytes} bytes`)
369
- .join('\n');
370
- return `Total wasted bytes: ${totalWastedBytes} bytes.
371
-
372
- Duplication grouped by Node modules: ${filesFormatted}`;
373
- }
374
- /**
375
- * Create an AI prompt string out of the NetworkDependencyTree Insight model to use with Ask AI.
376
- * Note: This function accesses the UIStrings within NetworkDependencyTree to help build the
377
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
378
- * should all be sent in English (at least for now).
379
- * @param insight The Network Dependency Tree Insight Model to query.
380
- * @returns a string formatted for sending to Ask AI.
381
- */
382
- formatFontDisplayInsight(insight) {
383
- if (insight.fonts.length === 0) {
384
- return 'No font display issues were detected.';
385
- }
386
- let output = 'The following font display issues were found:\n';
387
- for (const font of insight.fonts) {
388
- let fontName = font.name;
389
- if (!fontName) {
390
- const url = new Common.ParsedURL.ParsedURL(font.request.args.data.url);
391
- fontName = url.isValid ? url.lastPathComponent : '(not available)';
392
- }
393
- output += `\n - Font name: ${fontName}, URL: ${this.#formatRequestUrl(font.request)}, Property 'font-display' set to: '${font.display}', Wasted time: ${this.#formatMilli(font.wastedTime)}.`;
394
- }
395
- output += '\n\n' + Trace.Insights.Models.FontDisplay.UIStrings.description;
396
- return output;
397
- }
398
- /**
399
- * Create an AI prompt string out of the Forced Reflow Insight model to use with Ask AI.
400
- * Note: This function accesses the UIStrings within ForcedReflow model to help build the
401
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
402
- * should all be sent in English (at least for now).
403
- * @param insight The ForcedReflow Insight Model to query.
404
- * @returns a string formatted for sending to Ask AI.
405
- */
406
- formatForcedReflowInsight(insight) {
407
- let output = Trace.Insights.Models.ForcedReflow.UIStrings.description + '\n\n';
408
- if (insight.topLevelFunctionCallData || insight.aggregatedBottomUpData.length > 0) {
409
- output += 'The forced reflow checks revealed one or more problems.\n\n';
410
- }
411
- else {
412
- output += 'The forced reflow checks revealed no problems.';
413
- return output;
414
- }
415
- function callFrameToString(frame) {
416
- if (frame === null) {
417
- return Trace.Insights.Models.ForcedReflow.UIStrings.unattributed;
418
- }
419
- let result = `${frame.functionName || Trace.Insights.Models.ForcedReflow.UIStrings.anonymous}`;
420
- if (frame.url) {
421
- result += ` @ ${frame.url}:${frame.lineNumber}:${frame.columnNumber}`;
422
- }
423
- else {
424
- result += ' @ unknown location';
425
- }
426
- return result;
427
- }
428
- if (insight.topLevelFunctionCallData) {
429
- output += 'The following is the top function call that caused forced reflow(s):\n\n';
430
- output += ' - ' + callFrameToString(insight.topLevelFunctionCallData.topLevelFunctionCall);
431
- output += `\n\n${Trace.Insights.Models.ForcedReflow.UIStrings.totalReflowTime}: ${this.#formatMicro(insight.topLevelFunctionCallData.totalReflowTime)}\n`;
432
- }
433
- else {
434
- output += 'No top-level functions causing forced reflows were identified.\n';
435
- }
436
- if (insight.aggregatedBottomUpData.length > 0) {
437
- output += '\n' + Trace.Insights.Models.ForcedReflow.UIStrings.reflowCallFrames + ' (including total time):\n';
438
- for (const data of insight.aggregatedBottomUpData) {
439
- output += `\n - ${this.#formatMicro(data.totalTime)} in ${callFrameToString(data.bottomUpData)}`;
440
- }
441
- }
442
- else {
443
- output += '\nNo aggregated bottom-up causes of forced reflows were identified.';
444
- }
445
- return output;
446
- }
447
- /**
448
- * Create an AI prompt string out of the INP Brekdown Insight model to use with Ask AI.
449
- * @param insight The INP Breakdown Model to query.
450
- * @returns a string formatted for sending to Ask AI.
451
- */
452
- formatImageDeliveryInsight(insight) {
453
- const optimizableImages = insight.optimizableImages;
454
- if (optimizableImages.length === 0) {
455
- return 'There are no unoptimized images on this page.';
456
- }
457
- const imageDetails = optimizableImages
458
- .map(image => {
459
- // List potential optimizations for the image
460
- const optimizations = image.optimizations
461
- .map(optimization => {
462
- const message = Trace.Insights.Models.ImageDelivery.getOptimizationMessage(optimization);
463
- const byteSavings = bytes(optimization.byteSavings);
464
- return `${message} (Est ${byteSavings})`;
465
- })
466
- .join('\n');
467
- return `### ${this.#formatRequestUrl(image.request)}
468
- - Potential savings: ${bytes(image.byteSavings)}
469
- - Optimizations:\n${optimizations}`;
470
- })
471
- .join('\n\n');
472
- return `Total potential savings: ${bytes(insight.wastedBytes)}
473
-
474
- The following images could be optimized:\n\n${imageDetails}`;
475
- }
476
- /**
477
- * Create an AI prompt string out of the INP Brekdown Insight model to use with Ask AI.
478
- * @param insight The INP Breakdown Model to query.
479
- * @returns a string formatted for sending to Ask AI.
480
- */
481
- formatInpBreakdownInsight(insight) {
482
- const event = insight.longestInteractionEvent;
483
- if (!event) {
484
- return '';
485
- }
486
- const inpInfoForEvent = `The longest interaction on the page was a \`${event.type}\` which had a total duration of \`${this.#formatMicro(event.dur)}\`. The timings of each of the three phases were:
487
-
488
- 1. Input delay: ${this.#formatMicro(event.inputDelay)}
489
- 2. Processing duration: ${this.#formatMicro(event.mainThreadHandling)}
490
- 3. Presentation delay: ${this.#formatMicro(event.presentationDelay)}.`;
491
- return inpInfoForEvent;
492
- }
493
- /**
494
- * Create an AI prompt string out of the LCP Brekdown Insight model to use with Ask AI.
495
- * @param insight The LCP Breakdown Model to query.
496
- * @returns a string formatted for sending to Ask AI.
497
- */
498
- formatLcpBreakdownInsight(insight) {
499
- const { subparts, lcpMs } = insight;
500
- if (!lcpMs || !subparts) {
501
- return '';
502
- }
503
- // Text based LCP has TTFB & Render delay
504
- // Image based has TTFB, Load delay, Load time and Render delay
505
- // Note that we expect every trace + LCP to have TTFB + Render delay, but
506
- // very old traces are missing the data, so we have to code defensively
507
- // in case the subparts are not present.
508
- const phaseBulletPoints = [];
509
- Object.values(subparts).forEach((subpart) => {
510
- const phaseMilli = Trace.Helpers.Timing.microToMilli(subpart.range);
511
- const percentage = (phaseMilli / lcpMs * 100).toFixed(1);
512
- phaseBulletPoints.push({ name: subpart.label, value: this.#formatMilli(phaseMilli), percentage });
513
- });
514
- return `${this.#lcpMetricSharedContext()}
515
-
516
- We can break this time down into the ${phaseBulletPoints.length} phases that combine to make the LCP time:
517
-
518
- ${phaseBulletPoints.map(phase => `- ${phase.name}: ${phase.value} (${phase.percentage}% of total LCP time)`)
519
- .join('\n')}`;
520
- }
521
- /**
522
- * Create an AI prompt string out of the LCP Brekdown Insight model to use with Ask AI.
523
- * @param insight The LCP Breakdown Model to query.
524
- * @returns a string formatted for sending to Ask AI.
525
- */
526
- formatLcpDiscoveryInsight(insight) {
527
- const { checklist, lcpEvent, lcpRequest, earliestDiscoveryTimeTs } = insight;
528
- if (!checklist || !lcpEvent || !lcpRequest || !earliestDiscoveryTimeTs) {
529
- return '';
530
- }
531
- const checklistBulletPoints = [];
532
- checklistBulletPoints.push({
533
- name: checklist.priorityHinted.label,
534
- passed: checklist.priorityHinted.value,
535
- });
536
- checklistBulletPoints.push({
537
- name: checklist.eagerlyLoaded.label,
538
- passed: checklist.eagerlyLoaded.value,
539
- });
540
- checklistBulletPoints.push({
541
- name: checklist.requestDiscoverable.label,
542
- passed: checklist.requestDiscoverable.value,
543
- });
544
- return `${this.#lcpMetricSharedContext()}
545
-
546
- The result of the checks for this insight are:
547
- ${checklistBulletPoints.map(point => `- ${point.name}: ${point.passed ? 'PASSED' : 'FAILED'}`).join('\n')}`;
548
- }
549
- /**
550
- * Create an AI prompt string out of the Legacy JavaScript Insight model to use with Ask AI.
551
- * @param insight The Legacy JavaScript Model to query.
552
- * @returns a string formatted for sending to Ask AI.
553
- */
554
- formatLegacyJavaScriptInsight(insight) {
555
- const legacyJavaScriptResults = insight.legacyJavaScriptResults;
556
- if (legacyJavaScriptResults.size === 0) {
557
- return 'There is no significant amount of legacy JavaScript on the page.';
558
- }
559
- const filesFormatted = Array.from(legacyJavaScriptResults)
560
- .map(([script, result]) => `\n- Script: ${this.#formatScriptUrl(script)} - Wasted bytes: ${result.estimatedByteSavings} bytes
561
- Matches:
562
- ${result.matches.map(match => `Line: ${match.line}, Column: ${match.column}, Name: ${match.name}`).join('\n')}`)
563
- .join('\n');
564
- return `Total legacy JavaScript: ${legacyJavaScriptResults.size} files.
565
-
566
- Legacy JavaScript by file:
567
- ${filesFormatted}`;
568
- }
569
- /**
570
- * Create an AI prompt string out of the Modern HTTP Insight model to use with Ask AI.
571
- * @param insight The Modern HTTP Model to query.
572
- * @returns a string formatted for sending to Ask AI.
573
- */
574
- formatModernHttpInsight(insight) {
575
- const requestSummary = (insight.http1Requests.length === 1) ?
576
- this.#traceFormatter.formatNetworkRequests(insight.http1Requests, { verbose: true }) :
577
- this.#traceFormatter.formatNetworkRequests(insight.http1Requests);
578
- if (requestSummary.length === 0) {
579
- return 'There are no requests that were served over a legacy HTTP protocol.';
580
- }
581
- return `Here is a list of the network requests that were served over a legacy HTTP protocol:
582
- ${requestSummary}`;
583
- }
584
- /**
585
- * Create an AI prompt string out of the NetworkDependencyTree Insight model to use with Ask AI.
586
- * Note: This function accesses the UIStrings within NetworkDependencyTree to help build the
587
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
588
- * should all be sent in English (at least for now).
589
- * @param insight The Network Dependency Tree Insight Model to query.
590
- * @returns a string formatted for sending to Ask AI.
591
- */
592
- formatNetworkDependencyTreeInsight(insight) {
593
- let output = insight.fail ?
594
- 'The network dependency tree checks found one or more problems.\n\n' :
595
- 'The network dependency tree checks revealed no problems, but optimization suggestions may be available.\n\n';
596
- const rootNodes = insight.rootNodes;
597
- if (rootNodes.length > 0) {
598
- output += `Max critical path latency is ${this.#formatMicro(insight.maxTime)}\n\n`;
599
- output += 'The following is the critical request chain:\n';
600
- function formatNode(node, indent) {
601
- const url = this.#formatRequestUrl(node.request);
602
- const time = this.#formatMicro(node.timeFromInitialRequest);
603
- const isLongest = node.isLongest ? ' (longest chain)' : '';
604
- let nodeString = `${indent}- ${url} (${time})${isLongest}\n`;
605
- for (const child of node.children) {
606
- nodeString += formatNode.call(this, child, indent + ' ');
607
- }
608
- return nodeString;
609
- }
610
- for (const rootNode of rootNodes) {
611
- output += formatNode.call(this, rootNode, '');
612
- }
613
- output += '\n';
614
- }
615
- else {
616
- output += `${Trace.Insights.Models.NetworkDependencyTree.UIStrings.noNetworkDependencyTree}.\n\n`;
617
- }
618
- if (insight.preconnectedOrigins?.length > 0) {
619
- output += `${Trace.Insights.Models.NetworkDependencyTree.UIStrings.preconnectOriginsTableTitle}:\n`;
620
- output += `${Trace.Insights.Models.NetworkDependencyTree.UIStrings.preconnectOriginsTableDescription}\n`;
621
- for (const origin of insight.preconnectedOrigins) {
622
- const headerText = 'headerText' in origin ? `'${origin.headerText}'` : ``;
623
- output += `
624
- - ${origin.url}
625
- - ${Trace.Insights.Models.NetworkDependencyTree.UIStrings.columnSource}: '${origin.source}'`;
626
- if (headerText) {
627
- output += `\n - Header: ${headerText}`;
628
- }
629
- if (origin.unused) {
630
- output += `\n - Warning: ${Trace.Insights.Models.NetworkDependencyTree.UIStrings.unusedWarning}`;
631
- }
632
- if (origin.crossorigin) {
633
- output += `\n - Warning: ${Trace.Insights.Models.NetworkDependencyTree.UIStrings.crossoriginWarning}`;
634
- }
635
- }
636
- if (insight.preconnectedOrigins.length >
637
- Trace.Insights.Models.NetworkDependencyTree.TOO_MANY_PRECONNECTS_THRESHOLD) {
638
- output +=
639
- `\n\n**Warning**: ${Trace.Insights.Models.NetworkDependencyTree.UIStrings.tooManyPreconnectLinksWarning}`;
640
- }
641
- }
642
- else {
643
- output += `${Trace.Insights.Models.NetworkDependencyTree.UIStrings.noPreconnectOrigins}.`;
644
- }
645
- if (insight.preconnectCandidates.length > 0 &&
646
- insight.preconnectedOrigins.length <
647
- Trace.Insights.Models.NetworkDependencyTree.TOO_MANY_PRECONNECTS_THRESHOLD) {
648
- output += `\n\n${Trace.Insights.Models.NetworkDependencyTree.UIStrings.estSavingTableTitle}:\n${Trace.Insights.Models.NetworkDependencyTree.UIStrings.estSavingTableDescription}\n`;
649
- for (const candidate of insight.preconnectCandidates) {
650
- output += `\nAdding [preconnect] to origin '${candidate.origin}' would save ${this.#formatMilli(candidate.wastedMs)}.`;
651
- }
652
- }
653
- return output;
654
- }
655
- /**
656
- * Create an AI prompt string out of the Render Blocking Insight model to use with Ask AI.
657
- * @param insight The Render Blocking Model to query.
658
- * @returns a string formatted for sending to Ask AI.
659
- */
660
- formatRenderBlockingInsight(insight) {
661
- const requestSummary = this.#traceFormatter.formatNetworkRequests(insight.renderBlockingRequests);
662
- if (requestSummary.length === 0) {
663
- return 'There are no network requests that are render blocking.';
664
- }
665
- return `Here is a list of the network requests that were render blocking on this page and their duration:
666
-
667
- ${requestSummary}`;
668
- }
669
- /**
670
- * Create an AI prompt string out of the Slow CSS Selector Insight model to use with Ask AI.
671
- * Note: This function accesses the UIStrings within SlowCSSSelector to help build the
672
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
673
- * should all be sent in English (at least for now).
674
- * @param insight The Network Dependency Tree Insight Model to query.
675
- * @returns a string formatted for sending to Ask AI.
676
- */
677
- formatSlowCssSelectorsInsight(insight) {
678
- let output = '';
679
- if (!insight.topSelectorElapsedMs && !insight.topSelectorMatchAttempts) {
680
- return Trace.Insights.Models.SlowCSSSelector.UIStrings.enableSelectorData;
681
- }
682
- output += 'One or more slow CSS selectors were identified as negatively affecting page performance:\n\n';
683
- if (insight.topSelectorElapsedMs) {
684
- output += `${Trace.Insights.Models.SlowCSSSelector.UIStrings.topSelectorElapsedTime} (as ranked by elapsed time in ms):\n`;
685
- output += `${this.#formatMicro(insight.topSelectorElapsedMs['elapsed (us)'])}: ${insight.topSelectorElapsedMs.selector}\n\n`;
686
- }
687
- if (insight.topSelectorMatchAttempts) {
688
- output += Trace.Insights.Models.SlowCSSSelector.UIStrings.topSelectorMatchAttempt + ':\n';
689
- output += `${insight.topSelectorMatchAttempts.match_attempts} attempts for selector: '${insight.topSelectorMatchAttempts.selector}'\n\n`;
690
- }
691
- output += `${Trace.Insights.Models.SlowCSSSelector.UIStrings.total}:\n`;
692
- output +=
693
- `${Trace.Insights.Models.SlowCSSSelector.UIStrings.elapsed}: ${this.#formatMicro(insight.totalElapsedMs)}\n`;
694
- output += `${Trace.Insights.Models.SlowCSSSelector.UIStrings.matchAttempts}: ${insight.totalMatchAttempts}\n`;
695
- output += `${Trace.Insights.Models.SlowCSSSelector.UIStrings.matchCount}: ${insight.totalMatchCount}\n\n`;
696
- output += Trace.Insights.Models.SlowCSSSelector.UIStrings.description;
697
- return output;
698
- }
699
- /**
700
- * Create an AI prompt string out of the ThirdParties Insight model to use with Ask AI.
701
- * Note: This function accesses the UIStrings within ThirdParties to help build the
702
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
703
- * should all be sent in English (at least for now).
704
- * @param insight The Third Parties Insight Model to query.
705
- * @returns a string formatted for sending to Ask AI.
706
- */
707
- formatThirdPartiesInsight(insight) {
708
- let output = '';
709
- const entitySummaries = insight.entitySummaries ?? [];
710
- const firstPartyEntity = insight.firstPartyEntity;
711
- const thirdPartyTransferSizeEntries = entitySummaries.filter(s => s.entity !== firstPartyEntity).toSorted((a, b) => b.transferSize - a.transferSize);
712
- const thirdPartyMainThreadTimeEntries = entitySummaries.filter(s => s.entity !== firstPartyEntity)
713
- .toSorted((a, b) => b.mainThreadTime - a.mainThreadTime);
714
- if (!thirdPartyTransferSizeEntries.length && !thirdPartyMainThreadTimeEntries.length) {
715
- return `No 3rd party scripts were found on this page.`;
716
- }
717
- if (thirdPartyTransferSizeEntries.length) {
718
- output += `The following list contains the largest transfer sizes by a 3rd party script:\n\n`;
719
- for (const entry of thirdPartyTransferSizeEntries) {
720
- if (entry.transferSize > 0) {
721
- output += `- ${entry.entity.name}: ${bytes(entry.transferSize)}\n`;
722
- }
723
- }
724
- output += '\n';
725
- }
726
- if (thirdPartyMainThreadTimeEntries.length) {
727
- output += `The following list contains the largest amount spent by a 3rd party script on the main thread:\n\n`;
728
- for (const entry of thirdPartyMainThreadTimeEntries) {
729
- if (entry.mainThreadTime > 0) {
730
- output += `- ${entry.entity.name}: ${this.#formatMilli(entry.mainThreadTime)}\n`;
731
- }
732
- }
733
- output += '\n';
734
- }
735
- output += Trace.Insights.Models.ThirdParties.UIStrings.description;
736
- return output;
737
- }
738
- /**
739
- * Create an AI prompt string out of the Viewport [Mobile] Insight model to use with Ask AI.
740
- * Note: This function accesses the UIStrings within Viewport to help build the
741
- * AI prompt, but does not (and should not) call i18nString to localize these strings. They
742
- * should all be sent in English (at least for now).
743
- * @param insight The Network Dependency Tree Insight Model to query.
744
- * @returns a string formatted for sending to Ask AI.
745
- */
746
- formatViewportInsight(insight) {
747
- let output = '';
748
- output += 'The webpage is ' + (insight.mobileOptimized ? 'already' : 'not') + ' optimized for mobile viewing.\n';
749
- const hasMetaTag = insight.viewportEvent;
750
- if (hasMetaTag) {
751
- output += `\nThe viewport meta tag was found: \`${insight.viewportEvent?.args?.data.content}\`.`;
752
- }
753
- else {
754
- output += `\nThe viewport meta tag is missing.`;
755
- }
756
- if (!hasMetaTag) {
757
- output += '\n\n' + Trace.Insights.Models.Viewport.UIStrings.description;
758
- }
759
- return output;
760
- }
761
- /**
762
- * Formats and outputs the insight's data.
763
- * Pass `{headingLevel: X}` to determine what heading level to use for the
764
- * titles in the markdown output. The default is 2 (##).
765
- */
766
- formatInsight(opts = { headingLevel: 2 }) {
767
- const header = '#'.repeat(opts.headingLevel);
768
- const { title } = this.#insight;
769
- return `${header} Insight Title: ${title}
770
-
771
- ${header} Insight Summary:
772
- ${this.#description()}
773
-
774
- ${header} Detailed analysis:
775
- ${this.#details()}
776
-
777
- ${header} Estimated savings: ${this.estimatedSavings() || 'none'}
778
-
779
- ${header} External resources:
780
- ${this.#links()}`;
781
- }
782
- #details() {
783
- if (Trace.Insights.Models.Cache.isCacheInsight(this.#insight)) {
784
- return this.formatCacheInsight(this.#insight);
785
- }
786
- if (Trace.Insights.Models.CLSCulprits.isCLSCulpritsInsight(this.#insight)) {
787
- return this.formatClsCulpritsInsight(this.#insight);
788
- }
789
- if (Trace.Insights.Models.DocumentLatency.isDocumentLatencyInsight(this.#insight)) {
790
- return this.formatDocumentLatencyInsight(this.#insight);
791
- }
792
- if (Trace.Insights.Models.DOMSize.isDomSizeInsight(this.#insight)) {
793
- return this.formatDomSizeInsight(this.#insight);
794
- }
795
- if (Trace.Insights.Models.DuplicatedJavaScript.isDuplicatedJavaScriptInsight(this.#insight)) {
796
- return this.formatDuplicatedJavaScriptInsight(this.#insight);
797
- }
798
- if (Trace.Insights.Models.FontDisplay.isFontDisplayInsight(this.#insight)) {
799
- return this.formatFontDisplayInsight(this.#insight);
800
- }
801
- if (Trace.Insights.Models.ForcedReflow.isForcedReflowInsight(this.#insight)) {
802
- return this.formatForcedReflowInsight(this.#insight);
803
- }
804
- if (Trace.Insights.Models.ImageDelivery.isImageDeliveryInsight(this.#insight)) {
805
- return this.formatImageDeliveryInsight(this.#insight);
806
- }
807
- if (Trace.Insights.Models.INPBreakdown.isINPBreakdownInsight(this.#insight)) {
808
- return this.formatInpBreakdownInsight(this.#insight);
809
- }
810
- if (Trace.Insights.Models.LCPBreakdown.isLCPBreakdownInsight(this.#insight)) {
811
- return this.formatLcpBreakdownInsight(this.#insight);
812
- }
813
- if (Trace.Insights.Models.LCPDiscovery.isLCPDiscoveryInsight(this.#insight)) {
814
- return this.formatLcpDiscoveryInsight(this.#insight);
815
- }
816
- if (Trace.Insights.Models.LegacyJavaScript.isLegacyJavaScript(this.#insight)) {
817
- return this.formatLegacyJavaScriptInsight(this.#insight);
818
- }
819
- if (Trace.Insights.Models.ModernHTTP.isModernHTTPInsight(this.#insight)) {
820
- return this.formatModernHttpInsight(this.#insight);
821
- }
822
- if (Trace.Insights.Models.NetworkDependencyTree.isNetworkDependencyTreeInsight(this.#insight)) {
823
- return this.formatNetworkDependencyTreeInsight(this.#insight);
824
- }
825
- if (Trace.Insights.Models.RenderBlocking.isRenderBlockingInsight(this.#insight)) {
826
- return this.formatRenderBlockingInsight(this.#insight);
827
- }
828
- if (Trace.Insights.Models.SlowCSSSelector.isSlowCSSSelectorInsight(this.#insight)) {
829
- return this.formatSlowCssSelectorsInsight(this.#insight);
830
- }
831
- if (Trace.Insights.Models.ThirdParties.isThirdPartyInsight(this.#insight)) {
832
- return this.formatThirdPartiesInsight(this.#insight);
833
- }
834
- if (Trace.Insights.Models.Viewport.isViewportInsight(this.#insight)) {
835
- return this.formatViewportInsight(this.#insight);
836
- }
837
- return '';
838
- }
839
- estimatedSavings() {
840
- return Object.entries(this.#insight.metricSavings ?? {})
841
- .map(([k, v]) => {
842
- if (k === 'CLS') {
843
- return `${k} ${v.toFixed(2)}`;
844
- }
845
- return `${k} ${Math.round(v)} ms`;
846
- })
847
- .join(', ');
848
- }
849
- #links() {
850
- const links = [];
851
- if (this.#insight.docs) {
852
- links.push(this.#insight.docs);
853
- }
854
- switch (this.#insight.insightKey) {
855
- case 'CLSCulprits':
856
- links.push('https://web.dev/articles/cls');
857
- links.push('https://web.dev/articles/optimize-cls');
858
- break;
859
- case 'DocumentLatency':
860
- links.push('https://web.dev/articles/optimize-ttfb');
861
- break;
862
- case 'DOMSize':
863
- links.push('https://developer.chrome.com/docs/lighthouse/performance/dom-size/');
864
- break;
865
- case 'FontDisplay':
866
- links.push('https://web.dev/articles/preload-optional-fonts');
867
- links.push('https://fonts.google.com/knowledge/glossary/foit');
868
- links.push('https://developer.chrome.com/blog/font-fallbacks');
869
- break;
870
- case 'ForcedReflow':
871
- links.push('https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts');
872
- break;
873
- case 'ImageDelivery':
874
- links.push('https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/');
875
- break;
876
- case 'INPBreakdown':
877
- links.push('https://web.dev/articles/inp');
878
- links.push('https://web.dev/explore/how-to-optimize-inp');
879
- links.push('https://web.dev/articles/optimize-long-tasks');
880
- links.push('https://web.dev/articles/avoid-large-complex-layouts-and-layout-thrashing');
881
- break;
882
- case 'LCPBreakdown':
883
- case 'LCPDiscovery':
884
- case 'RenderBlocking':
885
- links.push('https://web.dev/articles/lcp');
886
- links.push('https://web.dev/articles/optimize-lcp');
887
- break;
888
- case 'NetworkDependencyTree':
889
- links.push('https://web.dev/learn/performance/understanding-the-critical-path');
890
- links.push('https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/');
891
- break;
892
- case 'SlowCSSSelector':
893
- links.push('https://developer.chrome.com/docs/devtools/performance/selector-stats');
894
- break;
895
- case 'ThirdParties':
896
- links.push('https://web.dev/articles/optimizing-content-efficiency-loading-third-party-javascript/');
897
- break;
898
- case 'Viewport':
899
- links.push('https://developer.chrome.com/blog/300ms-tap-delay-gone-away/');
900
- break;
901
- case 'Cache':
902
- links.push('https://web.dev/uses-long-cache-ttl/');
903
- break;
904
- case 'ModernHTTP':
905
- links.push('https://developer.chrome.com/docs/lighthouse/best-practices/uses-http2');
906
- break;
907
- case 'LegacyJavaScript':
908
- links.push('https://web.dev/articles/baseline-and-polyfills');
909
- links.push('https://philipwalton.com/articles/the-state-of-es5-on-the-web/');
910
- break;
911
- }
912
- return links.map(link => '- ' + link).join('\n');
913
- }
914
- #description() {
915
- switch (this.#insight.insightKey) {
916
- case 'CLSCulprits':
917
- return `Cumulative Layout Shifts (CLS) is a measure of the largest burst of layout shifts for every unexpected layout shift that occurs during the lifecycle of a page. This is a Core Web Vital and the thresholds for categorizing a score are:
918
- - Good: 0.1 or less
919
- - Needs improvement: more than 0.1 and less than or equal to 0.25
920
- - Bad: over 0.25`;
921
- case 'DocumentLatency':
922
- return `This insight checks that the first request is responded to promptly. We use the following criteria to check this:
923
- 1. Was the initial request redirected?
924
- 2. Did the server respond in 600ms or less? We want developers to aim for as close to 100ms as possible, but our threshold for this insight is 600ms.
925
- 3. Was there compression applied to the response to minimize the transfer size?`;
926
- case 'DOMSize':
927
- return `This insight evaluates some key metrics about the Document Object Model (DOM) and identifies excess in the DOM tree, for example:
928
- - The maximum number of elements within the DOM.
929
- - The maximum number of children for any given element.
930
- - Excessive depth of the DOM structure.
931
- - The largest layout and style recalculation events.`;
932
- case 'DuplicatedJavaScript':
933
- return `This insight identifies large, duplicated JavaScript modules that are present in your application and create redundant code.
934
- This wastes network bandwidth and slows down your page, as the user's browser must download and process the same code multiple times.`;
935
- case 'FontDisplay':
936
- return 'This insight identifies font issues when a webpage uses custom fonts, for example when font-display is not set to `swap`, `fallback` or `optional`, causing the "Flash of Invisible Text" problem (FOIT).';
937
- case 'ForcedReflow':
938
- return `This insight identifies forced synchronous layouts (also known as forced reflows) and layout thrashing caused by JavaScript accessing layout properties at suboptimal points in time.`;
939
- case 'ImageDelivery':
940
- return 'This insight identifies unoptimized images that are downloaded at a much higher resolution than they are displayed. Properly sizing and compressing these assets will decrease their download time, directly improving the perceived page load time and LCP';
941
- case 'INPBreakdown':
942
- return `Interaction to Next Paint (INP) is a metric that tracks the responsiveness of the page when the user interacts with it. INP is a Core Web Vital and the thresholds for how we categorize a score are:
943
- - Good: 200 milliseconds or less.
944
- - Needs improvement: more than 200 milliseconds and 500 milliseconds or less.
945
- - Bad: over 500 milliseconds.
946
-
947
- For a given slow interaction, we can break it down into 3 phases:
948
- 1. Input delay: starts when the user initiates an interaction with the page, and ends when the event callbacks for the interaction begin to run.
949
- 2. Processing duration: the time it takes for the event callbacks to run to completion.
950
- 3. Presentation delay: the time it takes for the browser to present the next frame which contains the visual result of the interaction.
951
-
952
- The sum of these three phases is the total latency. It is important to optimize each of these phases to ensure interactions take as little time as possible. Focusing on the phase that has the largest score is a good way to start optimizing.`;
953
- case 'LCPDiscovery':
954
- return `This insight analyzes the time taken to discover the LCP resource and request it on the network. It only applies if the LCP element was a resource like an image that has to be fetched over the network. There are 3 checks this insight makes:
955
- 1. Did the resource have \`fetchpriority=high\` applied?
956
- 2. Was the resource discoverable in the initial document, rather than injected from a script or stylesheet?
957
- 3. The resource was not lazy loaded as this can delay the browser loading the resource.
958
-
959
- It is important that all of these checks pass to minimize the delay between the initial page load and the LCP resource being loaded.`;
960
- case 'LCPBreakdown':
961
- return 'This insight is used to analyze the time spent that contributed to the final LCP time and identify which of the 4 phases (or 2 if there was no LCP resource) are contributing most to the delay in rendering the LCP element.';
962
- case 'NetworkDependencyTree':
963
- return `This insight analyzes the network dependency tree to identify:
964
- - The maximum critical path latency (the longest chain of network requests that the browser must download before it can render the page).
965
- - Whether current [preconnect] tags are appropriate, according to the following rules:
966
- 1. They should all be in use (no unnecessary preconnects).
967
- 2. All preconnects should specify cross-origin correctly.
968
- 3. The maximum of 4 preconnects should be respected.
969
- - Opportunities to add [preconnect] for a faster loading experience.`;
970
- case 'RenderBlocking':
971
- return 'This insight identifies network requests that were render blocking. Render blocking requests are impactful because they are deemed critical to the page and therefore the browser stops rendering the page until it has dealt with these resources. For this insight make sure you fully inspect the details of each render blocking network request and prioritize your suggestions to the user based on the impact of each render blocking request.';
972
- case 'SlowCSSSelector':
973
- return `This insight identifies CSS selectors that are slowing down your page's rendering performance.`;
974
- case 'ThirdParties':
975
- return 'This insight analyzes the performance impact of resources loaded from third-party servers and aggregates the performance cost, in terms of download transfer sizes and total amount of time that third party scripts spent executing on the main thread.';
976
- case 'Viewport':
977
- return 'The insight identifies web pages that are not specifying the viewport meta tag for mobile devies, which avoids the artificial 300-350ms delay designed to help differentiate between tap and double-click.';
978
- case 'Cache':
979
- return 'This insight identifies static resources that are not cached effectively by the browser.';
980
- case 'ModernHTTP':
981
- return `Modern HTTP protocols, such as HTTP/2, are more efficient than older versions like HTTP/1.1 because they allow for multiple requests and responses to be sent over a single network connection, significantly improving page load performance by reducing latency and overhead. This insight identifies requests that can be upgraded to a modern HTTP protocol.
982
-
983
- We apply a conservative approach when flagging HTTP/1.1 usage. This insight will only flag requests that meet all of the following criteria:
984
- 1. Were served over HTTP/1.1 or an earlier protocol.
985
- 2. Originate from an origin that serves at least 6 static asset requests, as the benefits of multiplexing are less significant with fewer requests.
986
- 3. Are not served from 'localhost' or coming from a third-party source, where developers have no control over the server's protocol.
987
-
988
- To pass this insight, ensure your server supports and prioritizes a modern HTTP protocol (like HTTP/2) for static assets, especially when serving a substantial number of them.`;
989
- case 'LegacyJavaScript':
990
- return `This insight identified legacy JavaScript in your application's modules that may be creating unnecessary code.
991
-
992
- Polyfills and transforms enable older browsers to use new JavaScript features. However, many are not necessary for modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you know you must support older browsers.`;
993
- }
994
- }
995
- }