chrome-ai-bridge 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +252 -0
- package/build/node_modules/chrome-devtools-frontend/LICENSE +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +17 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +43 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +2033 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +332 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +221 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +79 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +29 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +49 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +86 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +449 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +144 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +69 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +495 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +15 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +164 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +78 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +164 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +1263 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +97 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +40 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +71 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +127 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +41 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +434 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +202 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +92 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +69 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +61 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +220 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +968 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +13 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +60 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +199 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +13 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +79 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +143 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +72 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +538 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +157 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +63 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +17 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +12 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +138 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +539 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +8 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +54 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +281 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +845 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +155 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +99 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +217 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +98 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +31 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +1318 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +100 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +1532 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +908 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +312 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +574 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1346 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +53 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +403 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +22 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +275 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +166 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +29 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +236 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +47 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +205 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +629 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +241 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +198 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +163 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +597 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +1635 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1216 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +527 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +364 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +127 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +199 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +130 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +75 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +80 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +208 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +41 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +95 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +34 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +2223 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1654 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +48 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +765 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +384 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +25 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +310 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +62 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +608 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +413 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +908 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +163 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +923 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +535 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +45 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +36 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +176 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +420 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +54 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +113 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +216 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +271 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +511 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +691 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +57 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +132 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +201 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +156 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +508 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +143 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +53 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +257 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +395 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +55 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +1166 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +91 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +2640 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +384 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1532 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7602 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +289 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +995 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +664 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +139 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +377 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +131 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +149 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +245 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +486 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +130 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +992 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +592 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +112 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +186 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +60 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +107 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +244 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +564 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +437 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +87 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +182 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +268 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +55 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +20 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +516 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +89 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +285 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +775 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +1706 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +145 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +77 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +347 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +494 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +49 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +73 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +256 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +122 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +622 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +59 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +97 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +121 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +32 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +173 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +30 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +32 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +79 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +69 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +35 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +231 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +355 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +68 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +14 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +122 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +81 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +371 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +169 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +114 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +555 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +815 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +44 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +76 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +162 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +191 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +118 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +50 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +599 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +10 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +109 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +187 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +162 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +263 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +148 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +485 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +35 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +147 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +180 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +126 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +85 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +27 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +103 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +449 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +404 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +33 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +566 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +42 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +349 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +346 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +260 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +97 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +276 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +71 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +101 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +317 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +183 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +134 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +33 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +163 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +1 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +41 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +102 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +495 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +74 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +186 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +820 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +254 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +10 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +489 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +209 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +340 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +181 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +258 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +90 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +82 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +161 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +129 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +263 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +199 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +183 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +90 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +21 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +200 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +545 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +192 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +136 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +92 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +98 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +102 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +18 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +6 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +488 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +276 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +63 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +82 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +551 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +136 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +67 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +68 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +48 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +68 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +101 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +64 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +78 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +11 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +115 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +42 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +47 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +134 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +450 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +154 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +17 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +18 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +37 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +57 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +15 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +580 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +224 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +64 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +504 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +113 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +601 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +201 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +1 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +202 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +940 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +196 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +226 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +394 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +24 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +283 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +9 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +84 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +20 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +146 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +118 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +40 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +215 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +2 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +2 -0
- package/build/src/McpContext.js +400 -0
- package/build/src/McpResponse.js +237 -0
- package/build/src/Mutex.js +40 -0
- package/build/src/PageCollector.js +68 -0
- package/build/src/WaitForHelper.js +134 -0
- package/build/src/browser-connection-manager.js +373 -0
- package/build/src/browser.js +719 -0
- package/build/src/cli.js +120 -0
- package/build/src/client-detector.js +93 -0
- package/build/src/config.js +38 -0
- package/build/src/formatters/consoleFormatter.js +73 -0
- package/build/src/formatters/extensionsPageFormatter.js +184 -0
- package/build/src/formatters/networkFormatter.js +34 -0
- package/build/src/formatters/snapshotFormatter.js +80 -0
- package/build/src/graceful.js +125 -0
- package/build/src/index.js +13 -0
- package/build/src/logger.js +27 -0
- package/build/src/login-helper.js +431 -0
- package/build/src/main.js +268 -0
- package/build/src/plugin-api.js +189 -0
- package/build/src/profile-migration.js +82 -0
- package/build/src/profile-resolver.js +555 -0
- package/build/src/project-detector.js +71 -0
- package/build/src/project-root-state.js +18 -0
- package/build/src/roots-manager.js +253 -0
- package/build/src/selectors/chatgpt.json +61 -0
- package/build/src/selectors/gemini.json +24 -0
- package/build/src/selectors/loader.js +128 -0
- package/build/src/stable-identity.js +193 -0
- package/build/src/startup-check.js +147 -0
- package/build/src/system-profile.js +181 -0
- package/build/src/tools/ToolDefinition.js +9 -0
- package/build/src/tools/bookmarks.js +170 -0
- package/build/src/tools/categories.js +15 -0
- package/build/src/tools/chatgpt-web.js +507 -0
- package/build/src/tools/console.js +19 -0
- package/build/src/tools/core-tools.js +65 -0
- package/build/src/tools/diagnose-ui.js +328 -0
- package/build/src/tools/emulation.js +67 -0
- package/build/src/tools/extensions.js +185 -0
- package/build/src/tools/gemini-web.js +491 -0
- package/build/src/tools/iframe-popup-tools.js +204 -0
- package/build/src/tools/input.js +185 -0
- package/build/src/tools/network.js +68 -0
- package/build/src/tools/optional-tools.js +69 -0
- package/build/src/tools/pages.js +172 -0
- package/build/src/tools/performance.js +127 -0
- package/build/src/tools/screenshot.js +48 -0
- package/build/src/tools/script.js +39 -0
- package/build/src/tools/snapshot.js +45 -0
- package/build/src/trace-processing/parse.js +93 -0
- package/build/src/utils/pagination.js +49 -0
- package/package.json +90 -0
- package/scripts/cli.mjs +49 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// Copyright 2023 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
import * as Platform from '../../../core/platform/platform.js';
|
|
5
|
+
import * as Helpers from '../helpers/helpers.js';
|
|
6
|
+
import * as Types from '../types/types.js';
|
|
7
|
+
import { data as userInteractionsHandlerData } from './UserInteractionsHandler.js';
|
|
8
|
+
import { data as workersData } from './WorkersHandler.js';
|
|
9
|
+
let warningsPerEvent = new Map();
|
|
10
|
+
let eventsPerWarning = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Tracks the stack formed by nested trace events up to a given point
|
|
13
|
+
*/
|
|
14
|
+
let allEventsStack = [];
|
|
15
|
+
/**
|
|
16
|
+
* Tracks the stack formed by JS invocation trace events up to a given point.
|
|
17
|
+
* F.e. FunctionCall, EvaluateScript, V8Execute.
|
|
18
|
+
* Not to be confused with ProfileCalls.
|
|
19
|
+
*/
|
|
20
|
+
let jsInvokeStack = [];
|
|
21
|
+
/**
|
|
22
|
+
* Tracks reflow events in a task.
|
|
23
|
+
*/
|
|
24
|
+
let taskReflowEvents = [];
|
|
25
|
+
/**
|
|
26
|
+
* Tracks events containing long running tasks. These are compared later against the worker thread pool to filter out long tasks from worker threads.
|
|
27
|
+
*/
|
|
28
|
+
let longTaskEvents = [];
|
|
29
|
+
export const FORCED_REFLOW_THRESHOLD = Helpers.Timing.milliToMicro(Types.Timing.Milli(30));
|
|
30
|
+
export const LONG_MAIN_THREAD_TASK_THRESHOLD = Helpers.Timing.milliToMicro(Types.Timing.Milli(50));
|
|
31
|
+
export function reset() {
|
|
32
|
+
warningsPerEvent = new Map();
|
|
33
|
+
eventsPerWarning = new Map();
|
|
34
|
+
allEventsStack = [];
|
|
35
|
+
jsInvokeStack = [];
|
|
36
|
+
taskReflowEvents = [];
|
|
37
|
+
longTaskEvents = [];
|
|
38
|
+
}
|
|
39
|
+
function storeWarning(event, warning) {
|
|
40
|
+
const existingWarnings = Platform.MapUtilities.getWithDefault(warningsPerEvent, event, () => []);
|
|
41
|
+
existingWarnings.push(warning);
|
|
42
|
+
warningsPerEvent.set(event, existingWarnings);
|
|
43
|
+
const existingEvents = Platform.MapUtilities.getWithDefault(eventsPerWarning, warning, () => []);
|
|
44
|
+
existingEvents.push(event);
|
|
45
|
+
eventsPerWarning.set(warning, existingEvents);
|
|
46
|
+
}
|
|
47
|
+
export function handleEvent(event) {
|
|
48
|
+
processForcedReflowWarning(event);
|
|
49
|
+
if (event.name === "RunTask" /* Types.Events.Name.RUN_TASK */) {
|
|
50
|
+
const { duration } = Helpers.Timing.eventTimingsMicroSeconds(event);
|
|
51
|
+
if (duration > LONG_MAIN_THREAD_TASK_THRESHOLD) {
|
|
52
|
+
longTaskEvents.push(event);
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (Types.Events.isFireIdleCallback(event)) {
|
|
57
|
+
const { duration } = Helpers.Timing.eventTimingsMilliSeconds(event);
|
|
58
|
+
if (duration > event.args.data.allottedMilliseconds) {
|
|
59
|
+
storeWarning(event, 'IDLE_CALLBACK_OVER_TIME');
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Reflows* are added a warning to if:
|
|
66
|
+
* 1. They are forced/sync, meaning they are invoked by JS and finish
|
|
67
|
+
* during the Script execution.
|
|
68
|
+
* 2. Their duration exceeds a threshold.
|
|
69
|
+
* - *Reflow: The style recalculation and layout steps in a render task.
|
|
70
|
+
*/
|
|
71
|
+
function processForcedReflowWarning(event) {
|
|
72
|
+
// Update the event and the JS invocation stacks.
|
|
73
|
+
accomodateEventInStack(event, allEventsStack);
|
|
74
|
+
accomodateEventInStack(event, jsInvokeStack, /* pushEventToStack */ Types.Events.isJSInvocationEvent(event));
|
|
75
|
+
if (jsInvokeStack.length) {
|
|
76
|
+
// Current event falls inside a JS call.
|
|
77
|
+
if (event.name === "Layout" /* Types.Events.Name.LAYOUT */ || event.name === "UpdateLayoutTree" /* Types.Events.Name.RECALC_STYLE */) {
|
|
78
|
+
// A forced reflow happened. However we need to check if
|
|
79
|
+
// the threshold is surpassed to add a warning. Accumulate the
|
|
80
|
+
// event to check for this after the current Task is over.
|
|
81
|
+
taskReflowEvents.push(event);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (allEventsStack.length === 1) {
|
|
86
|
+
// We hit a new task. Check if the forced reflows in the previous
|
|
87
|
+
// task exceeded the threshold and add a warning if so.
|
|
88
|
+
const totalTime = taskReflowEvents.reduce((time, event) => time + (event.dur || 0), 0);
|
|
89
|
+
if (totalTime >= FORCED_REFLOW_THRESHOLD) {
|
|
90
|
+
taskReflowEvents.forEach(reflowEvent => storeWarning(reflowEvent, 'FORCED_REFLOW'));
|
|
91
|
+
}
|
|
92
|
+
taskReflowEvents.length = 0;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Updates a given trace event stack given a new event.
|
|
97
|
+
*/
|
|
98
|
+
function accomodateEventInStack(event, stack, pushEventToStack = true) {
|
|
99
|
+
let nextItem = stack.at(-1);
|
|
100
|
+
while (nextItem && event.ts > nextItem.ts + (nextItem.dur || 0)) {
|
|
101
|
+
stack.pop();
|
|
102
|
+
nextItem = stack.at(-1);
|
|
103
|
+
}
|
|
104
|
+
if (!pushEventToStack) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
stack.push(event);
|
|
108
|
+
}
|
|
109
|
+
export function deps() {
|
|
110
|
+
return ['UserInteractions', 'Workers'];
|
|
111
|
+
}
|
|
112
|
+
export async function finalize() {
|
|
113
|
+
// These events do exist on the UserInteractionsHandler, but we also put
|
|
114
|
+
// them into the WarningsHandler so that the warnings handler can be the
|
|
115
|
+
// source of truth and the way to look up all warnings for a given event.
|
|
116
|
+
// Otherwise, we would have to look up warnings across multiple handlers for
|
|
117
|
+
// a given event, which will start to get messy very quickly.
|
|
118
|
+
const longInteractions = userInteractionsHandlerData().interactionsOverThreshold;
|
|
119
|
+
for (const interaction of longInteractions) {
|
|
120
|
+
storeWarning(interaction, 'LONG_INTERACTION');
|
|
121
|
+
}
|
|
122
|
+
for (const event of longTaskEvents) {
|
|
123
|
+
if (!(event.tid, workersData().workerIdByThread.has(event.tid))) {
|
|
124
|
+
storeWarning(event, 'LONG_TASK');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
longTaskEvents.length = 0;
|
|
128
|
+
}
|
|
129
|
+
export function data() {
|
|
130
|
+
return {
|
|
131
|
+
perEvent: warningsPerEvent,
|
|
132
|
+
perWarning: eventsPerWarning,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Copyright 2023 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
import * as Types from '../types/types.js';
|
|
5
|
+
let sessionIdEvents = [];
|
|
6
|
+
let workerIdByThread = new Map();
|
|
7
|
+
let workerURLById = new Map();
|
|
8
|
+
export function reset() {
|
|
9
|
+
sessionIdEvents = [];
|
|
10
|
+
workerIdByThread = new Map();
|
|
11
|
+
workerURLById = new Map();
|
|
12
|
+
}
|
|
13
|
+
export function handleEvent(event) {
|
|
14
|
+
if (Types.Events.isTracingSessionIdForWorker(event)) {
|
|
15
|
+
sessionIdEvents.push(event);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function finalize() {
|
|
19
|
+
for (const sessionIdEvent of sessionIdEvents) {
|
|
20
|
+
if (!sessionIdEvent.args.data) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
workerIdByThread.set(sessionIdEvent.args.data.workerThreadId, sessionIdEvent.args.data.workerId);
|
|
24
|
+
workerURLById.set(sessionIdEvent.args.data.workerId, sessionIdEvent.args.data.url);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function data() {
|
|
28
|
+
return {
|
|
29
|
+
workerSessionIdEvents: sessionIdEvents,
|
|
30
|
+
workerIdByThread,
|
|
31
|
+
workerURLById,
|
|
32
|
+
};
|
|
33
|
+
}
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Copyright 2022 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
|
+
export * as Helpers from './helpers.js';
|
|
5
|
+
export * as ModelHandlers from './ModelHandlers.js';
|
|
6
|
+
export * as Threads from './Threads.js';
|
|
7
|
+
export * as Types from './types.js';
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// Copyright 2024 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 ThirdPartyWeb from '../../../third_party/third-party-web/third-party-web.js';
|
|
5
|
+
import * as Types from '../types/types.js';
|
|
6
|
+
export function getEntityForEvent(event, entityMappings) {
|
|
7
|
+
const url = getNonResolvedURL(event);
|
|
8
|
+
if (!url) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
return getEntityForUrl(url, entityMappings);
|
|
12
|
+
}
|
|
13
|
+
export function getEntityForUrl(url, entityMappings) {
|
|
14
|
+
const cachedByUrl = entityMappings.entityByUrlCache.get(url);
|
|
15
|
+
if (cachedByUrl) {
|
|
16
|
+
return cachedByUrl;
|
|
17
|
+
}
|
|
18
|
+
const entity = ThirdPartyWeb.ThirdPartyWeb.getEntity(url) ?? makeUpEntity(entityMappings.createdEntityCache, url);
|
|
19
|
+
if (entity) {
|
|
20
|
+
entityMappings.entityByUrlCache.set(url, entity);
|
|
21
|
+
}
|
|
22
|
+
return entity;
|
|
23
|
+
}
|
|
24
|
+
export function getNonResolvedURL(entry, handlerData) {
|
|
25
|
+
if (Types.Events.isProfileCall(entry)) {
|
|
26
|
+
return entry.callFrame.url;
|
|
27
|
+
}
|
|
28
|
+
if (Types.Events.isSyntheticNetworkRequest(entry)) {
|
|
29
|
+
return entry.args.data.url;
|
|
30
|
+
}
|
|
31
|
+
if (Types.Events.isParseAuthorStyleSheetEvent(entry) && entry.args) {
|
|
32
|
+
return entry.args.data.stylesheetUrl;
|
|
33
|
+
}
|
|
34
|
+
if (entry.args?.data?.stackTrace && entry.args.data.stackTrace.length > 0) {
|
|
35
|
+
return entry.args.data.stackTrace[0].url;
|
|
36
|
+
}
|
|
37
|
+
// ParseHTML events store the URL under beginData, not data.
|
|
38
|
+
if (Types.Events.isParseHTML(entry)) {
|
|
39
|
+
return entry.args.beginData.url;
|
|
40
|
+
}
|
|
41
|
+
if (handlerData) {
|
|
42
|
+
// DecodeImage events use the URL from the relevant PaintImage event.
|
|
43
|
+
if (Types.Events.isDecodeImage(entry)) {
|
|
44
|
+
const paintEvent = handlerData.ImagePainting.paintImageForEvent.get(entry);
|
|
45
|
+
return paintEvent ? getNonResolvedURL(paintEvent, handlerData) : null;
|
|
46
|
+
}
|
|
47
|
+
// DrawLazyPixelRef events use the URL from the relevant PaintImage event.
|
|
48
|
+
if (Types.Events.isDrawLazyPixelRef(entry) && entry.args?.LazyPixelRef) {
|
|
49
|
+
const paintEvent = handlerData.ImagePainting.paintImageByDrawLazyPixelRef.get(entry.args.LazyPixelRef);
|
|
50
|
+
return paintEvent ? getNonResolvedURL(paintEvent, handlerData) : null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// For all other events, try to see if the URL is provided, else return null.
|
|
54
|
+
if (entry.args?.data?.url) {
|
|
55
|
+
return entry.args.data.url;
|
|
56
|
+
}
|
|
57
|
+
// Many events don't have a url, but are associated with a request. Use the
|
|
58
|
+
// request's url.
|
|
59
|
+
const requestId = entry.args?.data?.requestId;
|
|
60
|
+
if (handlerData && requestId) {
|
|
61
|
+
const url = handlerData.NetworkRequests.byId.get(requestId)?.args.data.url;
|
|
62
|
+
if (url) {
|
|
63
|
+
return url;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
export function makeUpEntity(entityCache, url) {
|
|
69
|
+
if (url.startsWith('chrome-extension:')) {
|
|
70
|
+
return makeUpChromeExtensionEntity(entityCache, url);
|
|
71
|
+
}
|
|
72
|
+
// Make up an entity only for valid http/https URLs.
|
|
73
|
+
if (!url.startsWith('http')) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// NOTE: Lighthouse uses a tld database to determine the root domain, but here
|
|
77
|
+
// we are using third party web's database. Doesn't really work for the case of classifying
|
|
78
|
+
// domains 3pweb doesn't know about, so it will just give us a guess.
|
|
79
|
+
const rootDomain = ThirdPartyWeb.ThirdPartyWeb.getRootDomain(url);
|
|
80
|
+
if (!rootDomain) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (entityCache.has(rootDomain)) {
|
|
84
|
+
return entityCache.get(rootDomain);
|
|
85
|
+
}
|
|
86
|
+
const unrecognizedEntity = {
|
|
87
|
+
name: rootDomain,
|
|
88
|
+
company: rootDomain,
|
|
89
|
+
category: '',
|
|
90
|
+
categories: [],
|
|
91
|
+
domains: [rootDomain],
|
|
92
|
+
averageExecutionTime: 0,
|
|
93
|
+
totalExecutionTime: 0,
|
|
94
|
+
totalOccurrences: 0,
|
|
95
|
+
isUnrecognized: true,
|
|
96
|
+
};
|
|
97
|
+
entityCache.set(rootDomain, unrecognizedEntity);
|
|
98
|
+
return unrecognizedEntity;
|
|
99
|
+
}
|
|
100
|
+
function getChromeExtensionOrigin(url) {
|
|
101
|
+
return url.protocol + '//' + url.host;
|
|
102
|
+
}
|
|
103
|
+
function makeUpChromeExtensionEntity(entityCache, url, extensionName) {
|
|
104
|
+
const parsedUrl = new URL(url);
|
|
105
|
+
const origin = getChromeExtensionOrigin(parsedUrl);
|
|
106
|
+
const host = new URL(origin).host;
|
|
107
|
+
const name = extensionName || host;
|
|
108
|
+
const cachedEntity = entityCache.get(origin);
|
|
109
|
+
if (cachedEntity) {
|
|
110
|
+
return cachedEntity;
|
|
111
|
+
}
|
|
112
|
+
const chromeExtensionEntity = {
|
|
113
|
+
name,
|
|
114
|
+
company: name,
|
|
115
|
+
category: 'Chrome Extension',
|
|
116
|
+
homepage: 'https://chromewebstore.google.com/detail/' + host,
|
|
117
|
+
categories: [],
|
|
118
|
+
domains: [origin],
|
|
119
|
+
averageExecutionTime: 0,
|
|
120
|
+
totalExecutionTime: 0,
|
|
121
|
+
totalOccurrences: 0,
|
|
122
|
+
};
|
|
123
|
+
entityCache.set(origin, chromeExtensionEntity);
|
|
124
|
+
return chromeExtensionEntity;
|
|
125
|
+
}
|
|
126
|
+
export function addEventToEntityMapping(event, entityMappings) {
|
|
127
|
+
// As we share the entityMappings between Network and Renderer... We can have ResourceSendRequest events passed in here
|
|
128
|
+
// that were already mapped in Network. So, to avoid mapping twice, we always check that we didn't yet.
|
|
129
|
+
if (entityMappings.entityByEvent.has(event)) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const entity = getEntityForEvent(event, entityMappings);
|
|
133
|
+
if (!entity) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const mappedEvents = entityMappings.eventsByEntity.get(entity);
|
|
137
|
+
if (mappedEvents) {
|
|
138
|
+
mappedEvents.push(event);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
entityMappings.eventsByEntity.set(entity, [event]);
|
|
142
|
+
}
|
|
143
|
+
entityMappings.entityByEvent.set(event, entity);
|
|
144
|
+
}
|
|
145
|
+
/** A slight upgrade of addEventToEntityMapping to handle the sub-events of a network request. **/
|
|
146
|
+
export function addNetworkRequestToEntityMapping(networkRequest, entityMappings, requestTraceEvents) {
|
|
147
|
+
const entity = getEntityForEvent(networkRequest, entityMappings);
|
|
148
|
+
if (!entity) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// In addition to mapping the network request, we'll also assign this entity to its "child" instant events like receiveData, willSendRequest, finishLoading, etc,
|
|
152
|
+
const eventsToMap = [networkRequest, ...Object.values(requestTraceEvents).flat()];
|
|
153
|
+
const mappedEvents = entityMappings.eventsByEntity.get(entity);
|
|
154
|
+
if (mappedEvents) {
|
|
155
|
+
mappedEvents.push(...eventsToMap);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
entityMappings.eventsByEntity.set(entity, eventsToMap);
|
|
159
|
+
}
|
|
160
|
+
for (const evt of eventsToMap) {
|
|
161
|
+
entityMappings.entityByEvent.set(evt, entity);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Copyright 2024 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 Platform from '../../../core/platform/platform.js';
|
|
5
|
+
import { sortTraceEventsInPlace } from './Trace.js';
|
|
6
|
+
import { canBuildTreesFromEvents, treify } from './TreeHelpers.js';
|
|
7
|
+
export function buildTrackDataFromExtensionEntries(extensionEntries, extensionTrackData, entryToNode) {
|
|
8
|
+
const dataByTrack = new Map();
|
|
9
|
+
for (const entry of extensionEntries) {
|
|
10
|
+
// Batch data by track group. For each batch, add the data of every
|
|
11
|
+
// track in the group. In cases where no track group is provided,
|
|
12
|
+
// we use the standalone track data, but use a fixed prefix in the
|
|
13
|
+
// batch key to prevent collisions where a track group has the
|
|
14
|
+
// same name as a standalone track.
|
|
15
|
+
const key = entry.devtoolsObj.trackGroup || `track-name-${entry.devtoolsObj.track}`;
|
|
16
|
+
const batchedData = Platform.MapUtilities.getWithDefault(dataByTrack, key, () => ({
|
|
17
|
+
name: entry.devtoolsObj.trackGroup || entry.devtoolsObj.track,
|
|
18
|
+
isTrackGroup: Boolean(entry.devtoolsObj.trackGroup),
|
|
19
|
+
entriesByTrack: { [entry.devtoolsObj.track]: [] },
|
|
20
|
+
}));
|
|
21
|
+
if (!batchedData.entriesByTrack[entry.devtoolsObj.track]) {
|
|
22
|
+
batchedData.entriesByTrack[entry.devtoolsObj.track] = [];
|
|
23
|
+
}
|
|
24
|
+
const entriesInTrack = batchedData.entriesByTrack[entry.devtoolsObj.track];
|
|
25
|
+
entriesInTrack.push(entry);
|
|
26
|
+
}
|
|
27
|
+
// Calculate self time if possible for track entries, on a track
|
|
28
|
+
// by track basis.
|
|
29
|
+
for (const trackData of dataByTrack.values()) {
|
|
30
|
+
for (const entries of Object.values(trackData.entriesByTrack)) {
|
|
31
|
+
sortTraceEventsInPlace(entries);
|
|
32
|
+
if (canBuildTreesFromEvents(entries)) {
|
|
33
|
+
for (const [entry, node] of treify(entries).entryToNode) {
|
|
34
|
+
entryToNode.set(entry, node);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
extensionTrackData.push(trackData);
|
|
39
|
+
}
|
|
40
|
+
return { extensionTrackData, entryToNode };
|
|
41
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Important: we purposefully treat `potentially_blocking` as
|
|
2
|
+
// non-render-blocking here because:
|
|
3
|
+
// 1. An async script can run on the main thread at any point, including before
|
|
4
|
+
// the page is loaded
|
|
5
|
+
// 2. An async script will never block the parsing and rendering process of the
|
|
6
|
+
// browser.
|
|
7
|
+
// 3. Therefore, from a developer's point of view, there is nothing more they
|
|
8
|
+
// can do if they've put `async` on, and within the context of Insights, we
|
|
9
|
+
// shouldn't report an async script as render blocking.
|
|
10
|
+
// In the future we may want to consider suggesting the use of `defer` over
|
|
11
|
+
// `async`, as it doesn't have this concern, but for now we'll allow `async`
|
|
12
|
+
// and not report it as an issue.
|
|
13
|
+
const NON_RENDER_BLOCKING_VALUES = new Set([
|
|
14
|
+
'non_blocking',
|
|
15
|
+
'dynamically_injected_non_blocking',
|
|
16
|
+
'potentially_blocking',
|
|
17
|
+
]);
|
|
18
|
+
export function isSyntheticNetworkRequestEventRenderBlocking(event) {
|
|
19
|
+
return !NON_RENDER_BLOCKING_VALUES.has(event.args.data.renderBlocking);
|
|
20
|
+
}
|
|
21
|
+
const HIGH_NETWORK_PRIORITIES = new Set([
|
|
22
|
+
"VeryHigh" /* Protocol.Network.ResourcePriority.VeryHigh */,
|
|
23
|
+
"High" /* Protocol.Network.ResourcePriority.High */,
|
|
24
|
+
"Medium" /* Protocol.Network.ResourcePriority.Medium */,
|
|
25
|
+
]);
|
|
26
|
+
export function isSyntheticNetworkRequestHighPriority(event) {
|
|
27
|
+
return HIGH_NETWORK_PRIORITIES.has(event.args.data.priority);
|
|
28
|
+
}
|
|
29
|
+
export const CACHEABLE_STATUS_CODES = new Set([200, 203, 206]);
|
|
30
|
+
/** @type {Set<LH.Crdp.Network.ResourceType>} */
|
|
31
|
+
export const STATIC_RESOURCE_TYPES = new Set([
|
|
32
|
+
"Font" /* Protocol.Network.ResourceType.Font */,
|
|
33
|
+
"Image" /* Protocol.Network.ResourceType.Image */,
|
|
34
|
+
"Media" /* Protocol.Network.ResourceType.Media */,
|
|
35
|
+
"Script" /* Protocol.Network.ResourceType.Script */,
|
|
36
|
+
"Stylesheet" /* Protocol.Network.ResourceType.Stylesheet */,
|
|
37
|
+
]);
|
|
38
|
+
export const NON_NETWORK_SCHEMES = [
|
|
39
|
+
'blob', // @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
|
|
40
|
+
'data', // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
|
|
41
|
+
'intent', // @see https://developer.chrome.com/docs/multidevice/android/intents/
|
|
42
|
+
'file', // @see https://en.wikipedia.org/wiki/File_URI_scheme
|
|
43
|
+
'filesystem', // @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystem
|
|
44
|
+
'chrome-extension',
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Parses Cache-Control directives based on https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
48
|
+
* eg. 'no-cache, no-store, max-age=0, no-transform, private' will return
|
|
49
|
+
* {no-cache: true, no-store: true, max-age: 0, no-transform: true, private: true}
|
|
50
|
+
*/
|
|
51
|
+
export function parseCacheControl(header) {
|
|
52
|
+
if (!header) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const directives = header.split(',').map(directive => directive.trim());
|
|
56
|
+
const cacheControlOptions = {};
|
|
57
|
+
for (const directive of directives) {
|
|
58
|
+
const [key, value] = directive.split('=').map(part => part.trim());
|
|
59
|
+
switch (key) {
|
|
60
|
+
case 'max-age': {
|
|
61
|
+
const maxAge = parseInt(value, 10);
|
|
62
|
+
if (!isNaN(maxAge)) {
|
|
63
|
+
cacheControlOptions['max-age'] = maxAge;
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case 'no-cache':
|
|
68
|
+
cacheControlOptions['no-cache'] = true;
|
|
69
|
+
break;
|
|
70
|
+
case 'no-store':
|
|
71
|
+
cacheControlOptions['no-store'] = true;
|
|
72
|
+
break;
|
|
73
|
+
case 'must-revalidate':
|
|
74
|
+
cacheControlOptions['must-revalidate'] = true;
|
|
75
|
+
break;
|
|
76
|
+
case 'private':
|
|
77
|
+
cacheControlOptions['private'] = true;
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
// Ignore unknown directives
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return cacheControlOptions;
|
|
85
|
+
}
|
|
86
|
+
const SECURE_LOCALHOST_DOMAINS = ['localhost', '127.0.0.1'];
|
|
87
|
+
/**
|
|
88
|
+
* Is the host localhost-enough to satisfy the "secure context" definition
|
|
89
|
+
* https://github.com/GoogleChrome/lighthouse/pull/11766#discussion_r582340683
|
|
90
|
+
*/
|
|
91
|
+
export function isSyntheticNetworkRequestLocalhost(event) {
|
|
92
|
+
try {
|
|
93
|
+
const hostname = new URL(event.args.data.url).hostname;
|
|
94
|
+
// Any hostname terminating in `.localhost` is considered to be local.
|
|
95
|
+
// https://w3c.github.io/webappsec-secure-contexts/#localhost
|
|
96
|
+
// This method doesn't consider IPs that resolve to loopback, IPv6 or other loopback edgecases
|
|
97
|
+
return SECURE_LOCALHOST_DOMAINS.includes(hostname) || hostname.endsWith('.localhost');
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|