@treegress.com/treegress-browser-core 1.59.0-treegress.3
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/README.md +60 -0
- package/ThirdPartyNotices.txt +3759 -0
- package/bin/install_media_pack.ps1 +5 -0
- package/bin/install_webkit_wsl.ps1 +33 -0
- package/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/browsers.json +81 -0
- package/cli.js +18 -0
- package/index.d.ts +17 -0
- package/index.js +32 -0
- package/index.mjs +28 -0
- package/lib/androidServerImpl.js +65 -0
- package/lib/browserServerImpl.js +120 -0
- package/lib/cli/client/cli.js +6 -0
- package/lib/cli/client/program.js +375 -0
- package/lib/cli/client/registry.js +171 -0
- package/lib/cli/client/session.js +282 -0
- package/lib/cli/client/socketConnection.js +108 -0
- package/lib/cli/daemon/command.js +73 -0
- package/lib/cli/daemon/commands.js +879 -0
- package/lib/cli/daemon/daemon.js +179 -0
- package/lib/cli/daemon/helpGenerator.js +173 -0
- package/lib/cli/daemon/program.js +123 -0
- package/lib/cli/driver.js +98 -0
- package/lib/cli/program.js +598 -0
- package/lib/cli/programWithTestStub.js +74 -0
- package/lib/client/android.js +361 -0
- package/lib/client/api.js +137 -0
- package/lib/client/artifact.js +79 -0
- package/lib/client/browser.js +169 -0
- package/lib/client/browserContext.js +590 -0
- package/lib/client/browserType.js +153 -0
- package/lib/client/cdpSession.js +55 -0
- package/lib/client/channelOwner.js +194 -0
- package/lib/client/clientHelper.js +64 -0
- package/lib/client/clientInstrumentation.js +55 -0
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +68 -0
- package/lib/client/connect.js +152 -0
- package/lib/client/connection.js +322 -0
- package/lib/client/consoleMessage.js +61 -0
- package/lib/client/coverage.js +44 -0
- package/lib/client/dialog.js +56 -0
- package/lib/client/disposable.js +76 -0
- package/lib/client/download.js +62 -0
- package/lib/client/electron.js +138 -0
- package/lib/client/elementHandle.js +284 -0
- package/lib/client/errors.js +77 -0
- package/lib/client/eventEmitter.js +327 -0
- package/lib/client/events.js +103 -0
- package/lib/client/fetch.js +368 -0
- package/lib/client/fileChooser.js +46 -0
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +409 -0
- package/lib/client/harRouter.js +99 -0
- package/lib/client/input.js +84 -0
- package/lib/client/inspector.js +48 -0
- package/lib/client/jsHandle.js +109 -0
- package/lib/client/jsonPipe.js +39 -0
- package/lib/client/localUtils.js +60 -0
- package/lib/client/locator.js +373 -0
- package/lib/client/network.js +750 -0
- package/lib/client/page.js +750 -0
- package/lib/client/pageAgent.js +64 -0
- package/lib/client/platform.js +77 -0
- package/lib/client/playwright.js +71 -0
- package/lib/client/selectors.js +55 -0
- package/lib/client/stream.js +39 -0
- package/lib/client/timeoutSettings.js +79 -0
- package/lib/client/tracing.js +124 -0
- package/lib/client/types.js +28 -0
- package/lib/client/video.js +65 -0
- package/lib/client/waiter.js +142 -0
- package/lib/client/webError.js +39 -0
- package/lib/client/worker.js +85 -0
- package/lib/client/writableStream.js +39 -0
- package/lib/devtools/appIcon.png +0 -0
- package/lib/devtools/devtoolsApp.js +275 -0
- package/lib/devtools/devtoolsController.js +289 -0
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +28 -0
- package/lib/generated/injectedScriptSource.js +28 -0
- package/lib/generated/pollingRecorderSource.js +28 -0
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +28 -0
- package/lib/generated/webSocketMockSource.js +336 -0
- package/lib/inProcessFactory.js +60 -0
- package/lib/inprocess.js +3 -0
- package/lib/mcp/browserFactory.js +196 -0
- package/lib/mcp/cdpRelay.js +353 -0
- package/lib/mcp/config.d.js +16 -0
- package/lib/mcp/config.js +399 -0
- package/lib/mcp/configIni.js +190 -0
- package/lib/mcp/exports.js +42 -0
- package/lib/mcp/extensionContextFactory.js +59 -0
- package/lib/mcp/index.js +62 -0
- package/lib/mcp/log.js +35 -0
- package/lib/mcp/program.js +111 -0
- package/lib/mcp/protocol.js +28 -0
- package/lib/mcp/sdk/http.js +152 -0
- package/lib/mcp/sdk/server.js +230 -0
- package/lib/mcp/sdk/tool.js +47 -0
- package/lib/mcp/watchdog.js +44 -0
- package/lib/mcpBundle.js +84 -0
- package/lib/mcpBundleImpl/index.js +147 -0
- package/lib/outofprocess.js +76 -0
- package/lib/protocol/serializers.js +197 -0
- package/lib/protocol/validator.js +3064 -0
- package/lib/protocol/validatorPrimitives.js +193 -0
- package/lib/remote/playwrightConnection.js +129 -0
- package/lib/remote/playwrightPipeServer.js +100 -0
- package/lib/remote/playwrightServer.js +339 -0
- package/lib/remote/playwrightWebSocketServer.js +73 -0
- package/lib/remote/serverTransport.js +96 -0
- package/lib/server/agent/actionRunner.js +341 -0
- package/lib/server/agent/actions.js +128 -0
- package/lib/server/agent/codegen.js +111 -0
- package/lib/server/agent/context.js +161 -0
- package/lib/server/agent/expectTools.js +156 -0
- package/lib/server/agent/pageAgent.js +204 -0
- package/lib/server/agent/performTools.js +262 -0
- package/lib/server/agent/tool.js +109 -0
- package/lib/server/android/android.js +465 -0
- package/lib/server/android/backendAdb.js +177 -0
- package/lib/server/artifact.js +127 -0
- package/lib/server/bidi/bidiBrowser.js +560 -0
- package/lib/server/bidi/bidiChromium.js +162 -0
- package/lib/server/bidi/bidiConnection.js +213 -0
- package/lib/server/bidi/bidiDeserializer.js +116 -0
- package/lib/server/bidi/bidiExecutionContext.js +267 -0
- package/lib/server/bidi/bidiFirefox.js +128 -0
- package/lib/server/bidi/bidiInput.js +146 -0
- package/lib/server/bidi/bidiNetworkManager.js +411 -0
- package/lib/server/bidi/bidiOverCdp.js +102 -0
- package/lib/server/bidi/bidiPage.js +598 -0
- package/lib/server/bidi/bidiPdf.js +106 -0
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
- package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
- package/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
- package/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
- package/lib/server/browser.js +217 -0
- package/lib/server/browserContext.js +699 -0
- package/lib/server/browserType.js +337 -0
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/appIcon.png +0 -0
- package/lib/server/chromium/chromium.js +399 -0
- package/lib/server/chromium/chromiumSwitches.js +104 -0
- package/lib/server/chromium/crBrowser.js +532 -0
- package/lib/server/chromium/crConnection.js +197 -0
- package/lib/server/chromium/crCoverage.js +235 -0
- package/lib/server/chromium/crDevTools.js +111 -0
- package/lib/server/chromium/crDragDrop.js +131 -0
- package/lib/server/chromium/crExecutionContext.js +146 -0
- package/lib/server/chromium/crInput.js +187 -0
- package/lib/server/chromium/crNetworkManager.js +708 -0
- package/lib/server/chromium/crPage.js +1004 -0
- package/lib/server/chromium/crPdf.js +121 -0
- package/lib/server/chromium/crProtocolHelper.js +145 -0
- package/lib/server/chromium/crServiceWorker.js +136 -0
- package/lib/server/chromium/defaultFontFamilies.js +162 -0
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/clock.js +149 -0
- package/lib/server/codegen/csharp.js +327 -0
- package/lib/server/codegen/java.js +274 -0
- package/lib/server/codegen/javascript.js +247 -0
- package/lib/server/codegen/jsonl.js +52 -0
- package/lib/server/codegen/language.js +132 -0
- package/lib/server/codegen/languages.js +68 -0
- package/lib/server/codegen/python.js +279 -0
- package/lib/server/codegen/types.js +16 -0
- package/lib/server/console.js +61 -0
- package/lib/server/cookieStore.js +206 -0
- package/lib/server/debugController.js +197 -0
- package/lib/server/debugger.js +119 -0
- package/lib/server/deviceDescriptors.js +39 -0
- package/lib/server/deviceDescriptorsSource.json +1779 -0
- package/lib/server/dialog.js +116 -0
- package/lib/server/dispatchers/androidDispatcher.js +325 -0
- package/lib/server/dispatchers/artifactDispatcher.js +118 -0
- package/lib/server/dispatchers/browserContextDispatcher.js +377 -0
- package/lib/server/dispatchers/browserDispatcher.js +124 -0
- package/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +47 -0
- package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
- package/lib/server/dispatchers/dialogDispatcher.js +47 -0
- package/lib/server/dispatchers/dispatcher.js +364 -0
- package/lib/server/dispatchers/disposableDispatcher.js +39 -0
- package/lib/server/dispatchers/electronDispatcher.js +90 -0
- package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
- package/lib/server/dispatchers/frameDispatcher.js +227 -0
- package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
- package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
- package/lib/server/dispatchers/localUtilsDispatcher.js +185 -0
- package/lib/server/dispatchers/networkDispatchers.js +214 -0
- package/lib/server/dispatchers/pageAgentDispatcher.js +106 -0
- package/lib/server/dispatchers/pageDispatcher.js +441 -0
- package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
- package/lib/server/dispatchers/streamDispatcher.js +67 -0
- package/lib/server/dispatchers/tracingDispatcher.js +68 -0
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
- package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
- package/lib/server/disposable.js +41 -0
- package/lib/server/dom.js +815 -0
- package/lib/server/download.js +71 -0
- package/lib/server/electron/electron.js +272 -0
- package/lib/server/electron/loader.js +30 -0
- package/lib/server/errors.js +69 -0
- package/lib/server/fetch.js +621 -0
- package/lib/server/fileChooser.js +43 -0
- package/lib/server/fileUploadUtils.js +84 -0
- package/lib/server/firefox/ffBrowser.js +415 -0
- package/lib/server/firefox/ffConnection.js +142 -0
- package/lib/server/firefox/ffExecutionContext.js +150 -0
- package/lib/server/firefox/ffInput.js +159 -0
- package/lib/server/firefox/ffNetworkManager.js +256 -0
- package/lib/server/firefox/ffPage.js +495 -0
- package/lib/server/firefox/firefox.js +114 -0
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +147 -0
- package/lib/server/frameSelectors.js +160 -0
- package/lib/server/frames.js +1476 -0
- package/lib/server/har/harRecorder.js +147 -0
- package/lib/server/har/harTracer.js +608 -0
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +96 -0
- package/lib/server/index.js +58 -0
- package/lib/server/input.js +277 -0
- package/lib/server/instrumentation.js +72 -0
- package/lib/server/javascript.js +291 -0
- package/lib/server/launchApp.js +127 -0
- package/lib/server/localUtils.js +214 -0
- package/lib/server/macEditingCommands.js +143 -0
- package/lib/server/network.js +668 -0
- package/lib/server/page.js +915 -0
- package/lib/server/pipeTransport.js +89 -0
- package/lib/server/playwright.js +69 -0
- package/lib/server/progress.js +136 -0
- package/lib/server/protocolError.js +52 -0
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/recorderApp.js +367 -0
- package/lib/server/recorder/recorderRunner.js +138 -0
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +157 -0
- package/lib/server/recorder/throttledFile.js +57 -0
- package/lib/server/recorder.js +533 -0
- package/lib/server/registry/browserFetcher.js +177 -0
- package/lib/server/registry/dependencies.js +371 -0
- package/lib/server/registry/index.js +1395 -0
- package/lib/server/registry/nativeDeps.js +1281 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +127 -0
- package/lib/server/screencast.js +214 -0
- package/lib/server/screenshotter.js +333 -0
- package/lib/server/selectors.js +112 -0
- package/lib/server/socksClientCertificatesInterceptor.js +383 -0
- package/lib/server/socksInterceptor.js +95 -0
- package/lib/server/trace/recorder/snapshotter.js +147 -0
- package/lib/server/trace/recorder/snapshotterInjected.js +561 -0
- package/lib/server/trace/recorder/tracing.js +607 -0
- package/lib/server/trace/viewer/traceParser.js +72 -0
- package/lib/server/trace/viewer/traceViewer.js +244 -0
- package/lib/server/transport.js +181 -0
- package/lib/server/types.js +28 -0
- package/lib/server/usKeyboardLayout.js +145 -0
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +139 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +42 -0
- package/lib/server/utils/debugLogger.js +122 -0
- package/lib/server/utils/env.js +73 -0
- package/lib/server/utils/eventsHelper.js +39 -0
- package/lib/server/utils/expectUtils.js +123 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +123 -0
- package/lib/server/utils/httpServer.js +205 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/server/utils/image_tools/compare.js +109 -0
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/server/utils/image_tools/stats.js +102 -0
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +244 -0
- package/lib/server/utils/nodePlatform.js +154 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +243 -0
- package/lib/server/utils/profiler.js +65 -0
- package/lib/server/utils/socksProxy.js +511 -0
- package/lib/server/utils/spawnAsync.js +41 -0
- package/lib/server/utils/task.js +51 -0
- package/lib/server/utils/userAgent.js +98 -0
- package/lib/server/utils/wsServer.js +121 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- package/lib/server/videoRecorder.js +133 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +108 -0
- package/lib/server/webkit/wkBrowser.js +331 -0
- package/lib/server/webkit/wkConnection.js +144 -0
- package/lib/server/webkit/wkExecutionContext.js +154 -0
- package/lib/server/webkit/wkInput.js +181 -0
- package/lib/server/webkit/wkInterceptableRequest.js +197 -0
- package/lib/server/webkit/wkPage.js +1164 -0
- package/lib/server/webkit/wkProvisionalPage.js +83 -0
- package/lib/server/webkit/wkWorkers.js +106 -0
- package/lib/serverRegistry.js +136 -0
- package/lib/third_party/pixelmatch.js +255 -0
- package/lib/tools/browserServerBackend.js +79 -0
- package/lib/tools/common.js +63 -0
- package/lib/tools/config.js +41 -0
- package/lib/tools/console.js +65 -0
- package/lib/tools/context.js +282 -0
- package/lib/tools/cookies.js +152 -0
- package/lib/tools/customDomLocatorCompiler.js +239 -0
- package/lib/tools/customDomResolverDiagnostics.js +100 -0
- package/lib/tools/customDomSnapshotFormatter.js +658 -0
- package/lib/tools/devtools.js +42 -0
- package/lib/tools/dialogs.js +59 -0
- package/lib/tools/evaluate.js +61 -0
- package/lib/tools/exports.js +57 -0
- package/lib/tools/files.js +58 -0
- package/lib/tools/form.js +63 -0
- package/lib/tools/keyboard.js +151 -0
- package/lib/tools/logFile.js +95 -0
- package/lib/tools/mouse.js +170 -0
- package/lib/tools/navigate.js +105 -0
- package/lib/tools/network.js +112 -0
- package/lib/tools/pdf.js +48 -0
- package/lib/tools/response.js +278 -0
- package/lib/tools/route.js +140 -0
- package/lib/tools/runCode.js +76 -0
- package/lib/tools/screenshot.js +87 -0
- package/lib/tools/sessionLog.js +75 -0
- package/lib/tools/snapshot.js +209 -0
- package/lib/tools/storage.js +67 -0
- package/lib/tools/tab.js +596 -0
- package/lib/tools/tabs.js +67 -0
- package/lib/tools/tool.js +47 -0
- package/lib/tools/tools.js +94 -0
- package/lib/tools/tracing.js +75 -0
- package/lib/tools/utils.js +88 -0
- package/lib/tools/verify.js +149 -0
- package/lib/tools/video.js +89 -0
- package/lib/tools/wait.js +63 -0
- package/lib/tools/webstorage.js +223 -0
- package/lib/utils/isomorphic/aiSnapshotTypes.js +16 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +455 -0
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +245 -0
- package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/imageUtils.js +141 -0
- package/lib/utils/isomorphic/locatorGenerators.js +689 -0
- package/lib/utils/isomorphic/locatorParser.js +176 -0
- package/lib/utils/isomorphic/locatorUtils.js +81 -0
- package/lib/utils/isomorphic/lruCache.js +51 -0
- package/lib/utils/isomorphic/manualPromise.js +114 -0
- package/lib/utils/isomorphic/mimeType.js +464 -0
- package/lib/utils/isomorphic/multimap.js +80 -0
- package/lib/utils/isomorphic/protocolFormatter.js +81 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +345 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +386 -0
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +204 -0
- package/lib/utils/isomorphic/time.js +49 -0
- package/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/lib/utils/isomorphic/trace/entries.js +16 -0
- package/lib/utils/isomorphic/trace/snapshotRenderer.js +502 -0
- package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
- package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
- package/lib/utils/isomorphic/trace/traceLoader.js +131 -0
- package/lib/utils/isomorphic/trace/traceModel.js +366 -0
- package/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
- package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
- package/lib/utils/isomorphic/traceUtils.js +58 -0
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +243 -0
- package/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
- package/lib/utils/isomorphic/yaml.js +84 -0
- package/lib/utils.js +111 -0
- package/lib/utilsBundle.js +112 -0
- package/lib/utilsBundleImpl/index.js +218 -0
- package/lib/utilsBundleImpl/xdg-open +1066 -0
- package/lib/vite/devtools/assets/index-D3CVnoLM.css +1 -0
- package/lib/vite/devtools/assets/index-wqccfruE.js +50 -0
- package/lib/vite/devtools/index.html +28 -0
- package/lib/vite/htmlReport/index.html +84 -0
- package/lib/vite/recorder/assets/codeMirrorModule-4NapTJOb.js +32 -0
- package/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-BSjZa4pk.css +1 -0
- package/lib/vite/recorder/assets/index-CD9lKVjM.js +193 -0
- package/lib/vite/recorder/index.html +29 -0
- package/lib/vite/recorder/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-RgXeHFoQ.js +32 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DP6vvJEM.js +269 -0
- package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.DQ9U-ctL.css +1 -0
- package/lib/vite/traceViewer/index.BVu7tZDe.css +1 -0
- package/lib/vite/traceViewer/index.D8YUXFVt.js +2 -0
- package/lib/vite/traceViewer/index.html +43 -0
- package/lib/vite/traceViewer/manifest.webmanifest +16 -0
- package/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/snapshot.html +21 -0
- package/lib/vite/traceViewer/sw.bundle.js +5 -0
- package/lib/vite/traceViewer/uiMode.BIQFTUME.js +6 -0
- package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
- package/lib/vite/traceViewer/uiMode.html +17 -0
- package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
- package/lib/zipBundle.js +34 -0
- package/lib/zipBundleImpl.js +5 -0
- package/package.json +52 -0
- package/types/protocol.d.ts +24365 -0
- package/types/structs.d.ts +45 -0
- package/types/types.d.ts +23724 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var waiter_exports = {};
|
|
20
|
+
__export(waiter_exports, {
|
|
21
|
+
Waiter: () => Waiter
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(waiter_exports);
|
|
24
|
+
var import_errors = require("./errors");
|
|
25
|
+
var import_stackTrace = require("../utils/isomorphic/stackTrace");
|
|
26
|
+
class Waiter {
|
|
27
|
+
constructor(channelOwner, event) {
|
|
28
|
+
this._failures = [];
|
|
29
|
+
this._logs = [];
|
|
30
|
+
this._waitId = channelOwner._platform.createGuid();
|
|
31
|
+
this._channelOwner = channelOwner;
|
|
32
|
+
this._savedZone = channelOwner._platform.zones.current().pop();
|
|
33
|
+
this._channelOwner._channel.waitForEventInfo({ info: { waitId: this._waitId, phase: "before", event } }).catch(() => {
|
|
34
|
+
});
|
|
35
|
+
this._dispose = [
|
|
36
|
+
() => this._channelOwner._wrapApiCall(async () => {
|
|
37
|
+
await this._channelOwner._channel.waitForEventInfo({ info: { waitId: this._waitId, phase: "after", error: this._error } });
|
|
38
|
+
}, { internal: true }).catch(() => {
|
|
39
|
+
})
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
static createForEvent(channelOwner, event) {
|
|
43
|
+
return new Waiter(channelOwner, event);
|
|
44
|
+
}
|
|
45
|
+
async waitForEvent(emitter, event, predicate) {
|
|
46
|
+
const { promise, dispose } = waitForEvent(emitter, event, this._savedZone, predicate);
|
|
47
|
+
return await this.waitForPromise(promise, dispose);
|
|
48
|
+
}
|
|
49
|
+
rejectOnEvent(emitter, event, error, predicate) {
|
|
50
|
+
const { promise, dispose } = waitForEvent(emitter, event, this._savedZone, predicate);
|
|
51
|
+
this._rejectOn(promise.then(() => {
|
|
52
|
+
throw typeof error === "function" ? error() : error;
|
|
53
|
+
}), dispose);
|
|
54
|
+
}
|
|
55
|
+
rejectOnTimeout(timeout, message) {
|
|
56
|
+
if (!timeout)
|
|
57
|
+
return;
|
|
58
|
+
const { promise, dispose } = waitForTimeout(timeout);
|
|
59
|
+
this._rejectOn(promise.then(() => {
|
|
60
|
+
throw new import_errors.TimeoutError(message);
|
|
61
|
+
}), dispose);
|
|
62
|
+
}
|
|
63
|
+
rejectImmediately(error) {
|
|
64
|
+
this._immediateError = error;
|
|
65
|
+
}
|
|
66
|
+
dispose() {
|
|
67
|
+
for (const dispose of this._dispose)
|
|
68
|
+
dispose();
|
|
69
|
+
}
|
|
70
|
+
async waitForPromise(promise, dispose) {
|
|
71
|
+
try {
|
|
72
|
+
if (this._immediateError)
|
|
73
|
+
throw this._immediateError;
|
|
74
|
+
const result = await Promise.race([promise, ...this._failures]);
|
|
75
|
+
if (dispose)
|
|
76
|
+
dispose();
|
|
77
|
+
return result;
|
|
78
|
+
} catch (e) {
|
|
79
|
+
if (dispose)
|
|
80
|
+
dispose();
|
|
81
|
+
this._error = e.message;
|
|
82
|
+
this.dispose();
|
|
83
|
+
(0, import_stackTrace.rewriteErrorMessage)(e, e.message + formatLogRecording(this._logs));
|
|
84
|
+
throw e;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
log(s) {
|
|
88
|
+
this._logs.push(s);
|
|
89
|
+
this._channelOwner._wrapApiCall(async () => {
|
|
90
|
+
await this._channelOwner._channel.waitForEventInfo({ info: { waitId: this._waitId, phase: "log", message: s } });
|
|
91
|
+
}, { internal: true }).catch(() => {
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
_rejectOn(promise, dispose) {
|
|
95
|
+
this._failures.push(promise);
|
|
96
|
+
if (dispose)
|
|
97
|
+
this._dispose.push(dispose);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function waitForEvent(emitter, event, savedZone, predicate) {
|
|
101
|
+
let listener;
|
|
102
|
+
const promise = new Promise((resolve, reject) => {
|
|
103
|
+
listener = async (eventArg) => {
|
|
104
|
+
await savedZone.run(async () => {
|
|
105
|
+
try {
|
|
106
|
+
if (predicate && !await predicate(eventArg))
|
|
107
|
+
return;
|
|
108
|
+
emitter.removeListener(event, listener);
|
|
109
|
+
resolve(eventArg);
|
|
110
|
+
} catch (e) {
|
|
111
|
+
emitter.removeListener(event, listener);
|
|
112
|
+
reject(e);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
emitter.addListener(event, listener);
|
|
117
|
+
});
|
|
118
|
+
const dispose = () => emitter.removeListener(event, listener);
|
|
119
|
+
return { promise, dispose };
|
|
120
|
+
}
|
|
121
|
+
function waitForTimeout(timeout) {
|
|
122
|
+
let timeoutId;
|
|
123
|
+
const promise = new Promise((resolve) => timeoutId = setTimeout(resolve, timeout));
|
|
124
|
+
const dispose = () => clearTimeout(timeoutId);
|
|
125
|
+
return { promise, dispose };
|
|
126
|
+
}
|
|
127
|
+
function formatLogRecording(log) {
|
|
128
|
+
if (!log.length)
|
|
129
|
+
return "";
|
|
130
|
+
const header = ` logs `;
|
|
131
|
+
const headerLength = 60;
|
|
132
|
+
const leftLength = (headerLength - header.length) / 2;
|
|
133
|
+
const rightLength = headerLength - header.length - leftLength;
|
|
134
|
+
return `
|
|
135
|
+
${"=".repeat(leftLength)}${header}${"=".repeat(rightLength)}
|
|
136
|
+
${log.join("\n")}
|
|
137
|
+
${"=".repeat(headerLength)}`;
|
|
138
|
+
}
|
|
139
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
140
|
+
0 && (module.exports = {
|
|
141
|
+
Waiter
|
|
142
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var webError_exports = {};
|
|
20
|
+
__export(webError_exports, {
|
|
21
|
+
WebError: () => WebError
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(webError_exports);
|
|
24
|
+
class WebError {
|
|
25
|
+
constructor(page, error) {
|
|
26
|
+
this._page = page;
|
|
27
|
+
this._error = error;
|
|
28
|
+
}
|
|
29
|
+
page() {
|
|
30
|
+
return this._page;
|
|
31
|
+
}
|
|
32
|
+
error() {
|
|
33
|
+
return this._error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
37
|
+
0 && (module.exports = {
|
|
38
|
+
WebError
|
|
39
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var worker_exports = {};
|
|
20
|
+
__export(worker_exports, {
|
|
21
|
+
Worker: () => Worker
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(worker_exports);
|
|
24
|
+
var import_channelOwner = require("./channelOwner");
|
|
25
|
+
var import_errors = require("./errors");
|
|
26
|
+
var import_events = require("./events");
|
|
27
|
+
var import_jsHandle = require("./jsHandle");
|
|
28
|
+
var import_manualPromise = require("../utils/isomorphic/manualPromise");
|
|
29
|
+
var import_timeoutSettings = require("./timeoutSettings");
|
|
30
|
+
var import_waiter = require("./waiter");
|
|
31
|
+
class Worker extends import_channelOwner.ChannelOwner {
|
|
32
|
+
constructor(parent, type, guid, initializer) {
|
|
33
|
+
super(parent, type, guid, initializer);
|
|
34
|
+
// Set for service workers.
|
|
35
|
+
this._closedScope = new import_manualPromise.LongStandingScope();
|
|
36
|
+
this._setEventToSubscriptionMapping(/* @__PURE__ */ new Map([
|
|
37
|
+
[import_events.Events.Worker.Console, "console"]
|
|
38
|
+
]));
|
|
39
|
+
this._channel.on("close", () => {
|
|
40
|
+
if (this._page)
|
|
41
|
+
this._page._workers.delete(this);
|
|
42
|
+
if (this._context)
|
|
43
|
+
this._context._serviceWorkers.delete(this);
|
|
44
|
+
this.emit(import_events.Events.Worker.Close, this);
|
|
45
|
+
});
|
|
46
|
+
this.once(import_events.Events.Worker.Close, () => this._closedScope.close(this._page?._closeErrorWithReason() || new import_errors.TargetClosedError()));
|
|
47
|
+
}
|
|
48
|
+
static fromNullable(worker) {
|
|
49
|
+
return worker ? Worker.from(worker) : null;
|
|
50
|
+
}
|
|
51
|
+
static from(worker) {
|
|
52
|
+
return worker._object;
|
|
53
|
+
}
|
|
54
|
+
url() {
|
|
55
|
+
return this._initializer.url;
|
|
56
|
+
}
|
|
57
|
+
async evaluate(pageFunction, arg) {
|
|
58
|
+
(0, import_jsHandle.assertMaxArguments)(arguments.length, 2);
|
|
59
|
+
const result = await this._channel.evaluateExpression({ expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
|
|
60
|
+
return (0, import_jsHandle.parseResult)(result.value);
|
|
61
|
+
}
|
|
62
|
+
async evaluateHandle(pageFunction, arg) {
|
|
63
|
+
(0, import_jsHandle.assertMaxArguments)(arguments.length, 2);
|
|
64
|
+
const result = await this._channel.evaluateExpressionHandle({ expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
|
|
65
|
+
return import_jsHandle.JSHandle.from(result.handle);
|
|
66
|
+
}
|
|
67
|
+
async waitForEvent(event, optionsOrPredicate = {}) {
|
|
68
|
+
return await this._wrapApiCall(async () => {
|
|
69
|
+
const timeoutSettings = this._page?._timeoutSettings ?? this._context?._timeoutSettings ?? new import_timeoutSettings.TimeoutSettings(this._platform);
|
|
70
|
+
const timeout = timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
|
|
71
|
+
const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
|
|
72
|
+
const waiter = import_waiter.Waiter.createForEvent(this, event);
|
|
73
|
+
waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
|
|
74
|
+
if (event !== import_events.Events.Worker.Close)
|
|
75
|
+
waiter.rejectOnEvent(this, import_events.Events.Worker.Close, () => new import_errors.TargetClosedError());
|
|
76
|
+
const result = await waiter.waitForEvent(this, event, predicate);
|
|
77
|
+
waiter.dispose();
|
|
78
|
+
return result;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
+
0 && (module.exports = {
|
|
84
|
+
Worker
|
|
85
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var writableStream_exports = {};
|
|
20
|
+
__export(writableStream_exports, {
|
|
21
|
+
WritableStream: () => WritableStream
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(writableStream_exports);
|
|
24
|
+
var import_channelOwner = require("./channelOwner");
|
|
25
|
+
class WritableStream extends import_channelOwner.ChannelOwner {
|
|
26
|
+
static from(Stream) {
|
|
27
|
+
return Stream._object;
|
|
28
|
+
}
|
|
29
|
+
constructor(parent, type, guid, initializer) {
|
|
30
|
+
super(parent, type, guid, initializer);
|
|
31
|
+
}
|
|
32
|
+
stream() {
|
|
33
|
+
return this._platform.streamWritable(this._channel);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
37
|
+
0 && (module.exports = {
|
|
38
|
+
WritableStream
|
|
39
|
+
});
|
|
Binary file
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var devtoolsApp_exports = {};
|
|
30
|
+
__export(devtoolsApp_exports, {
|
|
31
|
+
syncLocalStorageWithSettings: () => syncLocalStorageWithSettings
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(devtoolsApp_exports);
|
|
34
|
+
var import_fs = __toESM(require("fs"));
|
|
35
|
+
var import_path = __toESM(require("path"));
|
|
36
|
+
var import_os = __toESM(require("os"));
|
|
37
|
+
var import_net = __toESM(require("net"));
|
|
38
|
+
var import__ = require("../..");
|
|
39
|
+
var import_httpServer = require("../server/utils/httpServer");
|
|
40
|
+
var import_processLauncher = require("../server/utils/processLauncher");
|
|
41
|
+
var import_registry = require("../server/registry/index");
|
|
42
|
+
var import_utils = require("../utils");
|
|
43
|
+
var import_devtoolsController = require("./devtoolsController");
|
|
44
|
+
var import_serverRegistry = require("../serverRegistry");
|
|
45
|
+
var import_connect = require("../client/connect");
|
|
46
|
+
function readBody(request) {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const chunks = [];
|
|
49
|
+
request.on("data", (chunk) => chunks.push(chunk));
|
|
50
|
+
request.on("end", () => {
|
|
51
|
+
try {
|
|
52
|
+
const text = Buffer.concat(chunks).toString();
|
|
53
|
+
resolve(text ? JSON.parse(text) : {});
|
|
54
|
+
} catch (e) {
|
|
55
|
+
reject(e);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
request.on("error", reject);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async function parseRequest(request) {
|
|
62
|
+
const body = await readBody(request);
|
|
63
|
+
if (!body.browserDescriptor)
|
|
64
|
+
throw new Error("Dashboard app is too old, please close it and open again");
|
|
65
|
+
return { browserDescriptor: body.browserDescriptor };
|
|
66
|
+
}
|
|
67
|
+
function sendJSON(response, data, statusCode = 200) {
|
|
68
|
+
response.statusCode = statusCode;
|
|
69
|
+
response.setHeader("Content-Type", "application/json");
|
|
70
|
+
response.end(JSON.stringify(data));
|
|
71
|
+
}
|
|
72
|
+
async function loadBrowserDescriptorSessions(wsPath) {
|
|
73
|
+
const servers = await import_serverRegistry.serverRegistry.list({ includeDisconnected: true });
|
|
74
|
+
const sessions = [];
|
|
75
|
+
for (const [, browsers] of servers) {
|
|
76
|
+
for (const browser of browsers) {
|
|
77
|
+
let wsUrl;
|
|
78
|
+
if (browser.canConnect) {
|
|
79
|
+
const url = new URL(wsPath, "http://localhost");
|
|
80
|
+
url.searchParams.set("browserDescriptor", JSON.stringify(browser));
|
|
81
|
+
wsUrl = url.pathname + url.search;
|
|
82
|
+
}
|
|
83
|
+
sessions.push({ browserDescriptor: browser, wsUrl });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return sessions;
|
|
87
|
+
}
|
|
88
|
+
const socketPathToDevToolsConnection = /* @__PURE__ */ new Map();
|
|
89
|
+
async function handleApiRequest(httpServer, request, response) {
|
|
90
|
+
const url = new URL(request.url, httpServer.urlPrefix("human-readable"));
|
|
91
|
+
const apiPath = url.pathname;
|
|
92
|
+
if (apiPath === "/api/sessions/list" && request.method === "GET") {
|
|
93
|
+
const sessions = await loadBrowserDescriptorSessions(httpServer.wsGuid());
|
|
94
|
+
sendJSON(response, { sessions });
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (apiPath === "/api/sessions/close" && request.method === "POST") {
|
|
98
|
+
const { browserDescriptor } = await parseRequest(request);
|
|
99
|
+
let browser;
|
|
100
|
+
try {
|
|
101
|
+
browser = await (0, import_connect.connectToBrowserAcrossVersions)(browserDescriptor);
|
|
102
|
+
} catch (e) {
|
|
103
|
+
sendJSON(response, { error: "Failed to connect to browser socket: " + e.message }, 500);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
await Promise.all(browser.contexts().map((context) => context.close()));
|
|
108
|
+
await browser.close();
|
|
109
|
+
sendJSON(response, { success: true });
|
|
110
|
+
return;
|
|
111
|
+
} catch (e) {
|
|
112
|
+
sendJSON(response, { error: "Failed to close browser: " + e.message }, 500);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (apiPath === "/api/sessions/delete-data" && request.method === "POST") {
|
|
117
|
+
sendJSON(response, { success: true });
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
response.statusCode = 404;
|
|
121
|
+
response.end(JSON.stringify({ error: "Not found" }));
|
|
122
|
+
}
|
|
123
|
+
async function openDevToolsApp() {
|
|
124
|
+
const httpServer = new import_httpServer.HttpServer();
|
|
125
|
+
const libDir = import_path.default.join(__dirname, "..", "..", "package.json");
|
|
126
|
+
const devtoolsDir = import_path.default.join(import_path.default.dirname(libDir), "lib/vite/devtools");
|
|
127
|
+
httpServer.routePrefix("/api/", (request, response) => {
|
|
128
|
+
handleApiRequest(httpServer, request, response).catch((e) => {
|
|
129
|
+
response.statusCode = 500;
|
|
130
|
+
response.end(JSON.stringify({ error: e.message }));
|
|
131
|
+
});
|
|
132
|
+
return true;
|
|
133
|
+
});
|
|
134
|
+
httpServer.createWebSocket((url2) => {
|
|
135
|
+
const descriptorJson = url2.searchParams.get("browserDescriptor");
|
|
136
|
+
if (!descriptorJson)
|
|
137
|
+
throw new Error("Unsupported WebSocket URL: " + url2.toString());
|
|
138
|
+
const browserDescriptor = JSON.parse(descriptorJson);
|
|
139
|
+
const cdpPageId = url2.searchParams.get("cdpPageId");
|
|
140
|
+
if (cdpPageId) {
|
|
141
|
+
const socketPath2 = browserDescriptor.pipeName;
|
|
142
|
+
const connection2 = socketPathToDevToolsConnection.get(socketPath2);
|
|
143
|
+
if (!connection2)
|
|
144
|
+
throw new Error("CDP connection not found for socket path: " + socketPath2);
|
|
145
|
+
const page2 = connection2.pageForId(cdpPageId);
|
|
146
|
+
if (!page2)
|
|
147
|
+
throw new Error("Page not found for page ID: " + cdpPageId);
|
|
148
|
+
return new import_devtoolsController.CDPConnection(page2);
|
|
149
|
+
}
|
|
150
|
+
const socketPath = browserDescriptor.pipeName;
|
|
151
|
+
const cdpUrl = new URL(httpServer.urlPrefix("human-readable"));
|
|
152
|
+
cdpUrl.pathname = httpServer.wsGuid();
|
|
153
|
+
cdpUrl.searchParams.set("browserDescriptor", descriptorJson);
|
|
154
|
+
const connection = new import_devtoolsController.DevToolsConnection(browserDescriptor, cdpUrl, () => socketPathToDevToolsConnection.delete(socketPath));
|
|
155
|
+
socketPathToDevToolsConnection.set(socketPath, connection);
|
|
156
|
+
return connection;
|
|
157
|
+
});
|
|
158
|
+
httpServer.routePrefix("/", (request, response) => {
|
|
159
|
+
const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
|
|
160
|
+
const filePath = pathname === "/" ? "index.html" : pathname.substring(1);
|
|
161
|
+
const resolved = import_path.default.join(devtoolsDir, filePath);
|
|
162
|
+
if (!resolved.startsWith(devtoolsDir))
|
|
163
|
+
return false;
|
|
164
|
+
return httpServer.serveFile(request, response, resolved);
|
|
165
|
+
});
|
|
166
|
+
await httpServer.start();
|
|
167
|
+
const url = httpServer.urlPrefix("human-readable");
|
|
168
|
+
const { page } = await launchApp("devtools");
|
|
169
|
+
await page.goto(url);
|
|
170
|
+
return page;
|
|
171
|
+
}
|
|
172
|
+
async function launchApp(appName) {
|
|
173
|
+
const channel = (0, import_registry.findChromiumChannelBestEffort)("javascript");
|
|
174
|
+
const context = await import__.chromium.launchPersistentContext("", {
|
|
175
|
+
ignoreDefaultArgs: ["--enable-automation"],
|
|
176
|
+
channel,
|
|
177
|
+
headless: false,
|
|
178
|
+
args: [
|
|
179
|
+
"--app=data:text/html,",
|
|
180
|
+
"--test-type=",
|
|
181
|
+
`--window-size=1280,800`,
|
|
182
|
+
`--window-position=100,100`
|
|
183
|
+
],
|
|
184
|
+
viewport: null
|
|
185
|
+
});
|
|
186
|
+
const [page] = context.pages();
|
|
187
|
+
if (process.platform === "darwin") {
|
|
188
|
+
context.on("page", async (newPage) => {
|
|
189
|
+
if (newPage.mainFrame().url() === "chrome://new-tab-page/") {
|
|
190
|
+
await page.bringToFront();
|
|
191
|
+
await newPage.close();
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
page.on("close", () => {
|
|
196
|
+
(0, import_processLauncher.gracefullyProcessExitDoNotHang)(0);
|
|
197
|
+
});
|
|
198
|
+
const image = await import_fs.default.promises.readFile(import_path.default.join(__dirname, "appIcon.png"));
|
|
199
|
+
await page._setDockTile(image);
|
|
200
|
+
await syncLocalStorageWithSettings(page, appName);
|
|
201
|
+
return { context, page };
|
|
202
|
+
}
|
|
203
|
+
async function syncLocalStorageWithSettings(page, appName) {
|
|
204
|
+
const settingsFile = import_path.default.join(import_registry.registryDirectory, ".settings", `${appName}.json`);
|
|
205
|
+
await page.exposeBinding("_saveSerializedSettings", (_, settings2) => {
|
|
206
|
+
import_fs.default.mkdirSync(import_path.default.dirname(settingsFile), { recursive: true });
|
|
207
|
+
import_fs.default.writeFileSync(settingsFile, settings2);
|
|
208
|
+
});
|
|
209
|
+
const settings = await import_fs.default.promises.readFile(settingsFile, "utf-8").catch(() => "{}");
|
|
210
|
+
await page.addInitScript(
|
|
211
|
+
`(${String((settings2) => {
|
|
212
|
+
if (location && location.protocol === "data:")
|
|
213
|
+
return;
|
|
214
|
+
if (window.top !== window)
|
|
215
|
+
return;
|
|
216
|
+
Object.entries(settings2).map(([k, v]) => localStorage[k] = v);
|
|
217
|
+
window.saveSettings = () => {
|
|
218
|
+
window._saveSerializedSettings(JSON.stringify({ ...localStorage }));
|
|
219
|
+
};
|
|
220
|
+
})})(${settings});
|
|
221
|
+
`
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
function socketsDirectory() {
|
|
225
|
+
return process.env.PLAYWRIGHT_DAEMON_SOCKETS_DIR || import_path.default.join(import_os.default.tmpdir(), "playwright-cli");
|
|
226
|
+
}
|
|
227
|
+
function devtoolsSocketPath() {
|
|
228
|
+
const userNameHash = (0, import_utils.calculateSha1)(process.env.USERNAME || "default").slice(0, 8);
|
|
229
|
+
return process.platform === "win32" ? `\\\\.\\pipe\\playwright-devtools-${userNameHash}` : import_path.default.join(socketsDirectory(), `devtools-${userNameHash}.sock`);
|
|
230
|
+
}
|
|
231
|
+
async function acquireSingleton() {
|
|
232
|
+
const socketPath = devtoolsSocketPath();
|
|
233
|
+
if (process.platform !== "win32")
|
|
234
|
+
await import_fs.default.promises.mkdir(import_path.default.dirname(socketPath), { recursive: true });
|
|
235
|
+
return await new Promise((resolve, reject) => {
|
|
236
|
+
const server = import_net.default.createServer();
|
|
237
|
+
server.listen(socketPath, () => resolve(server));
|
|
238
|
+
server.on("error", (err) => {
|
|
239
|
+
if (err.code !== "EADDRINUSE")
|
|
240
|
+
return reject(err);
|
|
241
|
+
const client = import_net.default.connect(socketPath, () => {
|
|
242
|
+
client.write("bringToFront");
|
|
243
|
+
client.end();
|
|
244
|
+
reject(new Error("already running"));
|
|
245
|
+
});
|
|
246
|
+
client.on("error", () => {
|
|
247
|
+
if (process.platform !== "win32")
|
|
248
|
+
import_fs.default.unlinkSync(socketPath);
|
|
249
|
+
server.listen(socketPath, () => resolve(server));
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
async function main() {
|
|
255
|
+
let server;
|
|
256
|
+
process.on("exit", () => server?.close());
|
|
257
|
+
try {
|
|
258
|
+
server = await acquireSingleton();
|
|
259
|
+
} catch {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const page = await openDevToolsApp();
|
|
263
|
+
server.on("connection", (socket) => {
|
|
264
|
+
socket.on("data", (data) => {
|
|
265
|
+
if (data.toString() === "bringToFront")
|
|
266
|
+
page?.bringToFront().catch(() => {
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
void main();
|
|
272
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
273
|
+
0 && (module.exports = {
|
|
274
|
+
syncLocalStorageWithSettings
|
|
275
|
+
});
|