rechrome 1.19.0 → 1.21.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/README.md +8 -3
- package/package.json +5 -3
- package/rech.js +153 -55
- package/rech.ts +153 -55
- package/serve.js +106 -23
- package/serve.ts +106 -23
- package/vendor/playwright-cli/node_modules/playwright-core/README.md +3 -0
- package/vendor/playwright-cli/node_modules/playwright-core/ThirdPartyNotices.txt +13 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/vendor/playwright-cli/node_modules/playwright-core/browsers.json +81 -0
- package/vendor/playwright-cli/node_modules/playwright-core/cli.js +21 -0
- package/vendor/playwright-cli/node_modules/playwright-core/index.d.ts +17 -0
- package/vendor/playwright-cli/node_modules/playwright-core/index.js +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/index.mjs +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/androidServerImpl.js +65 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/bootstrap.js +77 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/browserServerImpl.js +120 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/cli/driver.js +98 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/cli/program.js +597 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/cli/programWithTestStub.js +74 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/android.js +361 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/api.js +137 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/artifact.js +79 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/browser.js +169 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/browserContext.js +583 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/browserType.js +153 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/cdpSession.js +55 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/channelOwner.js +194 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clientHelper.js +64 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clientInstrumentation.js +55 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clientStackTrace.js +69 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clock.js +68 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/connect.js +143 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/connection.js +322 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/consoleMessage.js +61 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/coverage.js +44 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/debugger.js +57 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/dialog.js +56 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/disposable.js +76 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/download.js +62 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/electron.js +138 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/elementHandle.js +281 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/errors.js +77 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/eventEmitter.js +314 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/events.js +103 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/fetch.js +367 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/fileChooser.js +46 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/fileUtils.js +34 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/frame.js +404 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/harRouter.js +99 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/input.js +84 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/jsHandle.js +105 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/jsonPipe.js +39 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/localUtils.js +60 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/locator.js +367 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/network.js +750 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/page.js +729 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/platform.js +77 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/playwright.js +71 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/screencast.js +48 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/selectors.js +57 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/stream.js +39 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/timeoutSettings.js +79 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/tracing.js +126 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/types.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/video.js +68 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/waiter.js +142 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/webError.js +39 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/worker.js +85 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/client/writableStream.js +39 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/coreBundle.js +68170 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/electron/loader.js +67 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/cliDaemon.js +5 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/dashboardApp.js +3 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/mcp.js +10 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/oopBrowserDownload.js +3 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/bindingsControllerSource.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/clockSource.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/injectedScriptSource.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/pollingRecorderSource.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/storageScriptSource.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/utilityScriptSource.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/webSocketMockSource.js +336 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/inProcessFactory.js +60 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/inprocess.js +3 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/mcpBundle.js +81 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/mcpBundleImpl/index.js +91 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/outofprocess.js +76 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/package.js +50 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/protocol/serializers.js +197 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/protocol/validator.js +3034 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/protocol/validatorPrimitives.js +193 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightConnection.js +131 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightPipeServer.js +100 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightServer.js +339 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightWebSocketServer.js +73 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/serverTransport.js +96 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/android/android.js +465 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/android/backendAdb.js +177 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/artifact.js +127 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiBrowser.js +571 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiChromium.js +162 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiConnection.js +213 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiDeserializer.js +116 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiExecutionContext.js +267 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiFirefox.js +128 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiInput.js +146 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiNetworkManager.js +411 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiOverCdp.js +102 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiPage.js +599 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiPdf.js +106 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocol.js +24 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiSerializer.js +148 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/browser.js +223 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/browserContext.js +703 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/browserType.js +338 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/callLog.js +82 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/chromium.js +399 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/chromiumSwitches.js +104 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crBrowser.js +532 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crConnection.js +197 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crCoverage.js +235 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crDevTools.js +111 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crDragDrop.js +131 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crExecutionContext.js +146 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crInput.js +187 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crNetworkManager.js +708 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crPage.js +1004 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crPdf.js +121 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crProtocolHelper.js +145 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crServiceWorker.js +137 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/defaultFontFamilies.js +162 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/protocol.d.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/clock.js +149 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/csharp.js +327 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/java.js +274 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/javascript.js +247 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/jsonl.js +52 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/language.js +132 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/languages.js +68 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/python.js +279 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/types.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/console.js +61 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/cookieStore.js +206 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/debugController.js +197 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/debugger.js +120 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/deviceDescriptors.js +39 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/deviceDescriptorsSource.json +1779 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dialog.js +116 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/androidDispatcher.js +325 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/artifactDispatcher.js +118 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/browserContextDispatcher.js +381 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/browserDispatcher.js +124 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/cdpSessionDispatcher.js +47 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/debuggerDispatcher.js +80 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/dialogDispatcher.js +47 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/dispatcher.js +364 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/disposableDispatcher.js +39 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/electronDispatcher.js +90 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/frameDispatcher.js +227 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/localUtilsDispatcher.js +185 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/networkDispatchers.js +214 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/pageDispatcher.js +434 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/playwrightDispatcher.js +108 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/streamDispatcher.js +67 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/tracingDispatcher.js +68 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/disposable.js +41 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dom.js +823 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/download.js +71 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/electron/electron.js +272 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/electron/loader.js +115 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/errors.js +69 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/fetch.js +621 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/fileChooser.js +43 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/fileUploadUtils.js +84 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffBrowser.js +415 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffConnection.js +142 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffExecutionContext.js +150 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffInput.js +175 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffNetworkManager.js +256 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffPage.js +495 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/firefox.js +114 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/protocol.d.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/formData.js +147 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/frameSelectors.js +160 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/frames.js +1495 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/har/harRecorder.js +147 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/har/harTracer.js +608 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/harBackend.js +157 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/helper.js +96 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/index.js +58 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/input.js +277 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/instrumentation.js +72 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/javascript.js +291 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/launchApp.js +127 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/localUtils.js +214 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/macEditingCommands.js +143 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/network.js +668 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/page.js +884 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/pipeTransport.js +89 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/playwright.js +69 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/progress.js +136 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/protocolError.js +52 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/chat.js +161 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderApp.js +367 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +138 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderUtils.js +157 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/throttledFile.js +57 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder.js +540 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/browserFetcher.js +177 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/dependencies.js +371 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/index.js +1395 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/nativeDeps.js +1281 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/oopDownloadBrowserMain.js +127 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/screencast.js +216 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/screenshotter.js +333 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/selectors.js +112 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/socksClientCertificatesInterceptor.js +383 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/socksInterceptor.js +95 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/recorder/snapshotter.js +147 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/recorder/snapshotterInjected.js +561 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/recorder/tracing.js +607 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/viewer/traceViewer.js +244 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/transport.js +181 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/types.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/usKeyboardLayout.js +152 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/ascii.js +44 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/comparators.js +139 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/crypto.js +216 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/debug.js +42 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/debugLogger.js +122 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/disposable.js +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/env.js +73 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/eventsHelper.js +41 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/expectUtils.js +123 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/fileUtils.js +191 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/happyEyeballs.js +207 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/hostPlatform.js +123 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/httpServer.js +205 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/compare.js +109 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/stats.js +102 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/linuxUtils.js +71 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/network.js +244 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/nodePlatform.js +154 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/pipeTransport.js +84 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/processLauncher.js +243 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/profiler.js +65 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/socksProxy.js +511 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/spawnAsync.js +41 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/task.js +51 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/userAgent.js +98 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/wsServer.js +121 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/zipFile.js +74 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/zones.js +57 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/videoRecorder.js +133 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/protocol.d.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/webkit.js +108 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkBrowser.js +331 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkConnection.js +144 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkExecutionContext.js +154 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkInput.js +181 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkInterceptableRequest.js +197 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkPage.js +1164 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkProvisionalPage.js +83 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkWorkers.js +106 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/serverRegistry.js +7343 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +354 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/third_party/pixelmatch.js +255 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/browserBackend.js +79 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/common.js +63 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/config.js +41 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/console.js +66 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/context.js +290 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/cookies.js +152 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/devtools.js +69 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/dialogs.js +59 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/evaluate.js +64 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/files.js +60 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/form.js +64 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/keyboard.js +155 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/logFile.js +95 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/mouse.js +168 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/navigate.js +106 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/network.js +135 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/pdf.js +48 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/response.js +302 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/route.js +140 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/runCode.js +76 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/screenshot.js +88 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/sessionLog.js +74 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/snapshot.js +208 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/storage.js +67 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tab.js +445 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tabs.js +67 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tool.js +47 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tools.js +102 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tracing.js +75 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/utils.js +83 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/verify.js +151 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/video.js +89 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/wait.js +63 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/webstorage.js +223 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/channelSessions.js +141 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/cli.js +6 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/help.json +679 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/minimist.js +128 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/output.js +343 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/program.js +380 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/registry.js +176 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/session.js +265 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/SKILL.md +388 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/running-code.md +241 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/session-management.md +225 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/spec-driven-testing.md +305 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/storage-state.md +275 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/test-generation.md +134 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/tracing.md +139 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/video-recording.md +143 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/command.js +73 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/commands.js +933 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/daemon.js +178 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/helpGenerator.js +173 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/program.js +118 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/dashboard/appIcon.png +0 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/dashboard/dashboardApp.js +286 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/dashboard/dashboardController.js +296 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/exports.js +60 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/browserFactory.js +233 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/cdpRelay.js +356 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/cli-stub.js +7 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/config.d.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/config.js +401 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/configIni.js +189 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/extensionContextFactory.js +59 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/index.js +62 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/log.js +35 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/program.js +107 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/protocol.js +28 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/watchdog.js +44 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/SKILL.md +171 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/installSkill.js +48 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceActions.js +142 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceAttachments.js +69 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceCli.js +80 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceConsole.js +97 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceErrors.js +55 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceOpen.js +69 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceParser.js +96 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceRequests.js +158 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceScreenshot.js +68 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceSnapshot.js +149 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceUtils.js +135 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/connect.js +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/extension.js +78 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/mcp/http.js +152 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/mcp/server.js +230 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/mcp/tool.js +47 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/socketConnection.js +108 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/ariaSnapshot.js +455 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/assert.js +31 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/colors.js +72 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/cssParser.js +245 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/cssTokenizer.js +1051 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/formatUtils.js +64 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/headers.js +53 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/imageUtils.js +141 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/locatorGenerators.js +689 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/locatorParser.js +176 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/locatorUtils.js +81 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/lruCache.js +51 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/manualPromise.js +114 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/mimeType.js +464 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/multimap.js +80 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/protocolFormatter.js +81 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/protocolMetainfo.js +342 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/rtti.js +43 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/selectorParser.js +386 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/semaphore.js +54 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/stackTrace.js +158 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/stringUtils.js +204 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/time.js +49 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/entries.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotRenderer.js +502 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceLoader.js +131 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModel.js +366 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceUtils.js +58 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/types.js +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/urlMatch.js +243 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/yaml.js +84 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utils.js +113 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utilsBundle.js +86478 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +2058 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/utilsBundleImpl/index.js +218 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/index-BY2S1tHT.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/index-DpEq2p62.js +52 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/index.html +29 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/htmlReport/index.html +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/htmlReport/report.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/htmlReport/report.js +72 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-BHYmBp6h.js +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/index-4ZiSSCmn.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/index-DA10QRaq.js +193 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BRrOnXSS.js +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BtGnd8kr.js +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-CnvO0fko.js +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-BkMbME_o.js +262 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-BoN8TZYy.js +262 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-CN3cwLGD.js +262 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/urlMatch-BYQrIQwR.js +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.BDKsFU3c.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.DcQiWcKS.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.B2ffe31o.js +2 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.CzXZzn5A.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.Df3uWWXm.js +2 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.PqVYgODr.js +2 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.html +44 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +10 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/snapshot.v8KI4P3m.js +2 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +5 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.B-IwVgWY.js +6 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.BZQ54Kgt.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CmAqMvmy.js +6 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.u9Eas4CP.js +6 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/xdg-open +1066 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/zipBundle.js +34 -0
- package/vendor/playwright-cli/node_modules/playwright-core/lib/zipBundleImpl.js +5 -0
- package/vendor/playwright-cli/node_modules/playwright-core/package.json +34 -0
- package/vendor/playwright-cli/node_modules/playwright-core/types/protocol.d.ts +24565 -0
- package/vendor/playwright-cli/node_modules/playwright-core/types/structs.d.ts +45 -0
- package/vendor/playwright-cli/node_modules/playwright-core/types/types.d.ts +23879 -0
- package/vendor/playwright-cli/package.json +6 -0
- package/vendor/playwright-cli/playwright-cli.js +50 -0
package/serve.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { file } from "bun";
|
|
2
2
|
import { createHash, X509Certificate } from "crypto";
|
|
3
|
-
import { mkdirSync, unlinkSync, accessSync, constants as fsConstants } from "fs";
|
|
3
|
+
import { mkdirSync, unlinkSync, accessSync, readdirSync, constants as fsConstants } from "fs";
|
|
4
4
|
import { join, resolve, relative, isAbsolute } from "path";
|
|
5
5
|
import {
|
|
6
6
|
log,
|
|
@@ -10,30 +10,97 @@ import {
|
|
|
10
10
|
RECH_DIR,
|
|
11
11
|
HOME,
|
|
12
12
|
PASSTHROUGH_ENV_KEYS,
|
|
13
|
+
resolvePlaywrightCli,
|
|
13
14
|
} from "./rech.js";
|
|
14
15
|
|
|
15
16
|
const TAILSCALE_BIN = process.env.TAILSCALE_BIN || "/Applications/Tailscale.app/Contents/MacOS/Tailscale";
|
|
16
17
|
const CERT_RENEW_THRESHOLD_DAYS = 7;
|
|
17
18
|
|
|
18
|
-
// Short label for a client identity, used as the Chrome tab-group name (the tab
|
|
19
|
-
//
|
|
20
|
-
// -> "
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
// Short label for a client identity, used as the Chrome tab-group name (the tab strip is
|
|
20
|
+
// space-constrained, so cap at 7 chars). Handles the current label shape and the legacy gitUrl:
|
|
21
|
+
// "host/owner/repo#<basename>@<branch>" -> "bas:bra" (3+3) (current)
|
|
22
|
+
// "host/owner/repo/tree/branch" -> "rep:bra" (3+3) (legacy gitUrl)
|
|
23
|
+
// "host:/path/to/dir" -> "dir" (non-git)
|
|
24
|
+
// bare host/IP -> as-is
|
|
25
|
+
export const MAX_GROUP_LABEL_LEN = 7;
|
|
26
|
+
export function shortClientLabel(raw: string): string {
|
|
24
27
|
if (!raw) return raw;
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const hostCwd = baseId.match(/^[^:]+:(.+)$/);
|
|
32
|
-
label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || baseId) : baseId;
|
|
28
|
+
const join3 = (a: string, b?: string) => (b ? `${a.slice(0, 3)}:${b.slice(0, 3)}` : a);
|
|
29
|
+
// Current label: "[remote#]<worktree-basename>[@<branch>]"
|
|
30
|
+
if (raw.includes("#") || (raw.includes("@") && !raw.startsWith("http"))) {
|
|
31
|
+
const afterHash = raw.includes("#") ? raw.slice(raw.indexOf("#") + 1) : raw;
|
|
32
|
+
const [base, branch] = afterHash.split("@");
|
|
33
|
+
return join3(base, branch).slice(0, MAX_GROUP_LABEL_LEN);
|
|
33
34
|
}
|
|
35
|
+
// Legacy gitUrl: ".../owner/repo/tree/branch"
|
|
36
|
+
const git = raw.match(/^https?:\/\/[^/]+\/[^/]+\/([^/]+?)(?:\/tree\/(.+))?$/);
|
|
37
|
+
if (git) return join3(git[1], git[2]).slice(0, MAX_GROUP_LABEL_LEN);
|
|
38
|
+
// "host:/path/to/dir" -> basename
|
|
39
|
+
const hostCwd = raw.match(/^[^:]+:(.+)$/);
|
|
40
|
+
const label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || raw) : raw;
|
|
34
41
|
return label.slice(0, MAX_GROUP_LABEL_LEN);
|
|
35
42
|
}
|
|
36
43
|
|
|
44
|
+
// --isolate sessions (`rech --isolate ...` -> `-s=iso-<rand>`) are throwaway, single-flow
|
|
45
|
+
// buckets. We reap them on an idle TTL so an OAuth/login drive can't leak an orphaned browser
|
|
46
|
+
// context. A TTL (not close-on-exit-per-command) is required because the flows are multi-step
|
|
47
|
+
// (open -> click -> consent): closing after each command would break them. The reaper runs the
|
|
48
|
+
// CLI's `close` for the specific iso session only — it never touches the user's other sessions
|
|
49
|
+
// or quits Chrome.
|
|
50
|
+
const ISO_SESSION_TTL_MS = Number(process.env.RECH_ISOLATE_TTL_MS) || 15 * 60_000;
|
|
51
|
+
const ISO_REAP_INTERVAL_MS = 60_000;
|
|
52
|
+
const isoLastUsed = new Map<string, number>();
|
|
53
|
+
|
|
54
|
+
export function isIsoSession(namespacedSession: string): boolean {
|
|
55
|
+
return /(?:^|-)iso-[0-9a-f]+$/.test(namespacedSession);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function tmpSocketRoot(): string {
|
|
59
|
+
return `${(process.env.TMPDIR || "/tmp").replace(/\/$/, "")}/playwright-cli`;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// On startup, adopt any iso-* sessions a previous daemon left behind so they still get reaped
|
|
63
|
+
// (in-memory tracking alone would miss pre-restart orphans). Best-effort: a mis-derived session
|
|
64
|
+
// just yields a harmless no-op `close`. Socket files are named with the session as their prefix.
|
|
65
|
+
function adoptOrphanedIsoSessions(): void {
|
|
66
|
+
try {
|
|
67
|
+
const root = tmpSocketRoot();
|
|
68
|
+
for (const sub of readdirSync(root)) {
|
|
69
|
+
let entries: string[];
|
|
70
|
+
try { entries = readdirSync(`${root}/${sub}`); } catch { continue; }
|
|
71
|
+
for (const f of entries) {
|
|
72
|
+
const m = f.match(/^([0-9a-f]+-iso-[0-9a-f]+)/) || f.match(/^(iso-[0-9a-f]+)/);
|
|
73
|
+
if (m && !isoLastUsed.has(m[1])) {
|
|
74
|
+
isoLastUsed.set(m[1], Date.now());
|
|
75
|
+
log(`adopted orphaned isolated session for reaping: ${m[1]}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch {
|
|
80
|
+
// socket dir may not exist yet — nothing to adopt
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function reapIdleIsoSessions(bin: string, binArgs: string[], workDir: string): void {
|
|
85
|
+
const now = Date.now();
|
|
86
|
+
for (const [sess, last] of isoLastUsed) {
|
|
87
|
+
if (now - last < ISO_SESSION_TTL_MS) continue;
|
|
88
|
+
isoLastUsed.delete(sess);
|
|
89
|
+
try {
|
|
90
|
+
Bun.spawn([bin, ...binArgs, "close", `-s=${sess}`], {
|
|
91
|
+
cwd: workDir,
|
|
92
|
+
stdin: "ignore",
|
|
93
|
+
stdout: "ignore",
|
|
94
|
+
stderr: "ignore",
|
|
95
|
+
env: { PATH: process.env.PATH, HOME: HOME, USERPROFILE: process.env.USERPROFILE },
|
|
96
|
+
});
|
|
97
|
+
log(`reaped idle isolated session (idle ${Math.round((now - last) / 1000)}s): ${sess}`);
|
|
98
|
+
} catch (e) {
|
|
99
|
+
log(`reap failed for ${sess}: ${e}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
37
104
|
async function renewCertIfNeeded(certPath: string, keyPath: string): Promise<boolean> {
|
|
38
105
|
const certContent = await file(certPath).text().catch(() => null);
|
|
39
106
|
if (!certContent) return false;
|
|
@@ -141,6 +208,13 @@ export async function serve() {
|
|
|
141
208
|
const workDir = join(RECH_DIR, "output");
|
|
142
209
|
mkdirSync(workDir, { recursive: true });
|
|
143
210
|
|
|
211
|
+
// Reap idle --isolate sessions so single-shot OAuth/login drives don't leak browser contexts.
|
|
212
|
+
adoptOrphanedIsoSessions();
|
|
213
|
+
setInterval(() => {
|
|
214
|
+
const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
|
|
215
|
+
reapIdleIsoSessions(bin, binArgs, workDir);
|
|
216
|
+
}, ISO_REAP_INTERVAL_MS);
|
|
217
|
+
|
|
144
218
|
const listenHost = process.env.RECH_HOST || "127.0.0.1";
|
|
145
219
|
const canRead = (p?: string) => { try { accessSync(p!, fsConstants.R_OK); return true; } catch { return false; } };
|
|
146
220
|
const certPath = canRead(process.env.RECH_TLS_CERT) ? process.env.RECH_TLS_CERT : undefined;
|
|
@@ -200,14 +274,19 @@ export async function serve() {
|
|
|
200
274
|
} else {
|
|
201
275
|
args = body.args;
|
|
202
276
|
const id = body.identity as
|
|
203
|
-
| { gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
|
|
277
|
+
| { key?: string; label?: string; gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
|
|
204
278
|
| undefined;
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
279
|
+
// New clients send {key,label} (key = worktree-root-based, decoupled from the pretty
|
|
280
|
+
// label). Fall back to the legacy {gitUrl|hostname:cwd} shape for older clients.
|
|
281
|
+
const legacy = id?.gitUrl || (id?.hostname && id?.cwd ? `${id.hostname}:${id.cwd}` : null);
|
|
282
|
+
const keyBase = id?.key || legacy;
|
|
283
|
+
const labelBase = id?.label || legacy || keyBase;
|
|
284
|
+
if (keyBase) {
|
|
285
|
+
// Hash the key (+ profile via a NUL separator that never appears in a label).
|
|
286
|
+
const hashInput = id?.profile ? `${keyBase}\u0000${id.profile}` : keyBase;
|
|
287
|
+
sessionId = createHash("sha256").update(hashInput).digest("hex").slice(0, 8);
|
|
288
|
+
clientName = labelBase || keyBase;
|
|
289
|
+
log(`session from identity: ${clientName}${id?.profile ? ` profile:${id.profile}` : ""} [${keyBase}] -> ${sessionId}`);
|
|
211
290
|
} else {
|
|
212
291
|
const clientAddr = `${req.headers.get("x-forwarded-for") || server.requestIP(req)?.address || "unknown"}`;
|
|
213
292
|
sessionId = createHash("sha256").update(clientAddr).digest("hex").slice(0, 8);
|
|
@@ -232,8 +311,12 @@ export async function serve() {
|
|
|
232
311
|
return true;
|
|
233
312
|
});
|
|
234
313
|
const namespacedSession = clientSession ? `${sessionId}-${clientSession}` : sessionId;
|
|
314
|
+
// Track --isolate sessions so the idle-TTL reaper can close them later.
|
|
315
|
+
if (isIsoSession(namespacedSession)) isoLastUsed.set(namespacedSession, Date.now());
|
|
235
316
|
|
|
236
|
-
|
|
317
|
+
// daemonInstall bakes PLAYWRIGHT_CLI into the daemon env; resolvePlaywrightCli() is the
|
|
318
|
+
// fallback for a standalone `serve` (it re-runs the same env > fork > @playwright/cli > legacy chain).
|
|
319
|
+
const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
|
|
237
320
|
|
|
238
321
|
if (filteredArgs.length === 0) {
|
|
239
322
|
filteredArgs.push("--help");
|
package/serve.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { file } from "bun";
|
|
2
2
|
import { createHash, X509Certificate } from "crypto";
|
|
3
|
-
import { mkdirSync, unlinkSync, accessSync, constants as fsConstants } from "fs";
|
|
3
|
+
import { mkdirSync, unlinkSync, accessSync, readdirSync, constants as fsConstants } from "fs";
|
|
4
4
|
import { join, resolve, relative, isAbsolute } from "path";
|
|
5
5
|
import {
|
|
6
6
|
log,
|
|
@@ -10,30 +10,97 @@ import {
|
|
|
10
10
|
RECH_DIR,
|
|
11
11
|
HOME,
|
|
12
12
|
PASSTHROUGH_ENV_KEYS,
|
|
13
|
+
resolvePlaywrightCli,
|
|
13
14
|
} from "./rech.ts";
|
|
14
15
|
|
|
15
16
|
const TAILSCALE_BIN = process.env.TAILSCALE_BIN || "/Applications/Tailscale.app/Contents/MacOS/Tailscale";
|
|
16
17
|
const CERT_RENEW_THRESHOLD_DAYS = 7;
|
|
17
18
|
|
|
18
|
-
// Short label for a client identity, used as the Chrome tab-group name (the tab
|
|
19
|
-
//
|
|
20
|
-
// -> "
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
// Short label for a client identity, used as the Chrome tab-group name (the tab strip is
|
|
20
|
+
// space-constrained, so cap at 7 chars). Handles the current label shape and the legacy gitUrl:
|
|
21
|
+
// "host/owner/repo#<basename>@<branch>" -> "bas:bra" (3+3) (current)
|
|
22
|
+
// "host/owner/repo/tree/branch" -> "rep:bra" (3+3) (legacy gitUrl)
|
|
23
|
+
// "host:/path/to/dir" -> "dir" (non-git)
|
|
24
|
+
// bare host/IP -> as-is
|
|
25
|
+
export const MAX_GROUP_LABEL_LEN = 7;
|
|
26
|
+
export function shortClientLabel(raw: string): string {
|
|
24
27
|
if (!raw) return raw;
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const hostCwd = baseId.match(/^[^:]+:(.+)$/);
|
|
32
|
-
label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || baseId) : baseId;
|
|
28
|
+
const join3 = (a: string, b?: string) => (b ? `${a.slice(0, 3)}:${b.slice(0, 3)}` : a);
|
|
29
|
+
// Current label: "[remote#]<worktree-basename>[@<branch>]"
|
|
30
|
+
if (raw.includes("#") || (raw.includes("@") && !raw.startsWith("http"))) {
|
|
31
|
+
const afterHash = raw.includes("#") ? raw.slice(raw.indexOf("#") + 1) : raw;
|
|
32
|
+
const [base, branch] = afterHash.split("@");
|
|
33
|
+
return join3(base, branch).slice(0, MAX_GROUP_LABEL_LEN);
|
|
33
34
|
}
|
|
35
|
+
// Legacy gitUrl: ".../owner/repo/tree/branch"
|
|
36
|
+
const git = raw.match(/^https?:\/\/[^/]+\/[^/]+\/([^/]+?)(?:\/tree\/(.+))?$/);
|
|
37
|
+
if (git) return join3(git[1], git[2]).slice(0, MAX_GROUP_LABEL_LEN);
|
|
38
|
+
// "host:/path/to/dir" -> basename
|
|
39
|
+
const hostCwd = raw.match(/^[^:]+:(.+)$/);
|
|
40
|
+
const label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || raw) : raw;
|
|
34
41
|
return label.slice(0, MAX_GROUP_LABEL_LEN);
|
|
35
42
|
}
|
|
36
43
|
|
|
44
|
+
// --isolate sessions (`rech --isolate ...` -> `-s=iso-<rand>`) are throwaway, single-flow
|
|
45
|
+
// buckets. We reap them on an idle TTL so an OAuth/login drive can't leak an orphaned browser
|
|
46
|
+
// context. A TTL (not close-on-exit-per-command) is required because the flows are multi-step
|
|
47
|
+
// (open -> click -> consent): closing after each command would break them. The reaper runs the
|
|
48
|
+
// CLI's `close` for the specific iso session only — it never touches the user's other sessions
|
|
49
|
+
// or quits Chrome.
|
|
50
|
+
const ISO_SESSION_TTL_MS = Number(process.env.RECH_ISOLATE_TTL_MS) || 15 * 60_000;
|
|
51
|
+
const ISO_REAP_INTERVAL_MS = 60_000;
|
|
52
|
+
const isoLastUsed = new Map<string, number>();
|
|
53
|
+
|
|
54
|
+
export function isIsoSession(namespacedSession: string): boolean {
|
|
55
|
+
return /(?:^|-)iso-[0-9a-f]+$/.test(namespacedSession);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function tmpSocketRoot(): string {
|
|
59
|
+
return `${(process.env.TMPDIR || "/tmp").replace(/\/$/, "")}/playwright-cli`;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// On startup, adopt any iso-* sessions a previous daemon left behind so they still get reaped
|
|
63
|
+
// (in-memory tracking alone would miss pre-restart orphans). Best-effort: a mis-derived session
|
|
64
|
+
// just yields a harmless no-op `close`. Socket files are named with the session as their prefix.
|
|
65
|
+
function adoptOrphanedIsoSessions(): void {
|
|
66
|
+
try {
|
|
67
|
+
const root = tmpSocketRoot();
|
|
68
|
+
for (const sub of readdirSync(root)) {
|
|
69
|
+
let entries: string[];
|
|
70
|
+
try { entries = readdirSync(`${root}/${sub}`); } catch { continue; }
|
|
71
|
+
for (const f of entries) {
|
|
72
|
+
const m = f.match(/^([0-9a-f]+-iso-[0-9a-f]+)/) || f.match(/^(iso-[0-9a-f]+)/);
|
|
73
|
+
if (m && !isoLastUsed.has(m[1])) {
|
|
74
|
+
isoLastUsed.set(m[1], Date.now());
|
|
75
|
+
log(`adopted orphaned isolated session for reaping: ${m[1]}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch {
|
|
80
|
+
// socket dir may not exist yet — nothing to adopt
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function reapIdleIsoSessions(bin: string, binArgs: string[], workDir: string): void {
|
|
85
|
+
const now = Date.now();
|
|
86
|
+
for (const [sess, last] of isoLastUsed) {
|
|
87
|
+
if (now - last < ISO_SESSION_TTL_MS) continue;
|
|
88
|
+
isoLastUsed.delete(sess);
|
|
89
|
+
try {
|
|
90
|
+
Bun.spawn([bin, ...binArgs, "close", `-s=${sess}`], {
|
|
91
|
+
cwd: workDir,
|
|
92
|
+
stdin: "ignore",
|
|
93
|
+
stdout: "ignore",
|
|
94
|
+
stderr: "ignore",
|
|
95
|
+
env: { PATH: process.env.PATH, HOME: HOME, USERPROFILE: process.env.USERPROFILE },
|
|
96
|
+
});
|
|
97
|
+
log(`reaped idle isolated session (idle ${Math.round((now - last) / 1000)}s): ${sess}`);
|
|
98
|
+
} catch (e) {
|
|
99
|
+
log(`reap failed for ${sess}: ${e}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
37
104
|
async function renewCertIfNeeded(certPath: string, keyPath: string): Promise<boolean> {
|
|
38
105
|
const certContent = await file(certPath).text().catch(() => null);
|
|
39
106
|
if (!certContent) return false;
|
|
@@ -141,6 +208,13 @@ export async function serve() {
|
|
|
141
208
|
const workDir = join(RECH_DIR, "output");
|
|
142
209
|
mkdirSync(workDir, { recursive: true });
|
|
143
210
|
|
|
211
|
+
// Reap idle --isolate sessions so single-shot OAuth/login drives don't leak browser contexts.
|
|
212
|
+
adoptOrphanedIsoSessions();
|
|
213
|
+
setInterval(() => {
|
|
214
|
+
const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
|
|
215
|
+
reapIdleIsoSessions(bin, binArgs, workDir);
|
|
216
|
+
}, ISO_REAP_INTERVAL_MS);
|
|
217
|
+
|
|
144
218
|
const listenHost = process.env.RECH_HOST || "127.0.0.1";
|
|
145
219
|
const canRead = (p?: string) => { try { accessSync(p!, fsConstants.R_OK); return true; } catch { return false; } };
|
|
146
220
|
const certPath = canRead(process.env.RECH_TLS_CERT) ? process.env.RECH_TLS_CERT : undefined;
|
|
@@ -200,14 +274,19 @@ export async function serve() {
|
|
|
200
274
|
} else {
|
|
201
275
|
args = body.args;
|
|
202
276
|
const id = body.identity as
|
|
203
|
-
| { gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
|
|
277
|
+
| { key?: string; label?: string; gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
|
|
204
278
|
| undefined;
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
279
|
+
// New clients send {key,label} (key = worktree-root-based, decoupled from the pretty
|
|
280
|
+
// label). Fall back to the legacy {gitUrl|hostname:cwd} shape for older clients.
|
|
281
|
+
const legacy = id?.gitUrl || (id?.hostname && id?.cwd ? `${id.hostname}:${id.cwd}` : null);
|
|
282
|
+
const keyBase = id?.key || legacy;
|
|
283
|
+
const labelBase = id?.label || legacy || keyBase;
|
|
284
|
+
if (keyBase) {
|
|
285
|
+
// Hash the key (+ profile via a NUL separator that never appears in a label).
|
|
286
|
+
const hashInput = id?.profile ? `${keyBase}\u0000${id.profile}` : keyBase;
|
|
287
|
+
sessionId = createHash("sha256").update(hashInput).digest("hex").slice(0, 8);
|
|
288
|
+
clientName = labelBase || keyBase;
|
|
289
|
+
log(`session from identity: ${clientName}${id?.profile ? ` profile:${id.profile}` : ""} [${keyBase}] -> ${sessionId}`);
|
|
211
290
|
} else {
|
|
212
291
|
const clientAddr = `${req.headers.get("x-forwarded-for") || server.requestIP(req)?.address || "unknown"}`;
|
|
213
292
|
sessionId = createHash("sha256").update(clientAddr).digest("hex").slice(0, 8);
|
|
@@ -232,8 +311,12 @@ export async function serve() {
|
|
|
232
311
|
return true;
|
|
233
312
|
});
|
|
234
313
|
const namespacedSession = clientSession ? `${sessionId}-${clientSession}` : sessionId;
|
|
314
|
+
// Track --isolate sessions so the idle-TTL reaper can close them later.
|
|
315
|
+
if (isIsoSession(namespacedSession)) isoLastUsed.set(namespacedSession, Date.now());
|
|
235
316
|
|
|
236
|
-
|
|
317
|
+
// daemonInstall bakes PLAYWRIGHT_CLI into the daemon env; resolvePlaywrightCli() is the
|
|
318
|
+
// fallback for a standalone `serve` (it re-runs the same env > fork > @playwright/cli > legacy chain).
|
|
319
|
+
const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
|
|
237
320
|
|
|
238
321
|
if (filteredArgs.length === 0) {
|
|
239
322
|
filteredArgs.push("--help");
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
microsoft/playwright-core
|
|
2
|
+
|
|
3
|
+
THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
|
|
4
|
+
|
|
5
|
+
This package bundles third-party software inside individual files under
|
|
6
|
+
`lib/`. Each bundled output has a sidecar `<bundle>.js.LICENSE` file next
|
|
7
|
+
to it listing every npm package whose source was inlined into that
|
|
8
|
+
bundle, together with the full license text for each.
|
|
9
|
+
|
|
10
|
+
For example:
|
|
11
|
+
- lib/utilsBundle.js.LICENSE
|
|
12
|
+
|
|
13
|
+
This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
$ErrorActionPreference = 'Stop'
|
|
2
|
+
|
|
3
|
+
# This script sets up a WSL distribution that will be used to run WebKit.
|
|
4
|
+
|
|
5
|
+
$Distribution = "playwright"
|
|
6
|
+
$Username = "pwuser"
|
|
7
|
+
|
|
8
|
+
$distributions = (wsl --list --quiet) -split "\r?\n"
|
|
9
|
+
if ($distributions -contains $Distribution) {
|
|
10
|
+
Write-Host "WSL distribution '$Distribution' already exists. Skipping installation."
|
|
11
|
+
} else {
|
|
12
|
+
Write-Host "Installing new WSL distribution '$Distribution'..."
|
|
13
|
+
$VhdSize = "10GB"
|
|
14
|
+
wsl --install -d Ubuntu-24.04 --name $Distribution --no-launch --vhd-size $VhdSize
|
|
15
|
+
wsl -d $Distribution -u root adduser --gecos GECOS --disabled-password $Username
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$pwshDirname = (Resolve-Path -Path $PSScriptRoot).Path;
|
|
19
|
+
$playwrightCoreRoot = Resolve-Path (Join-Path $pwshDirname "..")
|
|
20
|
+
|
|
21
|
+
$initScript = @"
|
|
22
|
+
if [ ! -f "/home/$Username/node/bin/node" ]; then
|
|
23
|
+
mkdir -p /home/$Username/node
|
|
24
|
+
curl -fsSL https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-x64.tar.xz -o /home/$Username/node/node-v22.17.0-linux-x64.tar.xz
|
|
25
|
+
tar -xJf /home/$Username/node/node-v22.17.0-linux-x64.tar.xz -C /home/$Username/node --strip-components=1
|
|
26
|
+
sudo -u $Username echo 'export PATH=/home/$Username/node/bin:\`$PATH' >> /home/$Username/.profile
|
|
27
|
+
fi
|
|
28
|
+
/home/$Username/node/bin/node cli.js install-deps webkit
|
|
29
|
+
sudo -u $Username PLAYWRIGHT_SKIP_BROWSER_GC=1 /home/$Username/node/bin/node cli.js install webkit
|
|
30
|
+
"@ -replace "\r\n", "`n"
|
|
31
|
+
|
|
32
|
+
wsl -d $Distribution --cd $playwrightCoreRoot -u root -- bash -c "$initScript"
|
|
33
|
+
Write-Host "Done!"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
set -x
|
|
4
|
+
|
|
5
|
+
if [[ $(arch) == "aarch64" ]]; then
|
|
6
|
+
echo "ERROR: not supported on Linux Arm64"
|
|
7
|
+
exit 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
|
11
|
+
if [[ ! -f "/etc/os-release" ]]; then
|
|
12
|
+
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
|
17
|
+
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
|
18
|
+
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# 1. make sure to remove old beta if any.
|
|
24
|
+
if dpkg --get-selections | grep -q "^google-chrome-beta[[:space:]]*install$" >/dev/null; then
|
|
25
|
+
apt-get remove -y google-chrome-beta
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# 2. Update apt lists (needed to install curl and chrome dependencies)
|
|
29
|
+
apt-get update
|
|
30
|
+
|
|
31
|
+
# 3. Install curl to download chrome
|
|
32
|
+
if ! command -v curl >/dev/null; then
|
|
33
|
+
apt-get install -y curl
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# 4. download chrome beta from dl.google.com and install it.
|
|
37
|
+
cd /tmp
|
|
38
|
+
curl -O https://dl.google.com/linux/direct/google-chrome-beta_current_amd64.deb
|
|
39
|
+
apt-get install -y ./google-chrome-beta_current_amd64.deb
|
|
40
|
+
rm -rf ./google-chrome-beta_current_amd64.deb
|
|
41
|
+
cd -
|
|
42
|
+
google-chrome-beta --version
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
set -x
|
|
4
|
+
|
|
5
|
+
rm -rf "/Applications/Google Chrome Beta.app"
|
|
6
|
+
cd /tmp
|
|
7
|
+
curl --retry 3 -o ./googlechromebeta.dmg https://dl.google.com/chrome/mac/universal/beta/googlechromebeta.dmg
|
|
8
|
+
hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechromebeta.dmg ./googlechromebeta.dmg
|
|
9
|
+
cp -pR "/Volumes/googlechromebeta.dmg/Google Chrome Beta.app" /Applications
|
|
10
|
+
hdiutil detach /Volumes/googlechromebeta.dmg
|
|
11
|
+
rm -rf /tmp/googlechromebeta.dmg
|
|
12
|
+
|
|
13
|
+
/Applications/Google\ Chrome\ Beta.app/Contents/MacOS/Google\ Chrome\ Beta --version
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
$ErrorActionPreference = 'Stop'
|
|
2
|
+
|
|
3
|
+
$url = 'https://dl.google.com/tag/s/dl/chrome/install/beta/googlechromebetastandaloneenterprise64.msi'
|
|
4
|
+
|
|
5
|
+
Write-Host "Downloading Google Chrome Beta"
|
|
6
|
+
$wc = New-Object net.webclient
|
|
7
|
+
$msiInstaller = "$env:temp\google-chrome-beta.msi"
|
|
8
|
+
$wc.Downloadfile($url, $msiInstaller)
|
|
9
|
+
|
|
10
|
+
Write-Host "Installing Google Chrome Beta"
|
|
11
|
+
$arguments = "/i `"$msiInstaller`" /quiet"
|
|
12
|
+
Start-Process msiexec.exe -ArgumentList $arguments -Wait
|
|
13
|
+
Remove-Item $msiInstaller
|
|
14
|
+
|
|
15
|
+
$suffix = "\\Google\\Chrome Beta\\Application\\chrome.exe"
|
|
16
|
+
if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
|
|
17
|
+
(Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
|
|
18
|
+
} elseif (Test-Path "${env:ProgramFiles}$suffix") {
|
|
19
|
+
(Get-Item "${env:ProgramFiles}$suffix").VersionInfo
|
|
20
|
+
} else {
|
|
21
|
+
Write-Host "ERROR: Failed to install Google Chrome Beta."
|
|
22
|
+
Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
|
|
23
|
+
exit 1
|
|
24
|
+
}
|
package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
set -x
|
|
4
|
+
|
|
5
|
+
if [[ $(arch) == "aarch64" ]]; then
|
|
6
|
+
echo "ERROR: not supported on Linux Arm64"
|
|
7
|
+
exit 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
|
11
|
+
if [[ ! -f "/etc/os-release" ]]; then
|
|
12
|
+
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
|
17
|
+
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
|
18
|
+
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# 1. make sure to remove old stable if any.
|
|
24
|
+
if dpkg --get-selections | grep -q "^google-chrome[[:space:]]*install$" >/dev/null; then
|
|
25
|
+
apt-get remove -y google-chrome
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# 2. Update apt lists (needed to install curl and chrome dependencies)
|
|
29
|
+
apt-get update
|
|
30
|
+
|
|
31
|
+
# 3. Install curl to download chrome
|
|
32
|
+
if ! command -v curl >/dev/null; then
|
|
33
|
+
apt-get install -y curl
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# 4. download chrome stable from dl.google.com and install it.
|
|
37
|
+
cd /tmp
|
|
38
|
+
curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
|
39
|
+
apt-get install -y ./google-chrome-stable_current_amd64.deb
|
|
40
|
+
rm -rf ./google-chrome-stable_current_amd64.deb
|
|
41
|
+
cd -
|
|
42
|
+
google-chrome --version
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
set -x
|
|
4
|
+
|
|
5
|
+
rm -rf "/Applications/Google Chrome.app"
|
|
6
|
+
cd /tmp
|
|
7
|
+
curl --retry 3 -o ./googlechrome.dmg https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg
|
|
8
|
+
hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechrome.dmg ./googlechrome.dmg
|
|
9
|
+
cp -pR "/Volumes/googlechrome.dmg/Google Chrome.app" /Applications
|
|
10
|
+
hdiutil detach /Volumes/googlechrome.dmg
|
|
11
|
+
rm -rf /tmp/googlechrome.dmg
|
|
12
|
+
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
|
package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
$ErrorActionPreference = 'Stop'
|
|
2
|
+
$url = 'https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi'
|
|
3
|
+
|
|
4
|
+
$wc = New-Object net.webclient
|
|
5
|
+
$msiInstaller = "$env:temp\google-chrome.msi"
|
|
6
|
+
Write-Host "Downloading Google Chrome"
|
|
7
|
+
$wc.Downloadfile($url, $msiInstaller)
|
|
8
|
+
|
|
9
|
+
Write-Host "Installing Google Chrome"
|
|
10
|
+
$arguments = "/i `"$msiInstaller`" /quiet"
|
|
11
|
+
Start-Process msiexec.exe -ArgumentList $arguments -Wait
|
|
12
|
+
Remove-Item $msiInstaller
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
$suffix = "\\Google\\Chrome\\Application\\chrome.exe"
|
|
16
|
+
if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
|
|
17
|
+
(Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
|
|
18
|
+
} elseif (Test-Path "${env:ProgramFiles}$suffix") {
|
|
19
|
+
(Get-Item "${env:ProgramFiles}$suffix").VersionInfo
|
|
20
|
+
} else {
|
|
21
|
+
Write-Host "ERROR: Failed to install Google Chrome."
|
|
22
|
+
Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
|
|
23
|
+
exit 1
|
|
24
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
set -x
|
|
5
|
+
|
|
6
|
+
if [[ $(arch) == "aarch64" ]]; then
|
|
7
|
+
echo "ERROR: not supported on Linux Arm64"
|
|
8
|
+
exit 1
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
|
12
|
+
if [[ ! -f "/etc/os-release" ]]; then
|
|
13
|
+
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
|
18
|
+
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
|
19
|
+
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# 1. make sure to remove old beta if any.
|
|
25
|
+
if dpkg --get-selections | grep -q "^microsoft-edge-beta[[:space:]]*install$" >/dev/null; then
|
|
26
|
+
apt-get remove -y microsoft-edge-beta
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# 2. Install curl to download Microsoft gpg key
|
|
30
|
+
if ! command -v curl >/dev/null; then
|
|
31
|
+
apt-get update
|
|
32
|
+
apt-get install -y curl
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# GnuPG is not preinstalled in slim images
|
|
36
|
+
if ! command -v gpg >/dev/null; then
|
|
37
|
+
apt-get update
|
|
38
|
+
apt-get install -y gpg
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# 3. Add the GPG key, the apt repo, update the apt cache, and install the package
|
|
42
|
+
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg
|
|
43
|
+
install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/
|
|
44
|
+
sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
|
|
45
|
+
rm /tmp/microsoft.gpg
|
|
46
|
+
apt-get update && apt-get install -y microsoft-edge-beta
|
|
47
|
+
|
|
48
|
+
microsoft-edge-beta --version
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
set -x
|
|
4
|
+
|
|
5
|
+
cd /tmp
|
|
6
|
+
curl --retry 3 -o ./msedge_beta.pkg "$1"
|
|
7
|
+
# Note: there's no way to uninstall previously installed MSEdge.
|
|
8
|
+
# However, running PKG again seems to update installation.
|
|
9
|
+
sudo installer -pkg /tmp/msedge_beta.pkg -target /
|
|
10
|
+
rm -rf /tmp/msedge_beta.pkg
|
|
11
|
+
/Applications/Microsoft\ Edge\ Beta.app/Contents/MacOS/Microsoft\ Edge\ Beta --version
|