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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export class PageCollector {
|
|
7
|
+
#browser;
|
|
8
|
+
#initializer;
|
|
9
|
+
storage = new WeakMap();
|
|
10
|
+
constructor(browser, initializer) {
|
|
11
|
+
this.#browser = browser;
|
|
12
|
+
this.#initializer = initializer;
|
|
13
|
+
}
|
|
14
|
+
async init() {
|
|
15
|
+
const pages = await this.#browser.pages();
|
|
16
|
+
for (const page of pages) {
|
|
17
|
+
this.#initializePage(page);
|
|
18
|
+
}
|
|
19
|
+
this.#browser.on('targetcreated', async (target) => {
|
|
20
|
+
const page = await target.page();
|
|
21
|
+
if (!page) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.#initializePage(page);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
addPage(page) {
|
|
28
|
+
this.#initializePage(page);
|
|
29
|
+
}
|
|
30
|
+
#initializePage(page) {
|
|
31
|
+
if (this.storage.has(page)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
page.on('framenavigated', frame => {
|
|
35
|
+
// Only reset the storage on main frame navigation
|
|
36
|
+
if (frame !== page.mainFrame()) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.cleanup(page);
|
|
40
|
+
});
|
|
41
|
+
this.#initializer(page, value => {
|
|
42
|
+
const stored = this.storage.get(page) ?? [];
|
|
43
|
+
stored.push(value);
|
|
44
|
+
this.storage.set(page, stored);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
cleanup(page) {
|
|
48
|
+
const collection = this.storage.get(page) ?? [];
|
|
49
|
+
// Keep the reference alive
|
|
50
|
+
collection.length = 0;
|
|
51
|
+
}
|
|
52
|
+
getData(page) {
|
|
53
|
+
return this.storage.get(page) ?? [];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class NetworkCollector extends PageCollector {
|
|
57
|
+
cleanup(page) {
|
|
58
|
+
const requests = this.storage.get(page) ?? [];
|
|
59
|
+
const lastRequestIdx = requests.findLastIndex(request => {
|
|
60
|
+
return request.frame() === page.mainFrame()
|
|
61
|
+
? request.isNavigationRequest()
|
|
62
|
+
: false;
|
|
63
|
+
});
|
|
64
|
+
// Keep all requests since the last navigation request including that
|
|
65
|
+
// navigation request itself.
|
|
66
|
+
this.storage.set(page, requests.slice(Math.max(lastRequestIdx, 0)));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { logger } from './logger.js';
|
|
2
|
+
export class WaitForHelper {
|
|
3
|
+
#abortController = new AbortController();
|
|
4
|
+
#page;
|
|
5
|
+
#stableDomTimeout;
|
|
6
|
+
#stableDomFor;
|
|
7
|
+
#expectNavigationIn;
|
|
8
|
+
#navigationTimeout;
|
|
9
|
+
constructor(page, cpuTimeoutMultiplier, networkTimeoutMultiplier) {
|
|
10
|
+
this.#stableDomTimeout = 3000 * cpuTimeoutMultiplier;
|
|
11
|
+
this.#stableDomFor = 500 * cpuTimeoutMultiplier;
|
|
12
|
+
this.#expectNavigationIn = 100 * cpuTimeoutMultiplier;
|
|
13
|
+
this.#navigationTimeout = 3000 * networkTimeoutMultiplier;
|
|
14
|
+
this.#page = page;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A wrapper that executes a action and waits for
|
|
18
|
+
* a potential navigation, after which it waits
|
|
19
|
+
* for the DOM to be stable before returning.
|
|
20
|
+
*/
|
|
21
|
+
async waitForStableDom() {
|
|
22
|
+
const stableDomObserver = await this.#page.evaluateHandle(timeout => {
|
|
23
|
+
let timeoutId;
|
|
24
|
+
function callback() {
|
|
25
|
+
clearTimeout(timeoutId);
|
|
26
|
+
timeoutId = setTimeout(() => {
|
|
27
|
+
domObserver.resolver.resolve();
|
|
28
|
+
domObserver.observer.disconnect();
|
|
29
|
+
}, timeout);
|
|
30
|
+
}
|
|
31
|
+
const domObserver = {
|
|
32
|
+
resolver: Promise.withResolvers(),
|
|
33
|
+
observer: new MutationObserver(callback),
|
|
34
|
+
};
|
|
35
|
+
// It's possible that the DOM is not gonna change so we
|
|
36
|
+
// need to start the timeout initially.
|
|
37
|
+
callback();
|
|
38
|
+
domObserver.observer.observe(document.body, {
|
|
39
|
+
childList: true,
|
|
40
|
+
subtree: true,
|
|
41
|
+
attributes: true,
|
|
42
|
+
});
|
|
43
|
+
return domObserver;
|
|
44
|
+
}, this.#stableDomFor);
|
|
45
|
+
this.#abortController.signal.addEventListener('abort', async () => {
|
|
46
|
+
try {
|
|
47
|
+
await stableDomObserver.evaluate(observer => {
|
|
48
|
+
observer.observer.disconnect();
|
|
49
|
+
observer.resolver.resolve();
|
|
50
|
+
});
|
|
51
|
+
await stableDomObserver.dispose();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Ignored cleanup errors
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return Promise.race([
|
|
58
|
+
stableDomObserver.evaluate(async (observer) => {
|
|
59
|
+
return await observer.resolver.promise;
|
|
60
|
+
}),
|
|
61
|
+
this.timeout(this.#stableDomTimeout).then(() => {
|
|
62
|
+
throw new Error('Timeout');
|
|
63
|
+
}),
|
|
64
|
+
]);
|
|
65
|
+
}
|
|
66
|
+
async waitForNavigationStarted() {
|
|
67
|
+
// Currently Puppeteer does not have API
|
|
68
|
+
// For when a navigation is about to start
|
|
69
|
+
const navigationStartedPromise = new Promise(resolve => {
|
|
70
|
+
const listener = (event) => {
|
|
71
|
+
if ([
|
|
72
|
+
'historySameDocument',
|
|
73
|
+
'historyDifferentDocument',
|
|
74
|
+
'sameDocument',
|
|
75
|
+
].includes(event.navigationType)) {
|
|
76
|
+
resolve(false);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
resolve(true);
|
|
80
|
+
};
|
|
81
|
+
this.#page._client().on('Page.frameStartedNavigating', listener);
|
|
82
|
+
this.#abortController.signal.addEventListener('abort', () => {
|
|
83
|
+
resolve(false);
|
|
84
|
+
this.#page._client().off('Page.frameStartedNavigating', listener);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
return await Promise.race([
|
|
88
|
+
navigationStartedPromise,
|
|
89
|
+
this.timeout(this.#expectNavigationIn).then(() => false),
|
|
90
|
+
]);
|
|
91
|
+
}
|
|
92
|
+
timeout(time) {
|
|
93
|
+
return new Promise(res => {
|
|
94
|
+
const id = setTimeout(res, time);
|
|
95
|
+
this.#abortController.signal.addEventListener('abort', () => {
|
|
96
|
+
res();
|
|
97
|
+
clearTimeout(id);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
async waitForEventsAfterAction(action) {
|
|
102
|
+
const navigationFinished = this.waitForNavigationStarted()
|
|
103
|
+
.then(navigationStated => {
|
|
104
|
+
if (navigationStated) {
|
|
105
|
+
return this.#page.waitForNavigation({
|
|
106
|
+
timeout: this.#navigationTimeout,
|
|
107
|
+
signal: this.#abortController.signal,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return;
|
|
111
|
+
})
|
|
112
|
+
.catch(error => logger(error));
|
|
113
|
+
try {
|
|
114
|
+
await action();
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
// Clear up pending promises
|
|
118
|
+
this.#abortController.abort();
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
await navigationFinished;
|
|
123
|
+
// Wait for stable dom after navigation so we execute in
|
|
124
|
+
// the correct context
|
|
125
|
+
await this.waitForStableDom();
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
logger(error);
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
this.#abortController.abort();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ProtocolError, TimeoutError } from 'puppeteer';
|
|
7
|
+
/**
|
|
8
|
+
* Default connection manager options
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_OPTIONS = {
|
|
11
|
+
maxReconnectAttempts: 3,
|
|
12
|
+
initialRetryDelay: 1000, // 1 second
|
|
13
|
+
maxRetryDelay: 10000, // 10 seconds
|
|
14
|
+
reconnectOverallTimeoutMs: 30000, // 30 seconds
|
|
15
|
+
enableLogging: true,
|
|
16
|
+
onReconnect: undefined,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Connection state enum
|
|
20
|
+
*/
|
|
21
|
+
var ConnectionState;
|
|
22
|
+
(function (ConnectionState) {
|
|
23
|
+
ConnectionState["CONNECTED"] = "CONNECTED";
|
|
24
|
+
ConnectionState["RECONNECTING"] = "RECONNECTING";
|
|
25
|
+
ConnectionState["CLOSED"] = "CLOSED";
|
|
26
|
+
})(ConnectionState || (ConnectionState = {}));
|
|
27
|
+
/**
|
|
28
|
+
* Browser Connection Manager
|
|
29
|
+
*
|
|
30
|
+
* Provides automatic reconnection for CDP operations with:
|
|
31
|
+
* - Single-flight pattern to prevent concurrent reconnections
|
|
32
|
+
* - Event-driven detection via browser 'disconnected' event
|
|
33
|
+
* - State machine tracking (CONNECTED | RECONNECTING | CLOSED)
|
|
34
|
+
* - Exponential backoff with jitter to prevent thundering herd
|
|
35
|
+
*/
|
|
36
|
+
export class BrowserConnectionManager {
|
|
37
|
+
reconnectAttempts = 0;
|
|
38
|
+
options;
|
|
39
|
+
browser = null;
|
|
40
|
+
browserFactory = null;
|
|
41
|
+
/** Single-flight pattern: prevents concurrent reconnection attempts */
|
|
42
|
+
reconnectInFlight = null;
|
|
43
|
+
/** Shared reconnection sequence for multiple operations */
|
|
44
|
+
reconnectSequenceInFlight = null;
|
|
45
|
+
/** Current connection state */
|
|
46
|
+
state = ConnectionState.CLOSED;
|
|
47
|
+
/** Disconnected event handler (arrow function to preserve 'this') */
|
|
48
|
+
onDisconnected = () => {
|
|
49
|
+
this.log('Browser disconnected');
|
|
50
|
+
this.setState(ConnectionState.CLOSED);
|
|
51
|
+
// Auto-reconnection disabled: reconnect only when MCP operation requires it
|
|
52
|
+
};
|
|
53
|
+
constructor(options = {}) {
|
|
54
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Set browser instance and factory for reconnection
|
|
58
|
+
*
|
|
59
|
+
* @param browser - Browser instance to manage
|
|
60
|
+
* @param factory - Factory function to create new browser instances on reconnection
|
|
61
|
+
*/
|
|
62
|
+
setBrowser(browser, factory) {
|
|
63
|
+
// Remove old listener to prevent memory leak
|
|
64
|
+
if (this.browser) {
|
|
65
|
+
this.browser.off('disconnected', this.onDisconnected);
|
|
66
|
+
}
|
|
67
|
+
this.browser = browser;
|
|
68
|
+
this.browserFactory = factory;
|
|
69
|
+
this.state = ConnectionState.CONNECTED;
|
|
70
|
+
// Event-driven detection: hook into browser 'disconnected' event
|
|
71
|
+
this.browser.on('disconnected', this.onDisconnected);
|
|
72
|
+
this.log('Browser instance set, state: CONNECTED');
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Execute an operation with automatic retry on CDP connection errors
|
|
76
|
+
*/
|
|
77
|
+
async executeWithRetry(operation, operationName) {
|
|
78
|
+
try {
|
|
79
|
+
return await operation();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (this.isCDPConnectionError(error)) {
|
|
83
|
+
this.log(`CDP connection error in ${operationName}, attempting reconnect...`);
|
|
84
|
+
return await this.retryWithReconnect(operation, operationName);
|
|
85
|
+
}
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Trigger reconnection sequence
|
|
91
|
+
*
|
|
92
|
+
* Can be called from events (disconnected) or operations (executeWithRetry).
|
|
93
|
+
* Uses single-flight pattern to prevent duplicate reconnections.
|
|
94
|
+
*
|
|
95
|
+
* @param reason - Reason for triggering reconnection
|
|
96
|
+
* @returns Promise that resolves when reconnection completes
|
|
97
|
+
*/
|
|
98
|
+
async triggerReconnect(reason) {
|
|
99
|
+
// Single-flight: return existing sequence if already running
|
|
100
|
+
if (this.reconnectSequenceInFlight) {
|
|
101
|
+
this.log(`Reconnection already in progress (${reason}), waiting...`);
|
|
102
|
+
return this.reconnectSequenceInFlight;
|
|
103
|
+
}
|
|
104
|
+
this.log(`Triggering reconnection: ${reason}`);
|
|
105
|
+
// Overall timeout with AbortController
|
|
106
|
+
const abortController = new AbortController();
|
|
107
|
+
const overallTimeout = this.options.reconnectOverallTimeoutMs ?? 30000;
|
|
108
|
+
const timeoutId = setTimeout(() => {
|
|
109
|
+
abortController.abort();
|
|
110
|
+
this.log(`Reconnection overall timeout (${overallTimeout}ms) exceeded`);
|
|
111
|
+
}, overallTimeout);
|
|
112
|
+
// Start reconnection sequence
|
|
113
|
+
this.reconnectSequenceInFlight = this._runReconnectionSequence(abortController.signal).finally(() => {
|
|
114
|
+
clearTimeout(timeoutId);
|
|
115
|
+
this.reconnectSequenceInFlight = null;
|
|
116
|
+
});
|
|
117
|
+
return this.reconnectSequenceInFlight;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Retry operation with automatic reconnection
|
|
121
|
+
*
|
|
122
|
+
* @param operation - Operation to retry
|
|
123
|
+
* @param operationName - Name of operation for logging
|
|
124
|
+
* @returns Result of operation
|
|
125
|
+
*/
|
|
126
|
+
async retryWithReconnect(operation, operationName) {
|
|
127
|
+
// Use triggerReconnect for unified reconnection logic
|
|
128
|
+
await this.triggerReconnect(`operation:${operationName}`);
|
|
129
|
+
this.log(`${operationName}: Reconnection completed, retrying operation...`);
|
|
130
|
+
return await operation();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Run a full reconnection sequence with exponential backoff
|
|
134
|
+
*
|
|
135
|
+
* This is the actual retry loop that multiple operations can share.
|
|
136
|
+
*
|
|
137
|
+
* @param signal - AbortSignal to cancel reconnection
|
|
138
|
+
* @private
|
|
139
|
+
*/
|
|
140
|
+
async _runReconnectionSequence(signal) {
|
|
141
|
+
const maxAttempts = this.options.maxReconnectAttempts ?? 3;
|
|
142
|
+
const initialDelay = this.options.initialRetryDelay ?? 1000;
|
|
143
|
+
const maxDelay = this.options.maxRetryDelay ?? 10000;
|
|
144
|
+
const random = this.options.rng ?? Math.random;
|
|
145
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
146
|
+
// Check abort signal
|
|
147
|
+
if (signal?.aborted) {
|
|
148
|
+
throw new Error('Reconnection aborted: overall timeout exceeded');
|
|
149
|
+
}
|
|
150
|
+
this.reconnectAttempts++;
|
|
151
|
+
const attemptNum = attempt + 1;
|
|
152
|
+
this.log(`Reconnect attempt ${attemptNum}/${maxAttempts}...`);
|
|
153
|
+
// Exponential backoff with max delay
|
|
154
|
+
const baseDelay = Math.min(initialDelay * Math.pow(2, attempt), maxDelay);
|
|
155
|
+
// Add jitter: ±20% randomness to prevent thundering herd
|
|
156
|
+
const jitter = baseDelay * 0.2 * (random() * 2 - 1);
|
|
157
|
+
const delay = Math.max(0, baseDelay + jitter);
|
|
158
|
+
this.log(`Waiting ${delay.toFixed(0)}ms before reconnect attempt...`);
|
|
159
|
+
await this.sleep(delay);
|
|
160
|
+
// Check abort signal after sleep
|
|
161
|
+
if (signal?.aborted) {
|
|
162
|
+
throw new Error('Reconnection aborted: overall timeout exceeded');
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
await this.reconnectBrowser();
|
|
166
|
+
this.log(`Reconnection successful`);
|
|
167
|
+
return; // Success!
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (attempt === maxAttempts - 1) {
|
|
171
|
+
// Last attempt failed
|
|
172
|
+
throw this.createReconnectionFailedError(attemptNum, error);
|
|
173
|
+
}
|
|
174
|
+
this.log(`Reconnect attempt ${attemptNum} failed: ${error}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
throw new Error('Reconnection logic error'); // Should never reach here
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Check if error is a CDP connection error
|
|
181
|
+
*
|
|
182
|
+
* Uses type-safe error detection with instanceof checks and falls back
|
|
183
|
+
* to string matching for compatibility. Also checks method hints.
|
|
184
|
+
*
|
|
185
|
+
* @param error - Error to check
|
|
186
|
+
* @returns true if error is a CDP connection error
|
|
187
|
+
*/
|
|
188
|
+
isCDPConnectionError(error) {
|
|
189
|
+
// Type-safe detection using instanceof
|
|
190
|
+
if (error instanceof ProtocolError || error instanceof TimeoutError) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
const msg = String(error?.message ?? '').toLowerCase();
|
|
194
|
+
const method = error?.method?.toString?.().toLowerCase?.() ?? '';
|
|
195
|
+
// Message hints
|
|
196
|
+
if (/connection closed|session closed|target closed|websocket is not open/.test(msg)) {
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
// Method hints (CDP methods like 'Target.*')
|
|
200
|
+
if (/^target\./.test(method)) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Reconnect browser instance with single-flight pattern
|
|
207
|
+
*
|
|
208
|
+
* Ensures only one reconnection attempt happens at a time.
|
|
209
|
+
* Multiple concurrent calls will wait for the same reconnection promise.
|
|
210
|
+
*
|
|
211
|
+
* @returns Promise that resolves when reconnection is complete
|
|
212
|
+
*/
|
|
213
|
+
async reconnectBrowser() {
|
|
214
|
+
// Single-flight pattern: return existing promise if reconnection is already in progress
|
|
215
|
+
if (this.reconnectInFlight) {
|
|
216
|
+
this.log('Reconnection already in progress, waiting...');
|
|
217
|
+
return this.reconnectInFlight;
|
|
218
|
+
}
|
|
219
|
+
// Create new reconnection promise
|
|
220
|
+
this.reconnectInFlight = this._doReconnect();
|
|
221
|
+
try {
|
|
222
|
+
await this.reconnectInFlight;
|
|
223
|
+
}
|
|
224
|
+
finally {
|
|
225
|
+
// Clear in-flight promise when complete
|
|
226
|
+
this.reconnectInFlight = null;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Internal reconnection logic
|
|
231
|
+
*
|
|
232
|
+
* @private
|
|
233
|
+
*/
|
|
234
|
+
async _doReconnect() {
|
|
235
|
+
if (!this.browserFactory) {
|
|
236
|
+
throw new Error('Browser factory not set. Cannot reconnect.');
|
|
237
|
+
}
|
|
238
|
+
this.setState(ConnectionState.RECONNECTING);
|
|
239
|
+
try {
|
|
240
|
+
// Close old browser if still connected
|
|
241
|
+
if (this.browser?.isConnected()) {
|
|
242
|
+
await this.browser.close().catch(() => {
|
|
243
|
+
// Ignore errors during close
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
// Ignore errors during cleanup
|
|
249
|
+
}
|
|
250
|
+
// Create new browser instance
|
|
251
|
+
const newBrowser = await this.browserFactory();
|
|
252
|
+
this.browser = newBrowser;
|
|
253
|
+
// Re-attach disconnected event handler
|
|
254
|
+
this.browser.on('disconnected', this.onDisconnected);
|
|
255
|
+
this.setState(ConnectionState.CONNECTED);
|
|
256
|
+
this.log('Browser reconnected successfully');
|
|
257
|
+
// Notify callback if provided
|
|
258
|
+
if (this.options.onReconnect) {
|
|
259
|
+
await this.options.onReconnect(newBrowser);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Create user-friendly error for reconnection failure
|
|
264
|
+
*/
|
|
265
|
+
createReconnectionFailedError(attempts, lastError) {
|
|
266
|
+
const message = `
|
|
267
|
+
❌ Chrome DevTools接続エラー
|
|
268
|
+
|
|
269
|
+
${attempts}回の再接続を試みましたが、Chrome DevToolsとの接続を回復できませんでした。
|
|
270
|
+
|
|
271
|
+
📋 最後のエラー:
|
|
272
|
+
${lastError?.message || 'Unknown error'}
|
|
273
|
+
|
|
274
|
+
🔧 解決方法:
|
|
275
|
+
1. Claude Codeを再起動してください
|
|
276
|
+
2. Chromeブラウザを完全に終了して再起動してください
|
|
277
|
+
3. chrome://extensions でChrome DevTools拡張機能を確認してください
|
|
278
|
+
|
|
279
|
+
詳細: docs/troubleshooting.md#cdp-connection-error
|
|
280
|
+
`.trim();
|
|
281
|
+
const error = new Error(message);
|
|
282
|
+
error.name = 'CDPReconnectionError';
|
|
283
|
+
return error;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Set connection state and log transition
|
|
287
|
+
*
|
|
288
|
+
* @param newState - New connection state
|
|
289
|
+
*/
|
|
290
|
+
setState(newState) {
|
|
291
|
+
if (this.state !== newState) {
|
|
292
|
+
this.log(`State transition: ${this.state} -> ${newState}`);
|
|
293
|
+
this.state = newState;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Log message if logging is enabled
|
|
298
|
+
*
|
|
299
|
+
* @param message - Message to log
|
|
300
|
+
*/
|
|
301
|
+
log(message) {
|
|
302
|
+
if (this.options.enableLogging !== false) {
|
|
303
|
+
console.log(`[ConnectionManager] ${message}`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Sleep for specified milliseconds
|
|
308
|
+
*/
|
|
309
|
+
sleep(ms) {
|
|
310
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Get current browser instance
|
|
314
|
+
*/
|
|
315
|
+
getBrowser() {
|
|
316
|
+
return this.browser;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Get total reconnection attempts made
|
|
320
|
+
*/
|
|
321
|
+
getReconnectAttempts() {
|
|
322
|
+
return this.reconnectAttempts;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Reset reconnection attempt counter
|
|
326
|
+
*/
|
|
327
|
+
resetReconnectAttempts() {
|
|
328
|
+
this.reconnectAttempts = 0;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Check if browser is currently connected
|
|
332
|
+
*
|
|
333
|
+
* @returns true if browser is connected
|
|
334
|
+
*/
|
|
335
|
+
isConnected() {
|
|
336
|
+
return this.browser?.isConnected() ?? false;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Get current connection state
|
|
340
|
+
*
|
|
341
|
+
* @returns Current connection state (CONNECTED | RECONNECTING | CLOSED)
|
|
342
|
+
*/
|
|
343
|
+
getState() {
|
|
344
|
+
return this.state;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Check if reconnection is currently in progress
|
|
348
|
+
*
|
|
349
|
+
* @returns true if reconnection is in progress
|
|
350
|
+
*/
|
|
351
|
+
isReconnecting() {
|
|
352
|
+
return this.state === ConnectionState.RECONNECTING;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Global connection manager instance
|
|
357
|
+
*/
|
|
358
|
+
let globalConnectionManager = null;
|
|
359
|
+
/**
|
|
360
|
+
* Get or create global connection manager
|
|
361
|
+
*/
|
|
362
|
+
export function getConnectionManager(options) {
|
|
363
|
+
if (!globalConnectionManager) {
|
|
364
|
+
globalConnectionManager = new BrowserConnectionManager(options);
|
|
365
|
+
}
|
|
366
|
+
return globalConnectionManager;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Reset global connection manager (for testing)
|
|
370
|
+
*/
|
|
371
|
+
export function resetConnectionManager() {
|
|
372
|
+
globalConnectionManager = null;
|
|
373
|
+
}
|