rebrowser-playwright-core 1.49.0 → 1.52.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/ThirdPartyNotices.txt +381 -55
- package/bin/reinstall_msedge_beta_linux.sh +6 -0
- package/bin/reinstall_msedge_dev_linux.sh +6 -0
- package/bin/reinstall_msedge_stable_linux.sh +6 -0
- package/browsers.json +28 -13
- package/index.js +0 -1
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +60 -64
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +314 -354
- package/lib/cli/programWithTestStub.js +51 -44
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +146 -254
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -39
- package/lib/client/browser.js +59 -68
- package/lib/client/browserContext.js +302 -322
- package/lib/client/browserType.js +95 -143
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +109 -139
- package/lib/client/clientHelper.js +49 -42
- package/lib/client/clientInstrumentation.js +40 -35
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +203 -218
- package/lib/client/consoleMessage.js +33 -33
- package/lib/client/coverage.js +25 -22
- package/lib/client/dialog.js +30 -31
- package/lib/client/download.js +25 -25
- package/lib/client/electron.js +74 -76
- package/lib/client/elementHandle.js +126 -163
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +127 -127
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +154 -178
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +189 -307
- package/lib/client/harRouter.js +44 -56
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +55 -71
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +53 -28
- package/lib/client/locator.js +144 -230
- package/lib/client/network.js +285 -301
- package/lib/client/page.js +273 -312
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +62 -57
- package/lib/client/selectors.js +51 -43
- package/lib/client/stream.js +30 -45
- package/lib/client/timeoutSettings.js +75 -0
- package/lib/client/tracing.js +49 -82
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +71 -91
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +111 -0
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +28 -43
- package/lib/generated/clockSource.js +26 -5
- package/lib/generated/consoleApiSource.js +26 -5
- package/lib/generated/injectedScriptSource.js +26 -5
- package/lib/generated/pollingRecorderSource.js +26 -5
- package/lib/generated/utilityScriptSource.js +26 -5
- package/lib/generated/webSocketMockSource.js +375 -4
- package/lib/inProcessFactory.js +53 -48
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -42
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2712 -2667
- package/lib/protocol/validatorPrimitives.js +115 -75
- package/lib/remote/playwrightConnection.js +144 -152
- package/lib/remote/playwrightServer.js +106 -77
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -206
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +227 -158
- package/lib/server/bidi/bidiChromium.js +106 -78
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +161 -97
- package/lib/server/bidi/bidiFirefox.js +76 -68
- package/lib/server/bidi/bidiInput.js +90 -102
- package/lib/server/bidi/bidiNetworkManager.js +141 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +262 -261
- package/lib/server/bidi/bidiPdf.js +52 -86
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
- package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +343 -360
- package/lib/server/browserType.js +169 -181
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +99 -44
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +262 -280
- package/lib/server/chromium/crConnection.js +121 -178
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +64 -55
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +100 -91
- package/lib/server/chromium/crInput.js +101 -88
- package/lib/server/chromium/crNetworkManager.js +269 -370
- package/lib/server/chromium/crPage.js +509 -595
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +85 -69
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +65 -99
- package/lib/server/clock.js +58 -46
- package/lib/server/codegen/csharp.js +191 -156
- package/lib/server/codegen/java.js +163 -125
- package/lib/server/codegen/javascript.js +166 -143
- package/lib/server/codegen/jsonl.js +33 -29
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -125
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +105 -86
- package/lib/server/debugController.js +102 -154
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dialog.js +36 -35
- package/lib/server/dispatchers/androidDispatcher.js +196 -107
- package/lib/server/dispatchers/artifactDispatcher.js +62 -62
- package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
- package/lib/server/dispatchers/browserDispatcher.js +78 -97
- package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
- package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
- package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +180 -229
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
- package/lib/server/dispatchers/frameDispatcher.js +93 -162
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
- package/lib/server/dispatchers/networkDispatchers.js +92 -109
- package/lib/server/dispatchers/pageDispatcher.js +130 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -44
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
- package/lib/server/dom.js +424 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -175
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +302 -331
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -57
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +218 -274
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +103 -77
- package/lib/server/firefox/ffInput.js +72 -63
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +244 -302
- package/lib/server/firefox/firefox.js +76 -69
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +77 -111
- package/lib/server/frames.js +719 -855
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +288 -224
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -106
- package/lib/server/input.js +136 -166
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +157 -151
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +211 -0
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +263 -297
- package/lib/server/page.js +353 -432
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +60 -67
- package/lib/server/progress.js +56 -51
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/contextRecorder.js +135 -148
- package/lib/server/recorder/recorderApp.js +129 -132
- package/lib/server/recorder/recorderCollection.js +57 -57
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +80 -100
- package/lib/server/recorder/recorderUtils.js +59 -72
- package/lib/server/recorder/throttledFile.js +42 -31
- package/lib/server/recorder.js +186 -190
- package/lib/server/registry/browserFetcher.js +107 -100
- package/lib/server/registry/dependencies.js +247 -198
- package/lib/server/registry/index.js +928 -709
- package/lib/server/registry/nativeDeps.js +1073 -461
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +166 -182
- package/lib/server/selectors.js +85 -46
- package/lib/server/socksClientCertificatesInterceptor.js +166 -185
- package/lib/server/socksInterceptor.js +62 -67
- package/lib/server/storageScript.js +154 -0
- package/lib/server/timeoutSettings.js +89 -0
- package/lib/server/trace/recorder/snapshotter.js +70 -88
- package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
- package/lib/server/trace/recorder/tracing.js +324 -327
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +172 -137
- package/lib/server/transport.js +125 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +161 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +47 -0
- package/lib/server/utils/debugLogger.js +114 -0
- package/lib/server/utils/env.js +68 -0
- package/lib/server/utils/eventsHelper.js +39 -0
- package/lib/server/utils/expectUtils.js +38 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +109 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +217 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +238 -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 +132 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +163 -180
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +96 -73
- package/lib/server/webkit/wkInput.js +87 -75
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +536 -645
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +123 -127
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +344 -349
- package/lib/utils/isomorphic/locatorParser.js +103 -106
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +115 -0
- package/lib/utils/isomorphic/mimeType.js +453 -22
- package/lib/utils/isomorphic/multimap.js +81 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +44 -0
- package/lib/utils/isomorphic/timeoutRunner.js +67 -0
- package/lib/utils/isomorphic/traceUtils.js +52 -32
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +114 -71
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +101 -0
- package/lib/utilsBundle.js +101 -76
- package/lib/utilsBundleImpl/index.js +114 -116
- package/lib/vite/htmlReport/index.html +26 -20
- package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
- package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -7
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -7
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +819 -127
- package/types/types.d.ts +196 -75
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- package/lib/common/socksProxy.js +0 -569
- package/lib/common/timeoutSettings.js +0 -73
- package/lib/common/types.js +0 -5
- package/lib/image_tools/colorUtils.js +0 -98
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/protocol/transport.js +0 -82
- package/lib/server/ariaSnapshot.js +0 -33
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
- package/lib/server/recorder/recorderInTraceViewer.js +0 -144
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -153
- package/lib/utils/crypto.js +0 -171
- package/lib/utils/debug.js +0 -46
- package/lib/utils/debugLogger.js +0 -91
- package/lib/utils/env.js +0 -49
- package/lib/utils/eventsHelper.js +0 -38
- package/lib/utils/expectUtils.js +0 -33
- package/lib/utils/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -194
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -139
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- package/lib/utils/isomorphic/recorderUtils.js +0 -227
- package/lib/utils/linuxUtils.js +0 -78
- package/lib/utils/manualPromise.js +0 -109
- package/lib/utils/multimap.js +0 -75
- package/lib/utils/network.js +0 -160
- package/lib/utils/processLauncher.js +0 -248
- package/lib/utils/profiler.js +0 -53
- package/lib/utils/rtti.js +0 -44
- package/lib/utils/semaphore.js +0 -51
- package/lib/utils/sequence.js +0 -64
- package/lib/utils/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -134
- package/lib/utils/task.js +0 -58
- package/lib/utils/time.js +0 -37
- package/lib/utils/timeoutRunner.js +0 -66
- package/lib/utils/traceUtils.js +0 -44
- package/lib/utils/userAgent.js +0 -105
- package/lib/utils/wsServer.js +0 -127
- package/lib/utils/zipFile.js +0 -75
- package/lib/utils/zones.js +0 -71
- package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
- package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
- package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
- package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
- package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
- package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -1,201 +1,98 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty
|
|
4
|
-
|
|
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 localUtilsDispatcher_exports = {};
|
|
30
|
+
__export(localUtilsDispatcher_exports, {
|
|
31
|
+
LocalUtilsDispatcher: () => LocalUtilsDispatcher
|
|
5
32
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
var _userAgent = require("../../utils/userAgent");
|
|
20
|
-
var _progress = require("../progress");
|
|
21
|
-
var _network = require("../../utils/network");
|
|
22
|
-
var _instrumentation = require("../../server/instrumentation");
|
|
23
|
-
var _deviceDescriptors = require("../deviceDescriptors");
|
|
24
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
/**
|
|
26
|
-
* Copyright (c) Microsoft Corporation.
|
|
27
|
-
*
|
|
28
|
-
* Licensed under the Apache License, Version 2.0 (the 'License");
|
|
29
|
-
* you may not use this file except in compliance with the License.
|
|
30
|
-
* You may obtain a copy of the License at
|
|
31
|
-
*
|
|
32
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
33
|
-
*
|
|
34
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
35
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
36
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
37
|
-
* See the License for the specific language governing permissions and
|
|
38
|
-
* limitations under the License.
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
class LocalUtilsDispatcher extends _dispatcher.Dispatcher {
|
|
33
|
+
module.exports = __toCommonJS(localUtilsDispatcher_exports);
|
|
34
|
+
var import_dispatcher = require("./dispatcher");
|
|
35
|
+
var import_instrumentation = require("../../server/instrumentation");
|
|
36
|
+
var localUtils = __toESM(require("../localUtils"));
|
|
37
|
+
var import_userAgent = require("../utils/userAgent");
|
|
38
|
+
var import_deviceDescriptors = require("../deviceDescriptors");
|
|
39
|
+
var import_jsonPipeDispatcher = require("../dispatchers/jsonPipeDispatcher");
|
|
40
|
+
var import_progress = require("../progress");
|
|
41
|
+
var import_socksInterceptor = require("../socksInterceptor");
|
|
42
|
+
var import_transport = require("../transport");
|
|
43
|
+
var import_network = require("../utils/network");
|
|
44
|
+
var import_urlMatch = require("../../utils/isomorphic/urlMatch");
|
|
45
|
+
class LocalUtilsDispatcher extends import_dispatcher.Dispatcher {
|
|
42
46
|
constructor(scope, playwright) {
|
|
43
|
-
const
|
|
44
|
-
const deviceDescriptors = Object.entries(
|
|
45
|
-
|
|
46
|
-
descriptor
|
|
47
|
-
}));
|
|
48
|
-
super(scope, localUtils, 'LocalUtils', {
|
|
47
|
+
const localUtils2 = new import_instrumentation.SdkObject(playwright, "localUtils", "localUtils");
|
|
48
|
+
const deviceDescriptors = Object.entries(import_deviceDescriptors.deviceDescriptors).map(([name, descriptor]) => ({ name, descriptor }));
|
|
49
|
+
super(scope, localUtils2, "LocalUtils", {
|
|
49
50
|
deviceDescriptors
|
|
50
51
|
});
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
this._stackSessions = new Map();
|
|
52
|
+
this._harBackends = /* @__PURE__ */ new Map();
|
|
53
|
+
this._stackSessions = /* @__PURE__ */ new Map();
|
|
54
54
|
this._type_LocalUtils = true;
|
|
55
55
|
}
|
|
56
56
|
async zip(params) {
|
|
57
|
-
|
|
58
|
-
const zipFile = new _zipBundle.yazl.ZipFile();
|
|
59
|
-
zipFile.on('error', error => promise.reject(error));
|
|
60
|
-
const addFile = (file, name) => {
|
|
61
|
-
try {
|
|
62
|
-
if (_fs.default.statSync(file).isFile()) zipFile.addFile(file, name);
|
|
63
|
-
} catch (e) {}
|
|
64
|
-
};
|
|
65
|
-
for (const entry of params.entries) addFile(entry.value, entry.name);
|
|
66
|
-
|
|
67
|
-
// Add stacks and the sources.
|
|
68
|
-
const stackSession = params.stacksId ? this._stackSessions.get(params.stacksId) : undefined;
|
|
69
|
-
if (stackSession !== null && stackSession !== void 0 && stackSession.callStacks.length) {
|
|
70
|
-
await stackSession.writer;
|
|
71
|
-
if (process.env.PW_LIVE_TRACE_STACKS) {
|
|
72
|
-
zipFile.addFile(stackSession.file, 'trace.stacks');
|
|
73
|
-
} else {
|
|
74
|
-
const buffer = Buffer.from(JSON.stringify((0, _utils.serializeClientSideCallMetadata)(stackSession.callStacks)));
|
|
75
|
-
zipFile.addBuffer(buffer, 'trace.stacks');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Collect sources from stacks.
|
|
80
|
-
if (params.includeSources) {
|
|
81
|
-
const sourceFiles = new Set();
|
|
82
|
-
for (const {
|
|
83
|
-
stack
|
|
84
|
-
} of (stackSession === null || stackSession === void 0 ? void 0 : stackSession.callStacks) || []) {
|
|
85
|
-
if (!stack) continue;
|
|
86
|
-
for (const {
|
|
87
|
-
file
|
|
88
|
-
} of stack) sourceFiles.add(file);
|
|
89
|
-
}
|
|
90
|
-
for (const sourceFile of sourceFiles) addFile(sourceFile, 'resources/src@' + (0, _utils.calculateSha1)(sourceFile) + '.txt');
|
|
91
|
-
}
|
|
92
|
-
if (params.mode === 'write') {
|
|
93
|
-
// New file, just compress the entries.
|
|
94
|
-
await _fs.default.promises.mkdir(_path.default.dirname(params.zipFile), {
|
|
95
|
-
recursive: true
|
|
96
|
-
});
|
|
97
|
-
zipFile.end(undefined, () => {
|
|
98
|
-
zipFile.outputStream.pipe(_fs.default.createWriteStream(params.zipFile)).on('close', () => promise.resolve()).on('error', error => promise.reject(error));
|
|
99
|
-
});
|
|
100
|
-
await promise;
|
|
101
|
-
await this._deleteStackSession(params.stacksId);
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// File already exists. Repack and add new entries.
|
|
106
|
-
const tempFile = params.zipFile + '.tmp';
|
|
107
|
-
await _fs.default.promises.rename(params.zipFile, tempFile);
|
|
108
|
-
_zipBundle.yauzl.open(tempFile, (err, inZipFile) => {
|
|
109
|
-
if (err) {
|
|
110
|
-
promise.reject(err);
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
(0, _utils.assert)(inZipFile);
|
|
114
|
-
let pendingEntries = inZipFile.entryCount;
|
|
115
|
-
inZipFile.on('entry', entry => {
|
|
116
|
-
inZipFile.openReadStream(entry, (err, readStream) => {
|
|
117
|
-
if (err) {
|
|
118
|
-
promise.reject(err);
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
zipFile.addReadStream(readStream, entry.fileName);
|
|
122
|
-
if (--pendingEntries === 0) {
|
|
123
|
-
zipFile.end(undefined, () => {
|
|
124
|
-
zipFile.outputStream.pipe(_fs.default.createWriteStream(params.zipFile)).on('close', () => {
|
|
125
|
-
_fs.default.promises.unlink(tempFile).then(() => {
|
|
126
|
-
promise.resolve();
|
|
127
|
-
}).catch(error => promise.reject(error));
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
await promise;
|
|
135
|
-
await this._deleteStackSession(params.stacksId);
|
|
57
|
+
return await localUtils.zip(this._stackSessions, params);
|
|
136
58
|
}
|
|
137
59
|
async harOpen(params, metadata) {
|
|
138
|
-
|
|
139
|
-
if (params.file.endsWith('.zip')) {
|
|
140
|
-
const zipFile = new _zipFile.ZipFile(params.file);
|
|
141
|
-
const entryNames = await zipFile.entries();
|
|
142
|
-
const harEntryName = entryNames.find(e => e.endsWith('.har'));
|
|
143
|
-
if (!harEntryName) return {
|
|
144
|
-
error: 'Specified archive does not have a .har file'
|
|
145
|
-
};
|
|
146
|
-
const har = await zipFile.read(harEntryName);
|
|
147
|
-
const harFile = JSON.parse(har.toString());
|
|
148
|
-
harBackend = new HarBackend(harFile, null, zipFile);
|
|
149
|
-
} else {
|
|
150
|
-
const harFile = JSON.parse(await _fs.default.promises.readFile(params.file, 'utf-8'));
|
|
151
|
-
harBackend = new HarBackend(harFile, _path.default.dirname(params.file), null);
|
|
152
|
-
}
|
|
153
|
-
this._harBackends.set(harBackend.id, harBackend);
|
|
154
|
-
return {
|
|
155
|
-
harId: harBackend.id
|
|
156
|
-
};
|
|
60
|
+
return await localUtils.harOpen(this._harBackends, params);
|
|
157
61
|
}
|
|
158
62
|
async harLookup(params, metadata) {
|
|
159
|
-
|
|
160
|
-
if (!harBackend) return {
|
|
161
|
-
action: 'error',
|
|
162
|
-
message: `Internal error: har was not opened`
|
|
163
|
-
};
|
|
164
|
-
return await harBackend.lookup(params.url, params.method, params.headers, params.postData, params.isNavigationRequest);
|
|
63
|
+
return await localUtils.harLookup(this._harBackends, params);
|
|
165
64
|
}
|
|
166
65
|
async harClose(params, metadata) {
|
|
167
|
-
|
|
168
|
-
if (harBackend) {
|
|
169
|
-
this._harBackends.delete(harBackend.id);
|
|
170
|
-
harBackend.dispose();
|
|
171
|
-
}
|
|
66
|
+
return await localUtils.harClose(this._harBackends, params);
|
|
172
67
|
}
|
|
173
68
|
async harUnzip(params, metadata) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
69
|
+
return await localUtils.harUnzip(params);
|
|
70
|
+
}
|
|
71
|
+
async tracingStarted(params, metadata) {
|
|
72
|
+
return await localUtils.tracingStarted(this._stackSessions, params);
|
|
73
|
+
}
|
|
74
|
+
async traceDiscarded(params, metadata) {
|
|
75
|
+
return await localUtils.traceDiscarded(this._stackSessions, params);
|
|
76
|
+
}
|
|
77
|
+
async addStackToTracingNoReply(params, metadata) {
|
|
78
|
+
return await localUtils.addStackToTracingNoReply(this._stackSessions, params);
|
|
182
79
|
}
|
|
183
80
|
async connect(params, metadata) {
|
|
184
|
-
const controller = new
|
|
185
|
-
controller.setLogName(
|
|
186
|
-
return await controller.run(async progress => {
|
|
187
|
-
var _params$exposeNetwork;
|
|
81
|
+
const controller = new import_progress.ProgressController(metadata, this._object);
|
|
82
|
+
controller.setLogName("browser");
|
|
83
|
+
return await controller.run(async (progress) => {
|
|
188
84
|
const wsHeaders = {
|
|
189
|
-
|
|
190
|
-
|
|
85
|
+
"User-Agent": (0, import_userAgent.getUserAgent)(),
|
|
86
|
+
"x-playwright-proxy": params.exposeNetwork ?? "",
|
|
191
87
|
...params.headers
|
|
192
88
|
};
|
|
193
89
|
const wsEndpoint = await urlToWSEndpoint(progress, params.wsEndpoint);
|
|
194
|
-
const transport = await
|
|
195
|
-
const socksInterceptor = new
|
|
196
|
-
const pipe = new
|
|
197
|
-
transport.onmessage = json => {
|
|
198
|
-
if (socksInterceptor.interceptMessage(json))
|
|
90
|
+
const transport = await import_transport.WebSocketTransport.connect(progress, wsEndpoint, { headers: wsHeaders, followRedirects: true, debugLogHeader: "x-playwright-debug-log" });
|
|
91
|
+
const socksInterceptor = new import_socksInterceptor.SocksInterceptor(transport, params.exposeNetwork, params.socksProxyRedirectPortForTest);
|
|
92
|
+
const pipe = new import_jsonPipeDispatcher.JsonPipeDispatcher(this);
|
|
93
|
+
transport.onmessage = (json) => {
|
|
94
|
+
if (socksInterceptor.interceptMessage(json))
|
|
95
|
+
return;
|
|
199
96
|
const cb = () => {
|
|
200
97
|
try {
|
|
201
98
|
pipe.dispatch(json);
|
|
@@ -203,211 +100,56 @@ class LocalUtilsDispatcher extends _dispatcher.Dispatcher {
|
|
|
203
100
|
transport.close();
|
|
204
101
|
}
|
|
205
102
|
};
|
|
206
|
-
if (params.slowMo)
|
|
103
|
+
if (params.slowMo)
|
|
104
|
+
setTimeout(cb, params.slowMo);
|
|
105
|
+
else
|
|
106
|
+
cb();
|
|
207
107
|
};
|
|
208
|
-
pipe.on(
|
|
108
|
+
pipe.on("message", (message) => {
|
|
209
109
|
transport.send(message);
|
|
210
110
|
});
|
|
211
|
-
transport.onclose = reason => {
|
|
212
|
-
socksInterceptor
|
|
111
|
+
transport.onclose = (reason) => {
|
|
112
|
+
socksInterceptor?.cleanup();
|
|
213
113
|
pipe.wasClosed(reason);
|
|
214
114
|
};
|
|
215
|
-
pipe.on(
|
|
216
|
-
return {
|
|
217
|
-
pipe,
|
|
218
|
-
headers: transport.headers
|
|
219
|
-
};
|
|
115
|
+
pipe.on("close", () => transport.close());
|
|
116
|
+
return { pipe, headers: transport.headers };
|
|
220
117
|
}, params.timeout || 0);
|
|
221
118
|
}
|
|
222
|
-
async
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
const traceStacksFile = _path.default.join(params.tracesDir || tmpDir, params.traceName + '.stacks');
|
|
226
|
-
this._stackSessions.set(traceStacksFile, {
|
|
227
|
-
callStacks: [],
|
|
228
|
-
file: traceStacksFile,
|
|
229
|
-
writer: Promise.resolve(),
|
|
230
|
-
tmpDir
|
|
231
|
-
});
|
|
232
|
-
return {
|
|
233
|
-
stacksId: traceStacksFile
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
async traceDiscarded(params, metadata) {
|
|
237
|
-
await this._deleteStackSession(params.stacksId);
|
|
238
|
-
}
|
|
239
|
-
async addStackToTracingNoReply(params, metadata) {
|
|
240
|
-
for (const session of this._stackSessions.values()) {
|
|
241
|
-
session.callStacks.push(params.callData);
|
|
242
|
-
if (process.env.PW_LIVE_TRACE_STACKS) {
|
|
243
|
-
session.writer = session.writer.then(() => {
|
|
244
|
-
const buffer = Buffer.from(JSON.stringify((0, _utils.serializeClientSideCallMetadata)(session.callStacks)));
|
|
245
|
-
return _fs.default.promises.writeFile(session.file, buffer);
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
async _deleteStackSession(stacksId) {
|
|
251
|
-
const session = stacksId ? this._stackSessions.get(stacksId) : undefined;
|
|
252
|
-
if (!session) return;
|
|
253
|
-
await session.writer;
|
|
254
|
-
if (session.tmpDir) await (0, _utils.removeFolders)([session.tmpDir]);
|
|
255
|
-
this._stackSessions.delete(stacksId);
|
|
119
|
+
async globToRegex(params, metadata) {
|
|
120
|
+
const regex = (0, import_urlMatch.resolveGlobToRegexPattern)(params.baseURL, params.glob, params.webSocketUrl);
|
|
121
|
+
return { regex };
|
|
256
122
|
}
|
|
257
123
|
}
|
|
258
|
-
exports.LocalUtilsDispatcher = LocalUtilsDispatcher;
|
|
259
|
-
const redirectStatus = [301, 302, 303, 307, 308];
|
|
260
|
-
class HarBackend {
|
|
261
|
-
constructor(harFile, baseDir, zipFile) {
|
|
262
|
-
this.id = (0, _utils.createGuid)();
|
|
263
|
-
this._harFile = void 0;
|
|
264
|
-
this._zipFile = void 0;
|
|
265
|
-
this._baseDir = void 0;
|
|
266
|
-
this._harFile = harFile;
|
|
267
|
-
this._baseDir = baseDir;
|
|
268
|
-
this._zipFile = zipFile;
|
|
269
|
-
}
|
|
270
|
-
async lookup(url, method, headers, postData, isNavigationRequest) {
|
|
271
|
-
let entry;
|
|
272
|
-
try {
|
|
273
|
-
entry = await this._harFindResponse(url, method, headers, postData);
|
|
274
|
-
} catch (e) {
|
|
275
|
-
return {
|
|
276
|
-
action: 'error',
|
|
277
|
-
message: 'HAR error: ' + e.message
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
if (!entry) return {
|
|
281
|
-
action: 'noentry'
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
// If navigation is being redirected, restart it with the final url to ensure the document's url changes.
|
|
285
|
-
if (entry.request.url !== url && isNavigationRequest) return {
|
|
286
|
-
action: 'redirect',
|
|
287
|
-
redirectURL: entry.request.url
|
|
288
|
-
};
|
|
289
|
-
const response = entry.response;
|
|
290
|
-
try {
|
|
291
|
-
const buffer = await this._loadContent(response.content);
|
|
292
|
-
return {
|
|
293
|
-
action: 'fulfill',
|
|
294
|
-
status: response.status,
|
|
295
|
-
headers: response.headers,
|
|
296
|
-
body: buffer
|
|
297
|
-
};
|
|
298
|
-
} catch (e) {
|
|
299
|
-
return {
|
|
300
|
-
action: 'error',
|
|
301
|
-
message: e.message
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
async _loadContent(content) {
|
|
306
|
-
const file = content._file;
|
|
307
|
-
let buffer;
|
|
308
|
-
if (file) {
|
|
309
|
-
if (this._zipFile) buffer = await this._zipFile.read(file);else buffer = await _fs.default.promises.readFile(_path.default.resolve(this._baseDir, file));
|
|
310
|
-
} else {
|
|
311
|
-
buffer = Buffer.from(content.text || '', content.encoding === 'base64' ? 'base64' : 'utf-8');
|
|
312
|
-
}
|
|
313
|
-
return buffer;
|
|
314
|
-
}
|
|
315
|
-
async _harFindResponse(url, method, headers, postData) {
|
|
316
|
-
const harLog = this._harFile.log;
|
|
317
|
-
const visited = new Set();
|
|
318
|
-
while (true) {
|
|
319
|
-
const entries = [];
|
|
320
|
-
for (const candidate of harLog.entries) {
|
|
321
|
-
if (candidate.request.url !== url || candidate.request.method !== method) continue;
|
|
322
|
-
if (method === 'POST' && postData && candidate.request.postData) {
|
|
323
|
-
const buffer = await this._loadContent(candidate.request.postData);
|
|
324
|
-
if (!buffer.equals(postData)) {
|
|
325
|
-
const boundary = multipartBoundary(headers);
|
|
326
|
-
if (!boundary) continue;
|
|
327
|
-
const candidataBoundary = multipartBoundary(candidate.request.headers);
|
|
328
|
-
if (!candidataBoundary) continue;
|
|
329
|
-
// Try to match multipart/form-data ignroing boundary as it changes between requests.
|
|
330
|
-
if (postData.toString().replaceAll(boundary, '') !== buffer.toString().replaceAll(candidataBoundary, '')) continue;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
entries.push(candidate);
|
|
334
|
-
}
|
|
335
|
-
if (!entries.length) return;
|
|
336
|
-
let entry = entries[0];
|
|
337
|
-
|
|
338
|
-
// Disambiguate using headers - then one with most matching headers wins.
|
|
339
|
-
if (entries.length > 1) {
|
|
340
|
-
const list = [];
|
|
341
|
-
for (const candidate of entries) {
|
|
342
|
-
const matchingHeaders = countMatchingHeaders(candidate.request.headers, headers);
|
|
343
|
-
list.push({
|
|
344
|
-
candidate,
|
|
345
|
-
matchingHeaders
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
list.sort((a, b) => b.matchingHeaders - a.matchingHeaders);
|
|
349
|
-
entry = list[0].candidate;
|
|
350
|
-
}
|
|
351
|
-
if (visited.has(entry)) throw new Error(`Found redirect cycle for ${url}`);
|
|
352
|
-
visited.add(entry);
|
|
353
|
-
|
|
354
|
-
// Follow redirects.
|
|
355
|
-
const locationHeader = entry.response.headers.find(h => h.name.toLowerCase() === 'location');
|
|
356
|
-
if (redirectStatus.includes(entry.response.status) && locationHeader) {
|
|
357
|
-
const locationURL = new URL(locationHeader.value, url);
|
|
358
|
-
url = locationURL.toString();
|
|
359
|
-
if ((entry.response.status === 301 || entry.response.status === 302) && method === 'POST' || entry.response.status === 303 && !['GET', 'HEAD'].includes(method)) {
|
|
360
|
-
// HTTP-redirect fetch step 13 (https://fetch.spec.whatwg.org/#http-redirect-fetch)
|
|
361
|
-
method = 'GET';
|
|
362
|
-
}
|
|
363
|
-
continue;
|
|
364
|
-
}
|
|
365
|
-
return entry;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
dispose() {
|
|
369
|
-
var _this$_zipFile;
|
|
370
|
-
(_this$_zipFile = this._zipFile) === null || _this$_zipFile === void 0 || _this$_zipFile.close();
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
function countMatchingHeaders(harHeaders, headers) {
|
|
374
|
-
const set = new Set(headers.map(h => h.name.toLowerCase() + ':' + h.value));
|
|
375
|
-
let matches = 0;
|
|
376
|
-
for (const h of harHeaders) {
|
|
377
|
-
if (set.has(h.name.toLowerCase() + ':' + h.value)) ++matches;
|
|
378
|
-
}
|
|
379
|
-
return matches;
|
|
380
|
-
}
|
|
381
124
|
async function urlToWSEndpoint(progress, endpointURL) {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
progress
|
|
125
|
+
if (endpointURL.startsWith("ws"))
|
|
126
|
+
return endpointURL;
|
|
127
|
+
progress?.log(`<ws preparing> retrieving websocket url from ${endpointURL}`);
|
|
385
128
|
const fetchUrl = new URL(endpointURL);
|
|
386
|
-
if (!fetchUrl.pathname.endsWith(
|
|
387
|
-
|
|
388
|
-
|
|
129
|
+
if (!fetchUrl.pathname.endsWith("/"))
|
|
130
|
+
fetchUrl.pathname += "/";
|
|
131
|
+
fetchUrl.pathname += "json";
|
|
132
|
+
const json = await (0, import_network.fetchData)({
|
|
389
133
|
url: fetchUrl.toString(),
|
|
390
|
-
method:
|
|
391
|
-
timeout:
|
|
392
|
-
headers: {
|
|
393
|
-
'User-Agent': (0, _userAgent.getUserAgent)()
|
|
394
|
-
}
|
|
134
|
+
method: "GET",
|
|
135
|
+
timeout: progress?.timeUntilDeadline() ?? 3e4,
|
|
136
|
+
headers: { "User-Agent": (0, import_userAgent.getUserAgent)() }
|
|
395
137
|
}, async (params, response) => {
|
|
396
|
-
return new Error(`Unexpected status ${response.statusCode} when connecting to ${fetchUrl.toString()}
|
|
138
|
+
return new Error(`Unexpected status ${response.statusCode} when connecting to ${fetchUrl.toString()}.
|
|
139
|
+
This does not look like a Playwright server, try connecting via ws://.`);
|
|
397
140
|
});
|
|
398
|
-
progress
|
|
141
|
+
progress?.throwIfAborted();
|
|
399
142
|
const wsUrl = new URL(endpointURL);
|
|
400
143
|
let wsEndpointPath = JSON.parse(json).wsEndpointPath;
|
|
401
|
-
if (wsEndpointPath.startsWith(
|
|
402
|
-
|
|
144
|
+
if (wsEndpointPath.startsWith("/"))
|
|
145
|
+
wsEndpointPath = wsEndpointPath.substring(1);
|
|
146
|
+
if (!wsUrl.pathname.endsWith("/"))
|
|
147
|
+
wsUrl.pathname += "/";
|
|
403
148
|
wsUrl.pathname += wsEndpointPath;
|
|
404
|
-
wsUrl.protocol = wsUrl.protocol ===
|
|
149
|
+
wsUrl.protocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
|
|
405
150
|
return wsUrl.toString();
|
|
406
151
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
if (boundary) return boundary[1];
|
|
412
|
-
return undefined;
|
|
413
|
-
}
|
|
152
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
153
|
+
0 && (module.exports = {
|
|
154
|
+
LocalUtilsDispatcher
|
|
155
|
+
});
|