rebrowser-playwright-core 1.49.1 → 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 -597
- 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 +351 -434
- 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 -647
- 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-C5j27SYZ.js → codeMirrorModule-DVQi6prl.js} +13 -13
- 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 +181 -69
- 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/index-m0XdVJHe.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-BBCX0spr.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-B4Iw34Ow.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-DFlGYqou.js +0 -9
- package/lib/vite/traceViewer/embedded.CmarehFk.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.FBucu_gE.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.CW_rzcEp.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.CDUVjusr.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
package/lib/client/network.js
CHANGED
|
@@ -1,57 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var network_exports = {};
|
|
20
|
+
__export(network_exports, {
|
|
21
|
+
RawHeaders: () => RawHeaders,
|
|
22
|
+
Request: () => Request,
|
|
23
|
+
Response: () => Response,
|
|
24
|
+
Route: () => Route,
|
|
25
|
+
RouteHandler: () => RouteHandler,
|
|
26
|
+
WebSocket: () => WebSocket,
|
|
27
|
+
WebSocketRoute: () => WebSocketRoute,
|
|
28
|
+
WebSocketRouteHandler: () => WebSocketRouteHandler,
|
|
29
|
+
validateHeaders: () => validateHeaders
|
|
5
30
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
25
|
-
* you may not use this file except in compliance with the License.
|
|
26
|
-
* You may obtain a copy of the License at
|
|
27
|
-
*
|
|
28
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
29
|
-
*
|
|
30
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
31
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
32
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
33
|
-
* See the License for the specific language governing permissions and
|
|
34
|
-
* limitations under the License.
|
|
35
|
-
*/
|
|
36
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
|
-
class Request extends _channelOwner.ChannelOwner {
|
|
38
|
-
static from(request) {
|
|
39
|
-
return request._object;
|
|
40
|
-
}
|
|
41
|
-
static fromNullable(request) {
|
|
42
|
-
return request ? Request.from(request) : null;
|
|
43
|
-
}
|
|
31
|
+
module.exports = __toCommonJS(network_exports);
|
|
32
|
+
var import_channelOwner = require("./channelOwner");
|
|
33
|
+
var import_errors = require("./errors");
|
|
34
|
+
var import_events = require("./events");
|
|
35
|
+
var import_fetch = require("./fetch");
|
|
36
|
+
var import_frame = require("./frame");
|
|
37
|
+
var import_waiter = require("./waiter");
|
|
38
|
+
var import_worker = require("./worker");
|
|
39
|
+
var import_assert = require("../utils/isomorphic/assert");
|
|
40
|
+
var import_headers = require("../utils/isomorphic/headers");
|
|
41
|
+
var import_urlMatch = require("../utils/isomorphic/urlMatch");
|
|
42
|
+
var import_manualPromise = require("../utils/isomorphic/manualPromise");
|
|
43
|
+
var import_multimap = require("../utils/isomorphic/multimap");
|
|
44
|
+
var import_rtti = require("../utils/isomorphic/rtti");
|
|
45
|
+
var import_stackTrace = require("../utils/isomorphic/stackTrace");
|
|
46
|
+
var import_mimeType = require("../utils/isomorphic/mimeType");
|
|
47
|
+
class Request extends import_channelOwner.ChannelOwner {
|
|
44
48
|
constructor(parent, type, guid, initializer) {
|
|
45
49
|
super(parent, type, guid, initializer);
|
|
46
50
|
this._redirectedFrom = null;
|
|
47
51
|
this._redirectedTo = null;
|
|
48
52
|
this._failureText = null;
|
|
49
|
-
this._provisionalHeaders = void 0;
|
|
50
|
-
this._actualHeadersPromise = void 0;
|
|
51
|
-
this._timing = void 0;
|
|
52
53
|
this._fallbackOverrides = {};
|
|
54
|
+
this.markAsInternalType();
|
|
53
55
|
this._redirectedFrom = Request.fromNullable(initializer.redirectedFrom);
|
|
54
|
-
if (this._redirectedFrom)
|
|
56
|
+
if (this._redirectedFrom)
|
|
57
|
+
this._redirectedFrom._redirectedTo = this;
|
|
55
58
|
this._provisionalHeaders = new RawHeaders(initializer.headers);
|
|
56
59
|
this._timing = {
|
|
57
60
|
startTime: 0,
|
|
@@ -65,6 +68,12 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
65
68
|
responseEnd: -1
|
|
66
69
|
};
|
|
67
70
|
}
|
|
71
|
+
static from(request) {
|
|
72
|
+
return request._object;
|
|
73
|
+
}
|
|
74
|
+
static fromNullable(request) {
|
|
75
|
+
return request ? Request.from(request) : null;
|
|
76
|
+
}
|
|
68
77
|
url() {
|
|
69
78
|
return this._fallbackOverrides.url || this._initializer.url;
|
|
70
79
|
}
|
|
@@ -75,38 +84,40 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
75
84
|
return this._fallbackOverrides.method || this._initializer.method;
|
|
76
85
|
}
|
|
77
86
|
postData() {
|
|
78
|
-
|
|
79
|
-
return ((_ref = this._fallbackOverrides.postDataBuffer || this._initializer.postData) === null || _ref === void 0 ? void 0 : _ref.toString('utf-8')) || null;
|
|
87
|
+
return (this._fallbackOverrides.postDataBuffer || this._initializer.postData)?.toString("utf-8") || null;
|
|
80
88
|
}
|
|
81
89
|
postDataBuffer() {
|
|
82
90
|
return this._fallbackOverrides.postDataBuffer || this._initializer.postData || null;
|
|
83
91
|
}
|
|
84
92
|
postDataJSON() {
|
|
85
93
|
const postData = this.postData();
|
|
86
|
-
if (!postData)
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
if (!postData)
|
|
95
|
+
return null;
|
|
96
|
+
const contentType = this.headers()["content-type"];
|
|
97
|
+
if (contentType?.includes("application/x-www-form-urlencoded")) {
|
|
89
98
|
const entries = {};
|
|
90
|
-
const parsed = new
|
|
91
|
-
for (const [k, v] of parsed.entries())
|
|
99
|
+
const parsed = new URLSearchParams(postData);
|
|
100
|
+
for (const [k, v] of parsed.entries())
|
|
101
|
+
entries[k] = v;
|
|
92
102
|
return entries;
|
|
93
103
|
}
|
|
94
104
|
try {
|
|
95
105
|
return JSON.parse(postData);
|
|
96
106
|
} catch (e) {
|
|
97
|
-
throw new Error(
|
|
107
|
+
throw new Error("POST data is not a valid JSON object: " + postData);
|
|
98
108
|
}
|
|
99
109
|
}
|
|
100
|
-
|
|
101
110
|
/**
|
|
102
111
|
* @deprecated
|
|
103
112
|
*/
|
|
104
113
|
headers() {
|
|
105
|
-
if (this._fallbackOverrides.headers)
|
|
114
|
+
if (this._fallbackOverrides.headers)
|
|
115
|
+
return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers).headers();
|
|
106
116
|
return this._provisionalHeaders.headers();
|
|
107
117
|
}
|
|
108
118
|
async _actualHeaders() {
|
|
109
|
-
if (this._fallbackOverrides.headers)
|
|
119
|
+
if (this._fallbackOverrides.headers)
|
|
120
|
+
return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers);
|
|
110
121
|
if (!this._actualHeadersPromise) {
|
|
111
122
|
this._actualHeadersPromise = this._wrapApiCall(async () => {
|
|
112
123
|
return new RawHeaders((await this._channel.rawRequestHeaders()).headers);
|
|
@@ -133,21 +144,24 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
133
144
|
}
|
|
134
145
|
frame() {
|
|
135
146
|
if (!this._initializer.frame) {
|
|
136
|
-
(0,
|
|
137
|
-
throw new Error(
|
|
147
|
+
(0, import_assert.assert)(this.serviceWorker());
|
|
148
|
+
throw new Error("Service Worker requests do not have an associated frame.");
|
|
138
149
|
}
|
|
139
|
-
const frame =
|
|
150
|
+
const frame = import_frame.Frame.from(this._initializer.frame);
|
|
140
151
|
if (!frame._page) {
|
|
141
|
-
throw new Error([
|
|
152
|
+
throw new Error([
|
|
153
|
+
"Frame for this navigation request is not available, because the request",
|
|
154
|
+
"was issued before the frame is created. You can check whether the request",
|
|
155
|
+
"is a navigation request by calling isNavigationRequest() method."
|
|
156
|
+
].join("\n"));
|
|
142
157
|
}
|
|
143
158
|
return frame;
|
|
144
159
|
}
|
|
145
160
|
_safePage() {
|
|
146
|
-
|
|
147
|
-
return ((_Frame$fromNullable = _frame.Frame.fromNullable(this._initializer.frame)) === null || _Frame$fromNullable === void 0 ? void 0 : _Frame$fromNullable._page) || null;
|
|
161
|
+
return import_frame.Frame.fromNullable(this._initializer.frame)?._page || null;
|
|
148
162
|
}
|
|
149
163
|
serviceWorker() {
|
|
150
|
-
return this._initializer.serviceWorker ?
|
|
164
|
+
return this._initializer.serviceWorker ? import_worker.Worker.from(this._initializer.serviceWorker) : null;
|
|
151
165
|
}
|
|
152
166
|
isNavigationRequest() {
|
|
153
167
|
return this._initializer.isNavigationRequest;
|
|
@@ -159,7 +173,8 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
159
173
|
return this._redirectedTo;
|
|
160
174
|
}
|
|
161
175
|
failure() {
|
|
162
|
-
if (this._failureText === null)
|
|
176
|
+
if (this._failureText === null)
|
|
177
|
+
return null;
|
|
163
178
|
return {
|
|
164
179
|
errorText: this._failureText
|
|
165
180
|
};
|
|
@@ -169,53 +184,57 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
169
184
|
}
|
|
170
185
|
async sizes() {
|
|
171
186
|
const response = await this.response();
|
|
172
|
-
if (!response)
|
|
187
|
+
if (!response)
|
|
188
|
+
throw new Error("Unable to fetch sizes for failed request");
|
|
173
189
|
return (await response._channel.sizes()).sizes;
|
|
174
190
|
}
|
|
175
191
|
_setResponseEndTiming(responseEndTiming) {
|
|
176
192
|
this._timing.responseEnd = responseEndTiming;
|
|
177
|
-
if (this._timing.responseStart === -1)
|
|
193
|
+
if (this._timing.responseStart === -1)
|
|
194
|
+
this._timing.responseStart = responseEndTiming;
|
|
178
195
|
}
|
|
179
196
|
_finalRequest() {
|
|
180
197
|
return this._redirectedTo ? this._redirectedTo._finalRequest() : this;
|
|
181
198
|
}
|
|
182
199
|
_applyFallbackOverrides(overrides) {
|
|
183
|
-
if (overrides.url)
|
|
184
|
-
|
|
185
|
-
if (overrides.
|
|
186
|
-
|
|
200
|
+
if (overrides.url)
|
|
201
|
+
this._fallbackOverrides.url = overrides.url;
|
|
202
|
+
if (overrides.method)
|
|
203
|
+
this._fallbackOverrides.method = overrides.method;
|
|
204
|
+
if (overrides.headers)
|
|
205
|
+
this._fallbackOverrides.headers = overrides.headers;
|
|
206
|
+
if ((0, import_rtti.isString)(overrides.postData))
|
|
207
|
+
this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, "utf-8");
|
|
208
|
+
else if (overrides.postData instanceof Buffer)
|
|
209
|
+
this._fallbackOverrides.postDataBuffer = overrides.postData;
|
|
210
|
+
else if (overrides.postData)
|
|
211
|
+
this._fallbackOverrides.postDataBuffer = Buffer.from(JSON.stringify(overrides.postData), "utf-8");
|
|
187
212
|
}
|
|
188
213
|
_fallbackOverridesForContinue() {
|
|
189
214
|
return this._fallbackOverrides;
|
|
190
215
|
}
|
|
191
216
|
_targetClosedScope() {
|
|
192
|
-
|
|
193
|
-
return ((_this$serviceWorker = this.serviceWorker()) === null || _this$serviceWorker === void 0 ? void 0 : _this$serviceWorker._closedScope) || ((_this$_safePage = this._safePage()) === null || _this$_safePage === void 0 ? void 0 : _this$_safePage._closedOrCrashedScope) || new _manualPromise.LongStandingScope();
|
|
217
|
+
return this.serviceWorker()?._closedScope || this._safePage()?._closedOrCrashedScope || new import_manualPromise.LongStandingScope();
|
|
194
218
|
}
|
|
195
219
|
}
|
|
196
|
-
|
|
197
|
-
class Route extends _channelOwner.ChannelOwner {
|
|
198
|
-
static from(route) {
|
|
199
|
-
return route._object;
|
|
200
|
-
}
|
|
220
|
+
class Route extends import_channelOwner.ChannelOwner {
|
|
201
221
|
constructor(parent, type, guid, initializer) {
|
|
202
222
|
super(parent, type, guid, initializer);
|
|
203
223
|
this._handlingPromise = null;
|
|
204
|
-
this._context = void 0;
|
|
205
224
|
this._didThrow = false;
|
|
206
225
|
this.markAsInternalType();
|
|
207
226
|
}
|
|
227
|
+
static from(route) {
|
|
228
|
+
return route._object;
|
|
229
|
+
}
|
|
208
230
|
request() {
|
|
209
231
|
return Request.from(this._initializer.request);
|
|
210
232
|
}
|
|
211
233
|
async _raceWithTargetClose(promise) {
|
|
212
|
-
// When page closes or crashes, we catch any potential rejects from this Route.
|
|
213
|
-
// Note that page could be missing when routing popup's initial request that
|
|
214
|
-
// does not have a Page initialized just yet.
|
|
215
234
|
return await this.request()._targetClosedScope().safeRace(promise);
|
|
216
235
|
}
|
|
217
236
|
async _startHandling() {
|
|
218
|
-
this._handlingPromise = new
|
|
237
|
+
this._handlingPromise = new import_manualPromise.ManualPromise();
|
|
219
238
|
return await this._handlingPromise;
|
|
220
239
|
}
|
|
221
240
|
async fallback(options = {}) {
|
|
@@ -225,25 +244,17 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
225
244
|
}
|
|
226
245
|
async abort(errorCode) {
|
|
227
246
|
await this._handleRoute(async () => {
|
|
228
|
-
await this._raceWithTargetClose(this._channel.abort({
|
|
229
|
-
errorCode
|
|
230
|
-
}));
|
|
247
|
+
await this._raceWithTargetClose(this._channel.abort({ errorCode }));
|
|
231
248
|
});
|
|
232
249
|
}
|
|
233
250
|
async _redirectNavigationRequest(url) {
|
|
234
251
|
await this._handleRoute(async () => {
|
|
235
|
-
await this._raceWithTargetClose(this._channel.redirectNavigationRequest({
|
|
236
|
-
url
|
|
237
|
-
}));
|
|
252
|
+
await this._raceWithTargetClose(this._channel.redirectNavigationRequest({ url }));
|
|
238
253
|
});
|
|
239
254
|
}
|
|
240
255
|
async fetch(options = {}) {
|
|
241
256
|
return await this._wrapApiCall(async () => {
|
|
242
|
-
return await this._context.request._innerFetch({
|
|
243
|
-
request: this.request(),
|
|
244
|
-
data: options.postData,
|
|
245
|
-
...options
|
|
246
|
-
});
|
|
257
|
+
return await this._context.request._innerFetch({ request: this.request(), data: options.postData, ...options });
|
|
247
258
|
});
|
|
248
259
|
}
|
|
249
260
|
async fulfill(options = {}) {
|
|
@@ -265,45 +276,50 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
265
276
|
}
|
|
266
277
|
async _innerFulfill(options = {}) {
|
|
267
278
|
let fetchResponseUid;
|
|
268
|
-
let {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
body
|
|
272
|
-
} = options;
|
|
273
|
-
if (options.json !== undefined) {
|
|
274
|
-
(0, _utils.assert)(options.body === undefined, 'Can specify either body or json parameters');
|
|
279
|
+
let { status: statusOption, headers: headersOption, body } = options;
|
|
280
|
+
if (options.json !== void 0) {
|
|
281
|
+
(0, import_assert.assert)(options.body === void 0, "Can specify either body or json parameters");
|
|
275
282
|
body = JSON.stringify(options.json);
|
|
276
283
|
}
|
|
277
|
-
if (options.response instanceof
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
(
|
|
281
|
-
|
|
282
|
-
|
|
284
|
+
if (options.response instanceof import_fetch.APIResponse) {
|
|
285
|
+
statusOption ??= options.response.status();
|
|
286
|
+
headersOption ??= options.response.headers();
|
|
287
|
+
if (body === void 0 && options.path === void 0) {
|
|
288
|
+
if (options.response._request._connection === this._connection)
|
|
289
|
+
fetchResponseUid = options.response._fetchUid();
|
|
290
|
+
else
|
|
291
|
+
body = await options.response.body();
|
|
283
292
|
}
|
|
284
293
|
}
|
|
285
294
|
let isBase64 = false;
|
|
286
295
|
let length = 0;
|
|
287
296
|
if (options.path) {
|
|
288
|
-
const buffer = await
|
|
289
|
-
body = buffer.toString(
|
|
297
|
+
const buffer = await this._platform.fs().promises.readFile(options.path);
|
|
298
|
+
body = buffer.toString("base64");
|
|
290
299
|
isBase64 = true;
|
|
291
300
|
length = buffer.length;
|
|
292
|
-
} else if ((0,
|
|
301
|
+
} else if ((0, import_rtti.isString)(body)) {
|
|
293
302
|
isBase64 = false;
|
|
294
303
|
length = Buffer.byteLength(body);
|
|
295
304
|
} else if (body) {
|
|
296
305
|
length = body.length;
|
|
297
|
-
body = body.toString(
|
|
306
|
+
body = body.toString("base64");
|
|
298
307
|
isBase64 = true;
|
|
299
308
|
}
|
|
300
309
|
const headers = {};
|
|
301
|
-
for (const header of Object.keys(headersOption || {}))
|
|
302
|
-
|
|
303
|
-
if (
|
|
310
|
+
for (const header of Object.keys(headersOption || {}))
|
|
311
|
+
headers[header.toLowerCase()] = String(headersOption[header]);
|
|
312
|
+
if (options.contentType)
|
|
313
|
+
headers["content-type"] = String(options.contentType);
|
|
314
|
+
else if (options.json)
|
|
315
|
+
headers["content-type"] = "application/json";
|
|
316
|
+
else if (options.path)
|
|
317
|
+
headers["content-type"] = (0, import_mimeType.getMimeTypeForPath)(options.path) || "application/octet-stream";
|
|
318
|
+
if (length && !("content-length" in headers))
|
|
319
|
+
headers["content-length"] = String(length);
|
|
304
320
|
await this._raceWithTargetClose(this._channel.fulfill({
|
|
305
321
|
status: statusOption || 200,
|
|
306
|
-
headers: (0,
|
|
322
|
+
headers: (0, import_headers.headersObjectToArray)(headers),
|
|
307
323
|
body,
|
|
308
324
|
isBase64,
|
|
309
325
|
fetchResponseUid
|
|
@@ -312,11 +328,15 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
312
328
|
async continue(options = {}) {
|
|
313
329
|
await this._handleRoute(async () => {
|
|
314
330
|
this.request()._applyFallbackOverrides(options);
|
|
315
|
-
await this._innerContinue(
|
|
331
|
+
await this._innerContinue(
|
|
332
|
+
false
|
|
333
|
+
/* isFallback */
|
|
334
|
+
);
|
|
316
335
|
});
|
|
317
336
|
}
|
|
318
337
|
_checkNotHandled() {
|
|
319
|
-
if (!this._handlingPromise)
|
|
338
|
+
if (!this._handlingPromise)
|
|
339
|
+
throw new Error("Route is already handled!");
|
|
320
340
|
}
|
|
321
341
|
_reportHandled(done) {
|
|
322
342
|
const chain = this._handlingPromise;
|
|
@@ -328,32 +348,22 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
328
348
|
return await this._raceWithTargetClose(this._channel.continue({
|
|
329
349
|
url: options.url,
|
|
330
350
|
method: options.method,
|
|
331
|
-
headers: options.headers ? (0,
|
|
351
|
+
headers: options.headers ? (0, import_headers.headersObjectToArray)(options.headers) : void 0,
|
|
332
352
|
postData: options.postDataBuffer,
|
|
333
353
|
isFallback
|
|
334
354
|
}));
|
|
335
355
|
}
|
|
336
356
|
}
|
|
337
|
-
|
|
338
|
-
_Symbol$asyncDispose = Symbol.asyncDispose;
|
|
339
|
-
class WebSocketRoute extends _channelOwner.ChannelOwner {
|
|
340
|
-
static from(route) {
|
|
341
|
-
return route._object;
|
|
342
|
-
}
|
|
357
|
+
class WebSocketRoute extends import_channelOwner.ChannelOwner {
|
|
343
358
|
constructor(parent, type, guid, initializer) {
|
|
344
359
|
super(parent, type, guid, initializer);
|
|
345
|
-
this._onPageMessage = void 0;
|
|
346
|
-
this._onPageClose = void 0;
|
|
347
|
-
this._onServerMessage = void 0;
|
|
348
|
-
this._onServerClose = void 0;
|
|
349
|
-
this._server = void 0;
|
|
350
360
|
this._connected = false;
|
|
351
361
|
this.markAsInternalType();
|
|
352
362
|
this._server = {
|
|
353
|
-
onMessage: handler => {
|
|
363
|
+
onMessage: (handler) => {
|
|
354
364
|
this._onServerMessage = handler;
|
|
355
365
|
},
|
|
356
|
-
onClose: handler => {
|
|
366
|
+
onClose: (handler) => {
|
|
357
367
|
this._onServerClose = handler;
|
|
358
368
|
},
|
|
359
369
|
connectToServer: () => {
|
|
@@ -363,88 +373,75 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
|
|
|
363
373
|
return this._initializer.url;
|
|
364
374
|
},
|
|
365
375
|
close: async (options = {}) => {
|
|
366
|
-
await this._channel.closeServer({
|
|
367
|
-
|
|
368
|
-
wasClean: true
|
|
369
|
-
}).catch(() => {});
|
|
376
|
+
await this._channel.closeServer({ ...options, wasClean: true }).catch(() => {
|
|
377
|
+
});
|
|
370
378
|
},
|
|
371
|
-
send: message => {
|
|
372
|
-
if ((0,
|
|
373
|
-
message,
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
message: message.toString(
|
|
377
|
-
|
|
378
|
-
}).catch(() => {});
|
|
379
|
+
send: (message) => {
|
|
380
|
+
if ((0, import_rtti.isString)(message))
|
|
381
|
+
this._channel.sendToServer({ message, isBase64: false }).catch(() => {
|
|
382
|
+
});
|
|
383
|
+
else
|
|
384
|
+
this._channel.sendToServer({ message: message.toString("base64"), isBase64: true }).catch(() => {
|
|
385
|
+
});
|
|
379
386
|
},
|
|
380
387
|
async [Symbol.asyncDispose]() {
|
|
381
388
|
await this.close();
|
|
382
389
|
}
|
|
383
390
|
};
|
|
384
|
-
this._channel.on(
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
isBase64
|
|
391
|
-
}).catch(() => {});
|
|
391
|
+
this._channel.on("messageFromPage", ({ message, isBase64 }) => {
|
|
392
|
+
if (this._onPageMessage)
|
|
393
|
+
this._onPageMessage(isBase64 ? Buffer.from(message, "base64") : message);
|
|
394
|
+
else if (this._connected)
|
|
395
|
+
this._channel.sendToServer({ message, isBase64 }).catch(() => {
|
|
396
|
+
});
|
|
392
397
|
});
|
|
393
|
-
this._channel.on(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
isBase64
|
|
400
|
-
}).catch(() => {});
|
|
398
|
+
this._channel.on("messageFromServer", ({ message, isBase64 }) => {
|
|
399
|
+
if (this._onServerMessage)
|
|
400
|
+
this._onServerMessage(isBase64 ? Buffer.from(message, "base64") : message);
|
|
401
|
+
else
|
|
402
|
+
this._channel.sendToPage({ message, isBase64 }).catch(() => {
|
|
403
|
+
});
|
|
401
404
|
});
|
|
402
|
-
this._channel.on(
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
code,
|
|
409
|
-
reason,
|
|
410
|
-
wasClean
|
|
411
|
-
}).catch(() => {});
|
|
405
|
+
this._channel.on("closePage", ({ code, reason, wasClean }) => {
|
|
406
|
+
if (this._onPageClose)
|
|
407
|
+
this._onPageClose(code, reason);
|
|
408
|
+
else
|
|
409
|
+
this._channel.closeServer({ code, reason, wasClean }).catch(() => {
|
|
410
|
+
});
|
|
412
411
|
});
|
|
413
|
-
this._channel.on(
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
code,
|
|
420
|
-
reason,
|
|
421
|
-
wasClean
|
|
422
|
-
}).catch(() => {});
|
|
412
|
+
this._channel.on("closeServer", ({ code, reason, wasClean }) => {
|
|
413
|
+
if (this._onServerClose)
|
|
414
|
+
this._onServerClose(code, reason);
|
|
415
|
+
else
|
|
416
|
+
this._channel.closePage({ code, reason, wasClean }).catch(() => {
|
|
417
|
+
});
|
|
423
418
|
});
|
|
424
419
|
}
|
|
420
|
+
static from(route) {
|
|
421
|
+
return route._object;
|
|
422
|
+
}
|
|
425
423
|
url() {
|
|
426
424
|
return this._initializer.url;
|
|
427
425
|
}
|
|
428
426
|
async close(options = {}) {
|
|
429
|
-
await this._channel.closePage({
|
|
430
|
-
|
|
431
|
-
wasClean: true
|
|
432
|
-
}).catch(() => {});
|
|
427
|
+
await this._channel.closePage({ ...options, wasClean: true }).catch(() => {
|
|
428
|
+
});
|
|
433
429
|
}
|
|
434
430
|
connectToServer() {
|
|
435
|
-
if (this._connected)
|
|
431
|
+
if (this._connected)
|
|
432
|
+
throw new Error("Already connected to the server");
|
|
436
433
|
this._connected = true;
|
|
437
|
-
this._channel.connect().catch(() => {
|
|
434
|
+
this._channel.connect().catch(() => {
|
|
435
|
+
});
|
|
438
436
|
return this._server;
|
|
439
437
|
}
|
|
440
438
|
send(message) {
|
|
441
|
-
if ((0,
|
|
442
|
-
message,
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
message: message.toString(
|
|
446
|
-
|
|
447
|
-
}).catch(() => {});
|
|
439
|
+
if ((0, import_rtti.isString)(message))
|
|
440
|
+
this._channel.sendToPage({ message, isBase64: false }).catch(() => {
|
|
441
|
+
});
|
|
442
|
+
else
|
|
443
|
+
this._channel.sendToPage({ message: message.toString("base64"), isBase64: true }).catch(() => {
|
|
444
|
+
});
|
|
448
445
|
}
|
|
449
446
|
onMessage(handler) {
|
|
450
447
|
this._onPageMessage = handler;
|
|
@@ -452,21 +449,17 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
|
|
|
452
449
|
onClose(handler) {
|
|
453
450
|
this._onPageClose = handler;
|
|
454
451
|
}
|
|
455
|
-
async [
|
|
452
|
+
async [Symbol.asyncDispose]() {
|
|
456
453
|
await this.close();
|
|
457
454
|
}
|
|
458
455
|
async _afterHandle() {
|
|
459
|
-
if (this._connected)
|
|
460
|
-
|
|
456
|
+
if (this._connected)
|
|
457
|
+
return;
|
|
461
458
|
await this._channel.ensureOpened();
|
|
462
459
|
}
|
|
463
460
|
}
|
|
464
|
-
exports.WebSocketRoute = WebSocketRoute;
|
|
465
461
|
class WebSocketRouteHandler {
|
|
466
462
|
constructor(baseURL, url, handler) {
|
|
467
|
-
this._baseURL = void 0;
|
|
468
|
-
this.url = void 0;
|
|
469
|
-
this.handler = void 0;
|
|
470
463
|
this._baseURL = baseURL;
|
|
471
464
|
this.url = url;
|
|
472
465
|
this.handler = handler;
|
|
@@ -475,20 +468,19 @@ class WebSocketRouteHandler {
|
|
|
475
468
|
const patterns = [];
|
|
476
469
|
let all = false;
|
|
477
470
|
for (const handler of handlers) {
|
|
478
|
-
if ((0,
|
|
479
|
-
glob: handler.url
|
|
480
|
-
|
|
481
|
-
regexSource: handler.url.source,
|
|
482
|
-
|
|
483
|
-
|
|
471
|
+
if ((0, import_rtti.isString)(handler.url))
|
|
472
|
+
patterns.push({ glob: handler.url });
|
|
473
|
+
else if ((0, import_rtti.isRegExp)(handler.url))
|
|
474
|
+
patterns.push({ regexSource: handler.url.source, regexFlags: handler.url.flags });
|
|
475
|
+
else
|
|
476
|
+
all = true;
|
|
484
477
|
}
|
|
485
|
-
if (all)
|
|
486
|
-
glob:
|
|
487
|
-
}];
|
|
478
|
+
if (all)
|
|
479
|
+
return [{ glob: "**/*" }];
|
|
488
480
|
return patterns;
|
|
489
481
|
}
|
|
490
482
|
matches(wsURL) {
|
|
491
|
-
return (0,
|
|
483
|
+
return (0, import_urlMatch.urlMatches)(this._baseURL, wsURL, this.url, true);
|
|
492
484
|
}
|
|
493
485
|
async handle(webSocketRoute) {
|
|
494
486
|
const handler = this.handler;
|
|
@@ -496,29 +488,25 @@ class WebSocketRouteHandler {
|
|
|
496
488
|
await webSocketRoute._afterHandle();
|
|
497
489
|
}
|
|
498
490
|
}
|
|
499
|
-
|
|
500
|
-
class Response extends _channelOwner.ChannelOwner {
|
|
501
|
-
static from(response) {
|
|
502
|
-
return response._object;
|
|
503
|
-
}
|
|
504
|
-
static fromNullable(response) {
|
|
505
|
-
return response ? Response.from(response) : null;
|
|
506
|
-
}
|
|
491
|
+
class Response extends import_channelOwner.ChannelOwner {
|
|
507
492
|
constructor(parent, type, guid, initializer) {
|
|
508
493
|
super(parent, type, guid, initializer);
|
|
509
|
-
this.
|
|
510
|
-
this.
|
|
511
|
-
this._request = void 0;
|
|
512
|
-
this._finishedPromise = new _manualPromise.ManualPromise();
|
|
494
|
+
this._finishedPromise = new import_manualPromise.ManualPromise();
|
|
495
|
+
this.markAsInternalType();
|
|
513
496
|
this._provisionalHeaders = new RawHeaders(initializer.headers);
|
|
514
497
|
this._request = Request.from(this._initializer.request);
|
|
515
498
|
Object.assign(this._request._timing, this._initializer.timing);
|
|
516
499
|
}
|
|
500
|
+
static from(response) {
|
|
501
|
+
return response._object;
|
|
502
|
+
}
|
|
503
|
+
static fromNullable(response) {
|
|
504
|
+
return response ? Response.from(response) : null;
|
|
505
|
+
}
|
|
517
506
|
url() {
|
|
518
507
|
return this._initializer.url;
|
|
519
508
|
}
|
|
520
509
|
ok() {
|
|
521
|
-
// Status 0 is for file:// URLs
|
|
522
510
|
return this._initializer.status === 0 || this._initializer.status >= 200 && this._initializer.status <= 299;
|
|
523
511
|
}
|
|
524
512
|
status() {
|
|
@@ -530,7 +518,6 @@ class Response extends _channelOwner.ChannelOwner {
|
|
|
530
518
|
fromServiceWorker() {
|
|
531
519
|
return this._initializer.fromServiceWorker;
|
|
532
520
|
}
|
|
533
|
-
|
|
534
521
|
/**
|
|
535
522
|
* @deprecated
|
|
536
523
|
*/
|
|
@@ -565,7 +552,7 @@ class Response extends _channelOwner.ChannelOwner {
|
|
|
565
552
|
}
|
|
566
553
|
async text() {
|
|
567
554
|
const content = await this.body();
|
|
568
|
-
return content.toString(
|
|
555
|
+
return content.toString("utf8");
|
|
569
556
|
}
|
|
570
557
|
async json() {
|
|
571
558
|
const content = await this.text();
|
|
@@ -584,37 +571,30 @@ class Response extends _channelOwner.ChannelOwner {
|
|
|
584
571
|
return (await this._channel.securityDetails()).value || null;
|
|
585
572
|
}
|
|
586
573
|
}
|
|
587
|
-
|
|
588
|
-
class WebSocket extends _channelOwner.ChannelOwner {
|
|
574
|
+
class WebSocket extends import_channelOwner.ChannelOwner {
|
|
589
575
|
static from(webSocket) {
|
|
590
576
|
return webSocket._object;
|
|
591
577
|
}
|
|
592
578
|
constructor(parent, type, guid, initializer) {
|
|
593
579
|
super(parent, type, guid, initializer);
|
|
594
|
-
this._page = void 0;
|
|
595
|
-
this._isClosed = void 0;
|
|
596
580
|
this._isClosed = false;
|
|
597
581
|
this._page = parent;
|
|
598
|
-
this._channel.on(
|
|
599
|
-
if (event.opcode === 1)
|
|
600
|
-
payload: event.data
|
|
601
|
-
|
|
602
|
-
payload: Buffer.from(event.data,
|
|
603
|
-
});
|
|
582
|
+
this._channel.on("frameSent", (event) => {
|
|
583
|
+
if (event.opcode === 1)
|
|
584
|
+
this.emit(import_events.Events.WebSocket.FrameSent, { payload: event.data });
|
|
585
|
+
else if (event.opcode === 2)
|
|
586
|
+
this.emit(import_events.Events.WebSocket.FrameSent, { payload: Buffer.from(event.data, "base64") });
|
|
604
587
|
});
|
|
605
|
-
this._channel.on(
|
|
606
|
-
if (event.opcode === 1)
|
|
607
|
-
payload: event.data
|
|
608
|
-
|
|
609
|
-
payload: Buffer.from(event.data,
|
|
610
|
-
});
|
|
588
|
+
this._channel.on("frameReceived", (event) => {
|
|
589
|
+
if (event.opcode === 1)
|
|
590
|
+
this.emit(import_events.Events.WebSocket.FrameReceived, { payload: event.data });
|
|
591
|
+
else if (event.opcode === 2)
|
|
592
|
+
this.emit(import_events.Events.WebSocket.FrameReceived, { payload: Buffer.from(event.data, "base64") });
|
|
611
593
|
});
|
|
612
|
-
this._channel.on(
|
|
613
|
-
|
|
614
|
-
}) => this.emit(_events.Events.WebSocket.Error, error));
|
|
615
|
-
this._channel.on('close', () => {
|
|
594
|
+
this._channel.on("socketError", ({ error }) => this.emit(import_events.Events.WebSocket.Error, error));
|
|
595
|
+
this._channel.on("close", () => {
|
|
616
596
|
this._isClosed = true;
|
|
617
|
-
this.emit(
|
|
597
|
+
this.emit(import_events.Events.WebSocket.Close, this);
|
|
618
598
|
});
|
|
619
599
|
}
|
|
620
600
|
url() {
|
|
@@ -625,79 +605,72 @@ class WebSocket extends _channelOwner.ChannelOwner {
|
|
|
625
605
|
}
|
|
626
606
|
async waitForEvent(event, optionsOrPredicate = {}) {
|
|
627
607
|
return await this._wrapApiCall(async () => {
|
|
628
|
-
const timeout = this._page._timeoutSettings.timeout(typeof optionsOrPredicate ===
|
|
629
|
-
const predicate = typeof optionsOrPredicate ===
|
|
630
|
-
const waiter =
|
|
608
|
+
const timeout = this._page._timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
|
|
609
|
+
const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
|
|
610
|
+
const waiter = import_waiter.Waiter.createForEvent(this, event);
|
|
631
611
|
waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
|
|
632
|
-
if (event !==
|
|
633
|
-
|
|
634
|
-
|
|
612
|
+
if (event !== import_events.Events.WebSocket.Error)
|
|
613
|
+
waiter.rejectOnEvent(this, import_events.Events.WebSocket.Error, new Error("Socket error"));
|
|
614
|
+
if (event !== import_events.Events.WebSocket.Close)
|
|
615
|
+
waiter.rejectOnEvent(this, import_events.Events.WebSocket.Close, new Error("Socket closed"));
|
|
616
|
+
waiter.rejectOnEvent(this._page, import_events.Events.Page.Close, () => this._page._closeErrorWithReason());
|
|
635
617
|
const result = await waiter.waitForEvent(this, event, predicate);
|
|
636
618
|
waiter.dispose();
|
|
637
619
|
return result;
|
|
638
620
|
});
|
|
639
621
|
}
|
|
640
622
|
}
|
|
641
|
-
exports.WebSocket = WebSocket;
|
|
642
623
|
function validateHeaders(headers) {
|
|
643
624
|
for (const key of Object.keys(headers)) {
|
|
644
625
|
const value = headers[key];
|
|
645
|
-
if (!Object.is(value,
|
|
626
|
+
if (!Object.is(value, void 0) && !(0, import_rtti.isString)(value))
|
|
627
|
+
throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
|
|
646
628
|
}
|
|
647
629
|
}
|
|
648
630
|
class RouteHandler {
|
|
649
|
-
constructor(baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
|
|
631
|
+
constructor(platform, baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
|
|
650
632
|
this.handledCount = 0;
|
|
651
|
-
this._baseURL = void 0;
|
|
652
|
-
this._times = void 0;
|
|
653
|
-
this.url = void 0;
|
|
654
|
-
this.handler = void 0;
|
|
655
633
|
this._ignoreException = false;
|
|
656
|
-
this._activeInvocations = new Set();
|
|
657
|
-
this._svedZone = void 0;
|
|
634
|
+
this._activeInvocations = /* @__PURE__ */ new Set();
|
|
658
635
|
this._baseURL = baseURL;
|
|
659
636
|
this._times = times;
|
|
660
637
|
this.url = url;
|
|
661
638
|
this.handler = handler;
|
|
662
|
-
this.
|
|
639
|
+
this._savedZone = platform.zones.current().pop();
|
|
663
640
|
}
|
|
664
641
|
static prepareInterceptionPatterns(handlers) {
|
|
665
642
|
const patterns = [];
|
|
666
643
|
let all = false;
|
|
667
644
|
for (const handler of handlers) {
|
|
668
|
-
if ((0,
|
|
669
|
-
glob: handler.url
|
|
670
|
-
|
|
671
|
-
regexSource: handler.url.source,
|
|
672
|
-
|
|
673
|
-
|
|
645
|
+
if ((0, import_rtti.isString)(handler.url))
|
|
646
|
+
patterns.push({ glob: handler.url });
|
|
647
|
+
else if ((0, import_rtti.isRegExp)(handler.url))
|
|
648
|
+
patterns.push({ regexSource: handler.url.source, regexFlags: handler.url.flags });
|
|
649
|
+
else
|
|
650
|
+
all = true;
|
|
674
651
|
}
|
|
675
|
-
if (all)
|
|
676
|
-
glob:
|
|
677
|
-
}];
|
|
652
|
+
if (all)
|
|
653
|
+
return [{ glob: "**/*" }];
|
|
678
654
|
return patterns;
|
|
679
655
|
}
|
|
680
656
|
matches(requestURL) {
|
|
681
|
-
return (0,
|
|
657
|
+
return (0, import_urlMatch.urlMatches)(this._baseURL, requestURL, this.url);
|
|
682
658
|
}
|
|
683
659
|
async handle(route) {
|
|
684
|
-
return await this.
|
|
660
|
+
return await this._savedZone.run(async () => this._handleImpl(route));
|
|
685
661
|
}
|
|
686
662
|
async _handleImpl(route) {
|
|
687
|
-
const handlerInvocation = {
|
|
688
|
-
complete: new _manualPromise.ManualPromise(),
|
|
689
|
-
route
|
|
690
|
-
};
|
|
663
|
+
const handlerInvocation = { complete: new import_manualPromise.ManualPromise(), route };
|
|
691
664
|
this._activeInvocations.add(handlerInvocation);
|
|
692
665
|
try {
|
|
693
666
|
return await this._handleInternal(route);
|
|
694
667
|
} catch (e) {
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
if ((0,
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
668
|
+
if (this._ignoreException)
|
|
669
|
+
return false;
|
|
670
|
+
if ((0, import_errors.isTargetClosedError)(e)) {
|
|
671
|
+
(0, import_stackTrace.rewriteErrorMessage)(e, `"${e.message}" while running route callback.
|
|
672
|
+
Consider awaiting \`await page.unrouteAll({ behavior: 'ignoreErrors' })\`
|
|
673
|
+
before the end of the test to ignore remaining routes in flight.`);
|
|
701
674
|
}
|
|
702
675
|
throw e;
|
|
703
676
|
} finally {
|
|
@@ -706,16 +679,13 @@ class RouteHandler {
|
|
|
706
679
|
}
|
|
707
680
|
}
|
|
708
681
|
async stop(behavior) {
|
|
709
|
-
|
|
710
|
-
// - wait for the current handler invocations to finish
|
|
711
|
-
// - or do not wait, if the user opted out of it, but swallow all exceptions
|
|
712
|
-
// that happen after the unroute/close.
|
|
713
|
-
if (behavior === 'ignoreErrors') {
|
|
682
|
+
if (behavior === "ignoreErrors") {
|
|
714
683
|
this._ignoreException = true;
|
|
715
684
|
} else {
|
|
716
685
|
const promises = [];
|
|
717
686
|
for (const activation of this._activeInvocations) {
|
|
718
|
-
if (!activation.route._didThrow)
|
|
687
|
+
if (!activation.route._didThrow)
|
|
688
|
+
promises.push(activation.complete);
|
|
719
689
|
}
|
|
720
690
|
await Promise.all(promises);
|
|
721
691
|
}
|
|
@@ -723,45 +693,59 @@ class RouteHandler {
|
|
|
723
693
|
async _handleInternal(route) {
|
|
724
694
|
++this.handledCount;
|
|
725
695
|
const handledPromise = route._startHandling();
|
|
726
|
-
// Extract handler into a variable to avoid [RouteHandler.handler] in the stack.
|
|
727
696
|
const handler = this.handler;
|
|
728
|
-
const [handled] = await Promise.all([
|
|
697
|
+
const [handled] = await Promise.all([
|
|
698
|
+
handledPromise,
|
|
699
|
+
handler(route, route.request())
|
|
700
|
+
]);
|
|
729
701
|
return handled;
|
|
730
702
|
}
|
|
731
703
|
willExpire() {
|
|
732
704
|
return this.handledCount + 1 >= this._times;
|
|
733
705
|
}
|
|
734
706
|
}
|
|
735
|
-
exports.RouteHandler = RouteHandler;
|
|
736
707
|
class RawHeaders {
|
|
708
|
+
constructor(headers) {
|
|
709
|
+
this._headersMap = new import_multimap.MultiMap();
|
|
710
|
+
this._headersArray = headers;
|
|
711
|
+
for (const header of headers)
|
|
712
|
+
this._headersMap.set(header.name.toLowerCase(), header.value);
|
|
713
|
+
}
|
|
737
714
|
static _fromHeadersObjectLossy(headers) {
|
|
738
715
|
const headersArray = Object.entries(headers).map(([name, value]) => ({
|
|
739
716
|
name,
|
|
740
717
|
value
|
|
741
|
-
})).filter(header => header.value !==
|
|
718
|
+
})).filter((header) => header.value !== void 0);
|
|
742
719
|
return new RawHeaders(headersArray);
|
|
743
720
|
}
|
|
744
|
-
constructor(headers) {
|
|
745
|
-
this._headersArray = void 0;
|
|
746
|
-
this._headersMap = new _utils.MultiMap();
|
|
747
|
-
this._headersArray = headers;
|
|
748
|
-
for (const header of headers) this._headersMap.set(header.name.toLowerCase(), header.value);
|
|
749
|
-
}
|
|
750
721
|
get(name) {
|
|
751
722
|
const values = this.getAll(name);
|
|
752
|
-
if (!values || !values.length)
|
|
753
|
-
|
|
723
|
+
if (!values || !values.length)
|
|
724
|
+
return null;
|
|
725
|
+
return values.join(name.toLowerCase() === "set-cookie" ? "\n" : ", ");
|
|
754
726
|
}
|
|
755
727
|
getAll(name) {
|
|
756
728
|
return [...this._headersMap.get(name.toLowerCase())];
|
|
757
729
|
}
|
|
758
730
|
headers() {
|
|
759
731
|
const result = {};
|
|
760
|
-
for (const name of this._headersMap.keys())
|
|
732
|
+
for (const name of this._headersMap.keys())
|
|
733
|
+
result[name] = this.get(name);
|
|
761
734
|
return result;
|
|
762
735
|
}
|
|
763
736
|
headersArray() {
|
|
764
737
|
return this._headersArray;
|
|
765
738
|
}
|
|
766
739
|
}
|
|
767
|
-
|
|
740
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
741
|
+
0 && (module.exports = {
|
|
742
|
+
RawHeaders,
|
|
743
|
+
Request,
|
|
744
|
+
Response,
|
|
745
|
+
Route,
|
|
746
|
+
RouteHandler,
|
|
747
|
+
WebSocket,
|
|
748
|
+
WebSocketRoute,
|
|
749
|
+
WebSocketRouteHandler,
|
|
750
|
+
validateHeaders
|
|
751
|
+
});
|