chrome-devtools-mcp 0.0.1 → 0.0.2
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 +196 -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 +2029 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +330 -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 +86 -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 +64 -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/Linkifier.js +34 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +20 -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 +459 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +137 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/QueryParamHandler.js +4 -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 +506 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +13 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +159 -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 +79 -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 +1281 -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 +17 -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/Worker.js +44 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +44 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +415 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +161 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +510 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +66 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +59 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +232 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +953 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +12 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +9 -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/DOMUtilities.js +122 -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/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 +536 -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/platform.js +26 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +800 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/NodeURL.js +31 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +13 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +1 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +5 -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 +846 -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 +220 -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 +1279 -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 +1518 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +902 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +315 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +572 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1316 -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 +361 -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/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 +232 -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 +242 -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 +1610 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1231 -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 +346 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +125 -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 +73 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +83 -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 +1915 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1660 -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 +300 -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 +563 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +292 -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 +905 -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 +922 -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/ScreenCaptureModel.js +174 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +395 -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 +110 -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 +678 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +41 -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 +189 -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 +276 -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 +262 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +382 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +49 -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 +1117 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +89 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +1513 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +339 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1558 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7473 -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 +260 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +1096 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +130 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +514 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +90 -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/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 +120 -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/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 +332 -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 +370 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +171 -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 +547 -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 +592 -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 +483 -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 +446 -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 +400 -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 +540 -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 +207 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +98 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +251 -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 +297 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +184 -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 +493 -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 +184 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +744 -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 +488 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +208 -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 +180 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +256 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +89 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +81 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +160 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +117 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +262 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +188 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +182 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +88 -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 +199 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +544 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +191 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +135 -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 +97 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +101 -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 +565 -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/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 +38 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +944 -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 +148 -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 +8 -0
- package/build/src/McpContext.js +204 -0
- package/build/src/McpResponse.js +178 -0
- package/build/src/Mutex.js +40 -0
- package/build/src/PageCollector.js +68 -0
- package/build/src/browser.js +105 -0
- package/build/src/formatters/consoleFormatter.js +71 -0
- package/build/src/formatters/networkFormatter.js +34 -0
- package/build/src/formatters/snapshotFormatter.js +75 -0
- package/build/src/index.js +206 -0
- package/build/src/logger.js +26 -0
- package/build/src/tools/ToolDefinition.js +8 -0
- package/build/src/tools/categories.js +14 -0
- package/build/src/tools/console.js +19 -0
- package/build/src/tools/emulation.js +61 -0
- package/build/src/tools/input.js +202 -0
- package/build/src/tools/network.js +35 -0
- package/build/src/tools/pages.js +181 -0
- package/build/src/tools/performance.js +116 -0
- package/build/src/tools/screenshot.js +65 -0
- package/build/src/tools/script.js +35 -0
- package/build/src/tools/snapshot.js +42 -0
- package/build/src/trace-processing/parse.js +73 -0
- package/build/src/waitForHelpers.js +109 -0
- package/package.json +53 -6
- package/README +0 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Copyright 2021 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 { Events as NetworkLogEvents, NetworkLog } from './NetworkLog.js';
|
|
6
|
+
/**
|
|
7
|
+
* A class that facilitates resolving a requestId to a network request. If the requestId does not resolve, a listener
|
|
8
|
+
* is installed on the network request to wait for the request to appear. This is useful if an attempt to resolve the
|
|
9
|
+
* requestId is made before the network request got reported.
|
|
10
|
+
*
|
|
11
|
+
* This functionality is intentionally provided in this class (instead of as part of NetworkLog) to enable clients
|
|
12
|
+
* to control the duration of the wait and the lifetime of the associated promises by using the `clear` method on
|
|
13
|
+
* this class.
|
|
14
|
+
*/
|
|
15
|
+
export class RequestResolver extends Common.ResolverBase.ResolverBase {
|
|
16
|
+
networkListener = null;
|
|
17
|
+
networkLog;
|
|
18
|
+
constructor(networkLog = NetworkLog.instance()) {
|
|
19
|
+
super();
|
|
20
|
+
this.networkLog = networkLog;
|
|
21
|
+
}
|
|
22
|
+
getForId(id) {
|
|
23
|
+
const requests = this.networkLog.requestsForId(id);
|
|
24
|
+
if (requests.length > 0) {
|
|
25
|
+
return requests[0];
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
onRequestAdded(event) {
|
|
30
|
+
const { request } = event.data;
|
|
31
|
+
const backendRequestId = request.backendRequestId();
|
|
32
|
+
if (backendRequestId) {
|
|
33
|
+
this.onResolve(backendRequestId, request);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
startListening() {
|
|
37
|
+
if (this.networkListener) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.networkListener = this.networkLog.addEventListener(NetworkLogEvents.RequestAdded, this.onRequestAdded, this);
|
|
41
|
+
}
|
|
42
|
+
stopListening() {
|
|
43
|
+
if (!this.networkListener) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
Common.EventTarget.removeEventListeners([this.networkListener]);
|
|
47
|
+
this.networkListener = null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Copyright 2020 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 i18n from '../../core/i18n/i18n.js';
|
|
6
|
+
const UIStrings = {
|
|
7
|
+
/**
|
|
8
|
+
* @description Text to preserve the log after refreshing
|
|
9
|
+
*/
|
|
10
|
+
preserveLog: 'Preserve log',
|
|
11
|
+
/**
|
|
12
|
+
* @description A term that can be used to search in the command menu, and will find the search
|
|
13
|
+
* result 'Preserve log on page reload / navigation'. This is an additional search term to help
|
|
14
|
+
* user find the setting even when they don't know the exact name of it.
|
|
15
|
+
*/
|
|
16
|
+
preserve: 'preserve',
|
|
17
|
+
/**
|
|
18
|
+
* @description A term that can be used to search in the command menu, and will find the search
|
|
19
|
+
* result 'Preserve log on page reload / navigation'. This is an additional search term to help
|
|
20
|
+
* user find the setting even when they don't know the exact name of it.
|
|
21
|
+
*/
|
|
22
|
+
clear: 'clear',
|
|
23
|
+
/**
|
|
24
|
+
* @description A term that can be used to search in the command menu, and will find the search
|
|
25
|
+
* result 'Preserve log on page reload / navigation'. This is an additional search term to help
|
|
26
|
+
* user find the setting even when they don't know the exact name of it.
|
|
27
|
+
*/
|
|
28
|
+
reset: 'reset',
|
|
29
|
+
/**
|
|
30
|
+
* @description Title of a setting under the Network category that can be invoked through the Command Menu
|
|
31
|
+
*/
|
|
32
|
+
preserveLogOnPageReload: 'Preserve log on page reload / navigation',
|
|
33
|
+
/**
|
|
34
|
+
* @description Title of a setting under the Network category that can be invoked through the Command Menu
|
|
35
|
+
*/
|
|
36
|
+
doNotPreserveLogOnPageReload: 'Do not preserve log on page reload / navigation',
|
|
37
|
+
/**
|
|
38
|
+
* @description Title of an action in the network tool to toggle recording
|
|
39
|
+
*/
|
|
40
|
+
recordNetworkLog: 'Record network log',
|
|
41
|
+
};
|
|
42
|
+
const str_ = i18n.i18n.registerUIStrings('models/logs/logs-meta.ts', UIStrings);
|
|
43
|
+
const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
|
|
44
|
+
Common.Settings.registerSettingExtension({
|
|
45
|
+
category: "NETWORK" /* Common.Settings.SettingCategory.NETWORK */,
|
|
46
|
+
title: i18nLazyString(UIStrings.preserveLog),
|
|
47
|
+
settingName: 'network-log.preserve-log',
|
|
48
|
+
settingType: "boolean" /* Common.Settings.SettingType.BOOLEAN */,
|
|
49
|
+
defaultValue: false,
|
|
50
|
+
tags: [
|
|
51
|
+
i18nLazyString(UIStrings.preserve),
|
|
52
|
+
i18nLazyString(UIStrings.clear),
|
|
53
|
+
i18nLazyString(UIStrings.reset),
|
|
54
|
+
],
|
|
55
|
+
options: [
|
|
56
|
+
{
|
|
57
|
+
value: true,
|
|
58
|
+
title: i18nLazyString(UIStrings.preserveLogOnPageReload),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
value: false,
|
|
62
|
+
title: i18nLazyString(UIStrings.doNotPreserveLogOnPageReload),
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
});
|
|
66
|
+
Common.Settings.registerSettingExtension({
|
|
67
|
+
category: "NETWORK" /* Common.Settings.SettingCategory.NETWORK */,
|
|
68
|
+
title: i18nLazyString(UIStrings.recordNetworkLog),
|
|
69
|
+
settingName: 'network-log.record-log',
|
|
70
|
+
settingType: "boolean" /* Common.Settings.SettingType.BOOLEAN */,
|
|
71
|
+
defaultValue: true,
|
|
72
|
+
storageType: "Session" /* Common.Settings.SettingStorageType.SESSION */,
|
|
73
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Copyright 2019 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 LogManager from './LogManager.js';
|
|
5
|
+
import * as NetworkLog from './NetworkLog.js';
|
|
6
|
+
import * as RequestResolver from './RequestResolver.js';
|
|
7
|
+
export { LogManager, NetworkLog, RequestResolver };
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
// Copyright 2021 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
|
+
/*
|
|
5
|
+
* Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
|
|
6
|
+
* Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org>
|
|
7
|
+
* Copyright (C) 2011 Google Inc. All rights reserved.
|
|
8
|
+
*
|
|
9
|
+
* Redistribution and use in source and binary forms, with or without
|
|
10
|
+
* modification, are permitted provided that the following conditions
|
|
11
|
+
* are met:
|
|
12
|
+
*
|
|
13
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
14
|
+
* notice, this list of conditions and the following disclaimer.
|
|
15
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
16
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
17
|
+
* documentation and/or other materials provided with the distribution.
|
|
18
|
+
* 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
|
|
19
|
+
* its contributors may be used to endorse or promote products derived
|
|
20
|
+
* from this software without specific prior written permission.
|
|
21
|
+
*
|
|
22
|
+
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
|
|
23
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
24
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
25
|
+
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
|
26
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
27
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
28
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
29
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
30
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
31
|
+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
32
|
+
*/
|
|
33
|
+
import * as Common from '../../core/common/common.js';
|
|
34
|
+
import * as i18n from '../../core/i18n/i18n.js';
|
|
35
|
+
const UIStrings = {
|
|
36
|
+
/**
|
|
37
|
+
* @description Latency download total format in Network Time Calculator of the Network panel
|
|
38
|
+
* @example {20ms} PH1
|
|
39
|
+
* @example {20ms} PH2
|
|
40
|
+
* @example {40ms} PH3
|
|
41
|
+
*/
|
|
42
|
+
sLatencySDownloadSTotal: '{PH1} latency, {PH2} download ({PH3} total)',
|
|
43
|
+
/**
|
|
44
|
+
* @description Latency format in Network Time Calculator of the Network panel
|
|
45
|
+
* @example {20ms} PH1
|
|
46
|
+
*/
|
|
47
|
+
sLatency: '{PH1} latency',
|
|
48
|
+
/**
|
|
49
|
+
* @description Duration of the download in ms/s shown for a completed network request.
|
|
50
|
+
* @example {5ms} PH1
|
|
51
|
+
*/
|
|
52
|
+
sDownload: '{PH1} download',
|
|
53
|
+
/**
|
|
54
|
+
* @description From service worker format in Network Time Calculator of the Network panel
|
|
55
|
+
* @example {20ms latency} PH1
|
|
56
|
+
*/
|
|
57
|
+
sFromServiceworker: '{PH1} (from `ServiceWorker`)',
|
|
58
|
+
/**
|
|
59
|
+
* @description From cache format in Network Time Calculator of the Network panel
|
|
60
|
+
* @example {20ms latency} PH1
|
|
61
|
+
*/
|
|
62
|
+
sFromCache: '{PH1} (from cache)',
|
|
63
|
+
};
|
|
64
|
+
const str_ = i18n.i18n.registerUIStrings('models/network_time_calculator/NetworkTimeCalculator.ts', UIStrings);
|
|
65
|
+
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
66
|
+
export class NetworkTimeBoundary {
|
|
67
|
+
minimum;
|
|
68
|
+
maximum;
|
|
69
|
+
constructor(minimum, maximum) {
|
|
70
|
+
this.minimum = minimum;
|
|
71
|
+
this.maximum = maximum;
|
|
72
|
+
}
|
|
73
|
+
equals(other) {
|
|
74
|
+
return (this.minimum === other.minimum) && (this.maximum === other.maximum);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export class NetworkTimeCalculator extends Common.ObjectWrapper.ObjectWrapper {
|
|
78
|
+
#minimumBoundary = -1;
|
|
79
|
+
#maximumBoundary = -1;
|
|
80
|
+
#boundaryChangedEventThrottler = new Common.Throttler.Throttler(0);
|
|
81
|
+
#window = null;
|
|
82
|
+
#workingArea;
|
|
83
|
+
startAtZero;
|
|
84
|
+
constructor(startAtZero) {
|
|
85
|
+
super();
|
|
86
|
+
this.startAtZero = startAtZero;
|
|
87
|
+
}
|
|
88
|
+
setWindow(window) {
|
|
89
|
+
this.#window = window;
|
|
90
|
+
this.boundaryChanged();
|
|
91
|
+
}
|
|
92
|
+
computePosition(time) {
|
|
93
|
+
return (time - this.minimumBoundary()) / this.boundarySpan() * (this.#workingArea || 0);
|
|
94
|
+
}
|
|
95
|
+
formatValue(value, precision) {
|
|
96
|
+
return i18n.TimeUtilities.secondsToString(value, Boolean(precision));
|
|
97
|
+
}
|
|
98
|
+
minimumBoundary() {
|
|
99
|
+
return this.#window ? this.#window.minimum : this.#minimumBoundary;
|
|
100
|
+
}
|
|
101
|
+
zeroTime() {
|
|
102
|
+
return this.#minimumBoundary;
|
|
103
|
+
}
|
|
104
|
+
maximumBoundary() {
|
|
105
|
+
return this.#window ? this.#window.maximum : this.#maximumBoundary;
|
|
106
|
+
}
|
|
107
|
+
boundary() {
|
|
108
|
+
return new NetworkTimeBoundary(this.minimumBoundary(), this.maximumBoundary());
|
|
109
|
+
}
|
|
110
|
+
boundarySpan() {
|
|
111
|
+
return this.maximumBoundary() - this.minimumBoundary();
|
|
112
|
+
}
|
|
113
|
+
reset() {
|
|
114
|
+
this.#minimumBoundary = -1;
|
|
115
|
+
this.#maximumBoundary = -1;
|
|
116
|
+
this.boundaryChanged();
|
|
117
|
+
}
|
|
118
|
+
value() {
|
|
119
|
+
return 0;
|
|
120
|
+
}
|
|
121
|
+
setDisplayWidth(clientWidth) {
|
|
122
|
+
this.#workingArea = clientWidth;
|
|
123
|
+
}
|
|
124
|
+
computeBarGraphPercentages(request) {
|
|
125
|
+
let start;
|
|
126
|
+
let middle;
|
|
127
|
+
let end;
|
|
128
|
+
if (request.startTime !== -1) {
|
|
129
|
+
start = ((request.startTime - this.minimumBoundary()) / this.boundarySpan()) * 100;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
start = 0;
|
|
133
|
+
}
|
|
134
|
+
if (request.responseReceivedTime !== -1) {
|
|
135
|
+
middle = ((request.responseReceivedTime - this.minimumBoundary()) / this.boundarySpan()) * 100;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
middle = (this.startAtZero ? start : 100);
|
|
139
|
+
}
|
|
140
|
+
if (request.endTime !== -1) {
|
|
141
|
+
end = ((request.endTime - this.minimumBoundary()) / this.boundarySpan()) * 100;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
end = (this.startAtZero ? middle : 100);
|
|
145
|
+
}
|
|
146
|
+
if (this.startAtZero) {
|
|
147
|
+
end -= start;
|
|
148
|
+
middle -= start;
|
|
149
|
+
start = 0;
|
|
150
|
+
}
|
|
151
|
+
return { start, middle, end };
|
|
152
|
+
}
|
|
153
|
+
boundaryChanged() {
|
|
154
|
+
void this.#boundaryChangedEventThrottler.schedule(async () => {
|
|
155
|
+
this.dispatchEventToListeners("BoundariesChanged" /* Events.BOUNDARIES_CHANGED */);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
updateBoundariesForEventTime(eventTime) {
|
|
159
|
+
if (eventTime === -1 || this.startAtZero) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (this.#maximumBoundary === undefined || eventTime > this.#maximumBoundary) {
|
|
163
|
+
this.#maximumBoundary = eventTime;
|
|
164
|
+
this.boundaryChanged();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
computeBarGraphLabels(request) {
|
|
168
|
+
let rightLabel = '';
|
|
169
|
+
if (request.responseReceivedTime !== -1 && request.endTime !== -1) {
|
|
170
|
+
rightLabel = i18n.TimeUtilities.secondsToString(request.endTime - request.responseReceivedTime);
|
|
171
|
+
}
|
|
172
|
+
const hasLatency = request.latency > 0;
|
|
173
|
+
const leftLabel = hasLatency ? i18n.TimeUtilities.secondsToString(request.latency) : rightLabel;
|
|
174
|
+
if (request.timing) {
|
|
175
|
+
return { left: leftLabel, right: rightLabel, tooltip: undefined };
|
|
176
|
+
}
|
|
177
|
+
let tooltip;
|
|
178
|
+
if (hasLatency && rightLabel) {
|
|
179
|
+
const total = i18n.TimeUtilities.secondsToString(request.duration);
|
|
180
|
+
tooltip = i18nString(UIStrings.sLatencySDownloadSTotal, { PH1: leftLabel, PH2: rightLabel, PH3: total });
|
|
181
|
+
}
|
|
182
|
+
else if (hasLatency) {
|
|
183
|
+
tooltip = i18nString(UIStrings.sLatency, { PH1: leftLabel });
|
|
184
|
+
}
|
|
185
|
+
else if (rightLabel) {
|
|
186
|
+
tooltip = i18nString(UIStrings.sDownload, { PH1: rightLabel });
|
|
187
|
+
}
|
|
188
|
+
if (request.fetchedViaServiceWorker) {
|
|
189
|
+
tooltip = i18nString(UIStrings.sFromServiceworker, { PH1: String(tooltip) });
|
|
190
|
+
}
|
|
191
|
+
else if (request.cached()) {
|
|
192
|
+
tooltip = i18nString(UIStrings.sFromCache, { PH1: String(tooltip) });
|
|
193
|
+
}
|
|
194
|
+
return { left: leftLabel, right: rightLabel, tooltip };
|
|
195
|
+
}
|
|
196
|
+
updateBoundaries(request) {
|
|
197
|
+
const lowerBound = this.lowerBound(request);
|
|
198
|
+
const upperBound = this.upperBound(request);
|
|
199
|
+
let changed = false;
|
|
200
|
+
if (lowerBound !== -1 || this.startAtZero) {
|
|
201
|
+
changed = this.extendBoundariesToIncludeTimestamp(this.startAtZero ? 0 : lowerBound);
|
|
202
|
+
}
|
|
203
|
+
if (upperBound !== -1) {
|
|
204
|
+
changed = this.extendBoundariesToIncludeTimestamp(upperBound) || changed;
|
|
205
|
+
}
|
|
206
|
+
if (changed) {
|
|
207
|
+
this.boundaryChanged();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
extendBoundariesToIncludeTimestamp(timestamp) {
|
|
211
|
+
const previousMinimumBoundary = this.#minimumBoundary;
|
|
212
|
+
const previousMaximumBoundary = this.#maximumBoundary;
|
|
213
|
+
const minOffset = MINIMUM_SPREAD;
|
|
214
|
+
if (this.#minimumBoundary === -1 || this.#maximumBoundary === -1) {
|
|
215
|
+
this.#minimumBoundary = timestamp;
|
|
216
|
+
this.#maximumBoundary = timestamp + minOffset;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
this.#minimumBoundary = Math.min(timestamp, this.#minimumBoundary);
|
|
220
|
+
this.#maximumBoundary = Math.max(timestamp, this.#minimumBoundary + minOffset, this.#maximumBoundary);
|
|
221
|
+
}
|
|
222
|
+
return previousMinimumBoundary !== this.#minimumBoundary || previousMaximumBoundary !== this.#maximumBoundary;
|
|
223
|
+
}
|
|
224
|
+
lowerBound(_request) {
|
|
225
|
+
return 0;
|
|
226
|
+
}
|
|
227
|
+
upperBound(_request) {
|
|
228
|
+
return 0;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
const MINIMUM_SPREAD = 0.1;
|
|
232
|
+
export class NetworkTransferTimeCalculator extends NetworkTimeCalculator {
|
|
233
|
+
constructor() {
|
|
234
|
+
super(false);
|
|
235
|
+
}
|
|
236
|
+
formatValue(value, precision) {
|
|
237
|
+
return i18n.TimeUtilities.secondsToString(value - this.zeroTime(), Boolean(precision));
|
|
238
|
+
}
|
|
239
|
+
lowerBound(request) {
|
|
240
|
+
return request.issueTime();
|
|
241
|
+
}
|
|
242
|
+
upperBound(request) {
|
|
243
|
+
return request.endTime;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
export class NetworkTransferDurationCalculator extends NetworkTimeCalculator {
|
|
247
|
+
constructor() {
|
|
248
|
+
super(true);
|
|
249
|
+
}
|
|
250
|
+
formatValue(value, precision) {
|
|
251
|
+
return i18n.TimeUtilities.secondsToString(value, Boolean(precision));
|
|
252
|
+
}
|
|
253
|
+
upperBound(request) {
|
|
254
|
+
return request.duration;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
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
|
+
export const ServiceWorkerRangeNames = new Set([
|
|
5
|
+
"serviceworker" /* RequestTimeRangeNames.SERVICE_WORKER */,
|
|
6
|
+
"serviceworker-preparation" /* RequestTimeRangeNames.SERVICE_WORKER_PREPARATION */,
|
|
7
|
+
"serviceworker-respondwith" /* RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH */,
|
|
8
|
+
"serviceworker-routerevaluation" /* RequestTimeRangeNames.SERVICE_WORKER_ROUTER_EVALUATION */,
|
|
9
|
+
"serviceworker-cachelookup" /* RequestTimeRangeNames.SERVICE_WORKER_CACHE_LOOKUP */,
|
|
10
|
+
]);
|
|
11
|
+
export const ConnectionSetupRangeNames = new Set([
|
|
12
|
+
"queueing" /* RequestTimeRangeNames.QUEUEING */,
|
|
13
|
+
"blocking" /* RequestTimeRangeNames.BLOCKING */,
|
|
14
|
+
"connecting" /* RequestTimeRangeNames.CONNECTING */,
|
|
15
|
+
"dns" /* RequestTimeRangeNames.DNS */,
|
|
16
|
+
"proxy" /* RequestTimeRangeNames.PROXY */,
|
|
17
|
+
"ssl" /* RequestTimeRangeNames.SSL */,
|
|
18
|
+
]);
|
|
19
|
+
export function calculateRequestTimeRanges(request, navigationStart) {
|
|
20
|
+
const result = [];
|
|
21
|
+
function addRange(name, start, end) {
|
|
22
|
+
if (start < Number.MAX_VALUE && start <= end) {
|
|
23
|
+
result.push({ name, start, end });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function firstPositive(numbers) {
|
|
27
|
+
for (let i = 0; i < numbers.length; ++i) {
|
|
28
|
+
if (numbers[i] > 0) {
|
|
29
|
+
return numbers[i];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
function addOffsetRange(name, start, end) {
|
|
35
|
+
if (start >= 0 && end >= 0) {
|
|
36
|
+
addRange(name, startTime + (start / 1000), startTime + (end / 1000));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// In some situations, argument `start` may come before `startTime` (`timing.requestStart`). This is especially true
|
|
40
|
+
// in cases such as SW static routing API where fields like `workerRouterEvaluationStart` or `workerCacheLookupStart`
|
|
41
|
+
// is set before setting `timing.requestStart`. If the `start` and `end` is known to be a valid value (i.e. not default
|
|
42
|
+
// invalid value -1 or undefined), we allow adding the range.
|
|
43
|
+
function addMaybeNegativeOffsetRange(name, start, end) {
|
|
44
|
+
addRange(name, startTime + (start / 1000), startTime + (end / 1000));
|
|
45
|
+
}
|
|
46
|
+
const timing = request.timing;
|
|
47
|
+
if (!timing) {
|
|
48
|
+
const start = request.issueTime() !== -1 ? request.issueTime() : request.startTime !== -1 ? request.startTime : 0;
|
|
49
|
+
const hasDifferentIssueAndStartTime = request.issueTime() !== -1 && request.startTime !== -1 && request.issueTime() !== request.startTime;
|
|
50
|
+
const middle = (request.responseReceivedTime === -1) ?
|
|
51
|
+
(hasDifferentIssueAndStartTime ? request.startTime : Number.MAX_VALUE) :
|
|
52
|
+
request.responseReceivedTime;
|
|
53
|
+
const end = (request.endTime === -1) ? Number.MAX_VALUE : request.endTime;
|
|
54
|
+
addRange("total" /* RequestTimeRangeNames.TOTAL */, start, end);
|
|
55
|
+
addRange("blocking" /* RequestTimeRangeNames.BLOCKING */, start, middle);
|
|
56
|
+
const state = request.responseReceivedTime === -1 ? "connecting" /* RequestTimeRangeNames.CONNECTING */ : "receiving" /* RequestTimeRangeNames.RECEIVING */;
|
|
57
|
+
addRange(state, middle, end);
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
const issueTime = request.issueTime();
|
|
61
|
+
const startTime = timing.requestTime;
|
|
62
|
+
const endTime = firstPositive([request.endTime, request.responseReceivedTime]) || startTime;
|
|
63
|
+
addRange("total" /* RequestTimeRangeNames.TOTAL */, issueTime < startTime ? issueTime : startTime, endTime);
|
|
64
|
+
if (timing.pushStart) {
|
|
65
|
+
const pushEnd = timing.pushEnd || endTime;
|
|
66
|
+
// Only show the part of push that happened after the navigation/reload.
|
|
67
|
+
// Pushes that happened on the same connection before we started main request will not be shown.
|
|
68
|
+
if (pushEnd > navigationStart) {
|
|
69
|
+
addRange("push" /* RequestTimeRangeNames.PUSH */, Math.max(timing.pushStart, navigationStart), pushEnd);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (issueTime < startTime) {
|
|
73
|
+
addRange("queueing" /* RequestTimeRangeNames.QUEUEING */, issueTime, startTime);
|
|
74
|
+
}
|
|
75
|
+
const responseReceived = (request.responseReceivedTime - startTime) * 1000;
|
|
76
|
+
if (request.fetchedViaServiceWorker) {
|
|
77
|
+
addOffsetRange("blocking" /* RequestTimeRangeNames.BLOCKING */, 0, timing.workerStart);
|
|
78
|
+
addOffsetRange("serviceworker-preparation" /* RequestTimeRangeNames.SERVICE_WORKER_PREPARATION */, timing.workerStart, timing.workerReady);
|
|
79
|
+
addOffsetRange("serviceworker-respondwith" /* RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH */, timing.workerFetchStart, timing.workerRespondWithSettled);
|
|
80
|
+
addOffsetRange("serviceworker" /* RequestTimeRangeNames.SERVICE_WORKER */, timing.workerReady, timing.sendEnd);
|
|
81
|
+
addOffsetRange("waiting" /* RequestTimeRangeNames.WAITING */, timing.sendEnd, responseReceived);
|
|
82
|
+
}
|
|
83
|
+
else if (!timing.pushStart) {
|
|
84
|
+
const blockingEnd = firstPositive([timing.dnsStart, timing.connectStart, timing.sendStart, responseReceived]) || 0;
|
|
85
|
+
addOffsetRange("blocking" /* RequestTimeRangeNames.BLOCKING */, 0, blockingEnd);
|
|
86
|
+
addOffsetRange("proxy" /* RequestTimeRangeNames.PROXY */, timing.proxyStart, timing.proxyEnd);
|
|
87
|
+
addOffsetRange("dns" /* RequestTimeRangeNames.DNS */, timing.dnsStart, timing.dnsEnd);
|
|
88
|
+
addOffsetRange("connecting" /* RequestTimeRangeNames.CONNECTING */, timing.connectStart, timing.connectEnd);
|
|
89
|
+
addOffsetRange("ssl" /* RequestTimeRangeNames.SSL */, timing.sslStart, timing.sslEnd);
|
|
90
|
+
addOffsetRange("sending" /* RequestTimeRangeNames.SENDING */, timing.sendStart, timing.sendEnd);
|
|
91
|
+
addOffsetRange("waiting" /* RequestTimeRangeNames.WAITING */, Math.max(timing.sendEnd, timing.connectEnd, timing.dnsEnd, timing.proxyEnd, blockingEnd), responseReceived);
|
|
92
|
+
}
|
|
93
|
+
const { serviceWorkerRouterInfo } = request;
|
|
94
|
+
if (serviceWorkerRouterInfo) {
|
|
95
|
+
if (timing.workerRouterEvaluationStart) {
|
|
96
|
+
// Depending on the source,the next timestamp will be different. Determine the timestamp by checking
|
|
97
|
+
// the matched and actual source.
|
|
98
|
+
let routerEvaluationEnd = timing.sendStart;
|
|
99
|
+
if (serviceWorkerRouterInfo?.matchedSourceType === "cache" /* Protocol.Network.ServiceWorkerRouterSource.Cache */ &&
|
|
100
|
+
timing.workerCacheLookupStart) {
|
|
101
|
+
routerEvaluationEnd = timing.workerCacheLookupStart;
|
|
102
|
+
}
|
|
103
|
+
else if (serviceWorkerRouterInfo?.actualSourceType === "fetch-event" /* Protocol.Network.ServiceWorkerRouterSource.FetchEvent */) {
|
|
104
|
+
routerEvaluationEnd = timing.workerStart;
|
|
105
|
+
}
|
|
106
|
+
addMaybeNegativeOffsetRange("serviceworker-routerevaluation" /* RequestTimeRangeNames.SERVICE_WORKER_ROUTER_EVALUATION */, timing.workerRouterEvaluationStart, routerEvaluationEnd);
|
|
107
|
+
}
|
|
108
|
+
if (timing.workerCacheLookupStart) {
|
|
109
|
+
let cacheLookupEnd = timing.sendStart;
|
|
110
|
+
if (serviceWorkerRouterInfo?.actualSourceType === "cache" /* Protocol.Network.ServiceWorkerRouterSource.Cache */) {
|
|
111
|
+
cacheLookupEnd = timing.receiveHeadersStart;
|
|
112
|
+
}
|
|
113
|
+
addMaybeNegativeOffsetRange("serviceworker-cachelookup" /* RequestTimeRangeNames.SERVICE_WORKER_CACHE_LOOKUP */, timing.workerCacheLookupStart, cacheLookupEnd);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (request.endTime !== -1) {
|
|
117
|
+
addRange(timing.pushStart ? "receiving-push" /* RequestTimeRangeNames.RECEIVING_PUSH */ : "receiving" /* RequestTimeRangeNames.RECEIVING */, request.responseReceivedTime, endTime);
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
import * as CodeMirror from '../../third_party/codemirror.next/codemirror.next.js';
|
|
5
|
+
export function createCssTokenizer() {
|
|
6
|
+
async function tokenize(line, callback) {
|
|
7
|
+
const streamParser = await CodeMirror.cssStreamParser();
|
|
8
|
+
const stream = new CodeMirror.StringStream(line, 4, 2);
|
|
9
|
+
const state = streamParser.startState(2);
|
|
10
|
+
let lastPos = stream.pos;
|
|
11
|
+
while (!stream.eol()) {
|
|
12
|
+
stream.start = lastPos;
|
|
13
|
+
let tokenType = streamParser.token(stream, state);
|
|
14
|
+
/**
|
|
15
|
+
* We expect unknown properties (like `unknownProp: unknownPropVal`) to still be
|
|
16
|
+
* formatted correctly. However, `tokenType` for such properties are marked
|
|
17
|
+
* as `error` from CodeMirror side and the internal state of the parser becomes `maybeprop`.
|
|
18
|
+
*
|
|
19
|
+
* So, we handle that specific keyword to be marked as `property` even though it is
|
|
20
|
+
* not a known property. We do this because for our formatting purposes it doesn't matter
|
|
21
|
+
* whether a property is a known CSS property or not.
|
|
22
|
+
*/
|
|
23
|
+
if (tokenType === 'error' && state.state === 'maybeprop') {
|
|
24
|
+
tokenType = 'property';
|
|
25
|
+
}
|
|
26
|
+
const segment = stream.current();
|
|
27
|
+
callback(segment, tokenType);
|
|
28
|
+
lastPos = stream.pos;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return tokenize;
|
|
32
|
+
}
|