@checkly/playwright-core 1.51.17-beta.1 → 1.54.2-beta.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 +65 -123
- package/browsers.json +16 -14
- package/index.js +1 -1
- package/lib/androidServerImpl.js +47 -50
- package/lib/browserServerImpl.js +89 -69
- package/lib/checkly/escapeRegExp.js +23 -27
- package/lib/checkly/fetch.js +64 -46
- package/lib/checkly/secretsFilter.js +49 -36
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +400 -359
- package/lib/cli/programWithTestStub.js +51 -45
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +151 -242
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -36
- package/lib/client/browser.js +96 -71
- package/lib/client/browserContext.js +314 -345
- package/lib/client/browserType.js +103 -127
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +90 -113
- package/lib/client/clientHelper.js +48 -39
- package/lib/client/clientInstrumentation.js +40 -37
- package/lib/client/clientStackTrace.js +41 -37
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +188 -214
- package/lib/client/consoleMessage.js +31 -28
- 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 +80 -77
- package/lib/client/elementHandle.js +120 -159
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +124 -121
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +166 -190
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +31 -28
- package/lib/client/frame.js +207 -306
- package/lib/client/harRouter.js +42 -52
- package/lib/client/input.js +42 -69
- package/lib/client/jsHandle.js +54 -69
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +29 -29
- package/lib/client/locator.js +145 -237
- package/lib/client/network.js +282 -307
- package/lib/client/page.js +269 -318
- package/lib/client/platform.js +46 -43
- package/lib/client/playwright.js +51 -76
- package/lib/client/selectors.js +45 -63
- package/lib/client/stream.js +29 -25
- package/lib/client/timeoutSettings.js +55 -41
- package/lib/client/tracing.js +49 -96
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +69 -88
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +43 -56
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +27 -23
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +26 -6
- package/lib/generated/consoleApiSource.js +26 -6
- package/lib/generated/injectedScriptSource.js +26 -6
- package/lib/generated/pollingRecorderSource.js +26 -6
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +26 -6
- package/lib/generated/webSocketMockSource.js +333 -5
- package/lib/inProcessFactory.js +51 -53
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +51 -46
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2807 -2739
- package/lib/protocol/validatorPrimitives.js +114 -73
- package/lib/remote/playwrightConnection.js +88 -242
- package/lib/remote/playwrightServer.js +305 -92
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +251 -241
- package/lib/server/android/backendAdb.js +87 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +297 -158
- package/lib/server/bidi/bidiChromium.js +119 -89
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +129 -113
- package/lib/server/bidi/bidiFirefox.js +86 -76
- package/lib/server/bidi/bidiInput.js +106 -117
- package/lib/server/bidi/bidiNetworkManager.js +142 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +260 -260
- 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 +236 -220
- package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
- package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
- package/lib/server/browser.js +93 -95
- package/lib/server/browserContext.js +419 -429
- package/lib/server/browserType.js +186 -216
- package/lib/server/callLog.js +47 -44
- package/lib/server/chromium/chromium.js +235 -203
- package/lib/server/chromium/chromiumSwitches.js +100 -67
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +310 -292
- package/lib/server/chromium/crConnection.js +95 -121
- package/lib/server/chromium/crCoverage.js +121 -131
- package/lib/server/chromium/crDevTools.js +60 -51
- package/lib/server/chromium/crDragDrop.js +68 -84
- package/lib/server/chromium/crExecutionContext.js +89 -83
- package/lib/server/chromium/crInput.js +118 -113
- package/lib/server/chromium/crNetworkManager.js +274 -375
- package/lib/server/chromium/crPage.js +536 -593
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +84 -73
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +66 -99
- package/lib/server/clock.js +107 -83
- package/lib/server/codegen/csharp.js +192 -162
- package/lib/server/codegen/java.js +156 -129
- package/lib/server/codegen/javascript.js +163 -148
- package/lib/server/codegen/jsonl.js +32 -28
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -126
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +108 -86
- package/lib/server/debugController.js +147 -151
- package/lib/server/debugger.js +86 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +238 -128
- package/lib/server/dialog.js +84 -39
- package/lib/server/dispatchers/androidDispatcher.js +257 -148
- package/lib/server/dispatchers/artifactDispatcher.js +79 -79
- package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
- package/lib/server/dispatchers/browserDispatcher.js +96 -148
- package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
- package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
- package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
- package/lib/server/dispatchers/dialogDispatcher.js +34 -31
- package/lib/server/dispatchers/dispatcher.js +208 -248
- package/lib/server/dispatchers/electronDispatcher.js +66 -70
- package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
- package/lib/server/dispatchers/frameDispatcher.js +211 -272
- package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
- package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
- package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
- package/lib/server/dispatchers/networkDispatchers.js +117 -128
- package/lib/server/dispatchers/pageDispatcher.js +256 -248
- package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
- package/lib/server/dispatchers/streamDispatcher.js +52 -48
- package/lib/server/dispatchers/tracingDispatcher.js +47 -52
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
- package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
- package/lib/server/dom.js +485 -582
- package/lib/server/download.js +47 -37
- package/lib/server/electron/electron.js +216 -243
- package/lib/server/electron/loader.js +9 -37
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +317 -360
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -60
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +268 -305
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +92 -73
- package/lib/server/firefox/ffInput.js +82 -84
- package/lib/server/firefox/ffNetworkManager.js +137 -114
- package/lib/server/firefox/ffPage.js +261 -293
- package/lib/server/firefox/firefox.js +80 -72
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +98 -114
- package/lib/server/frames.js +845 -1055
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +290 -223
- package/lib/server/harBackend.js +80 -80
- package/lib/server/helper.js +55 -59
- package/lib/server/index.js +59 -99
- package/lib/server/input.js +151 -189
- package/lib/server/instrumentation.js +57 -44
- package/lib/server/javascript.js +133 -134
- package/lib/server/launchApp.js +113 -75
- package/lib/server/localUtils.js +150 -142
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +299 -303
- package/lib/server/page.js +513 -544
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +58 -67
- package/lib/server/progress.js +137 -68
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +70 -86
- package/lib/server/recorder/recorderApp.js +341 -176
- package/lib/server/recorder/recorderInTraceViewer.js +65 -94
- package/lib/server/recorder/recorderRunner.js +93 -116
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +104 -47
- package/lib/server/recorder/throttledFile.js +42 -30
- package/lib/server/recorder.js +395 -275
- package/lib/server/registry/browserFetcher.js +106 -101
- package/lib/server/registry/dependencies.js +245 -196
- package/lib/server/registry/index.js +930 -803
- package/lib/server/registry/nativeDeps.js +1073 -464
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +160 -191
- package/lib/server/selectors.js +90 -51
- package/lib/server/socksClientCertificatesInterceptor.js +171 -186
- package/lib/server/socksInterceptor.js +62 -70
- package/lib/server/trace/recorder/snapshotter.js +76 -102
- package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
- package/lib/server/trace/recorder/tracing.js +354 -362
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +160 -147
- package/lib/server/transport.js +119 -134
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +39 -26
- package/lib/server/utils/comparators.js +105 -103
- package/lib/server/utils/crypto.js +157 -112
- package/lib/server/utils/debug.js +36 -32
- package/lib/server/utils/debugLogger.js +77 -48
- package/lib/server/utils/env.js +52 -37
- package/lib/server/utils/eventsHelper.js +29 -28
- package/lib/server/utils/expectUtils.js +31 -26
- package/lib/server/utils/fileUtils.js +123 -136
- package/lib/server/utils/happyEyeballs.js +141 -126
- package/lib/server/utils/hostPlatform.js +84 -120
- package/lib/server/utils/httpServer.js +106 -121
- package/lib/server/utils/image_tools/colorUtils.js +42 -51
- package/lib/server/utils/image_tools/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +38 -30
- package/lib/server/utils/image_tools/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +50 -37
- package/lib/server/utils/network.js +152 -96
- package/lib/server/utils/nodePlatform.js +87 -79
- package/lib/server/utils/pipeTransport.js +44 -42
- package/lib/server/utils/processLauncher.js +111 -121
- package/lib/server/utils/profiler.js +52 -39
- package/lib/server/utils/socksProxy.js +280 -339
- package/lib/server/utils/spawnAsync.js +37 -41
- package/lib/server/utils/task.js +31 -38
- package/lib/server/utils/userAgent.js +73 -66
- package/lib/server/utils/wsServer.js +68 -75
- package/lib/server/utils/zipFile.js +36 -37
- package/lib/server/utils/zones.js +37 -34
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +77 -61
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +193 -184
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +85 -70
- package/lib/server/webkit/wkInput.js +97 -95
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +568 -667
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +79 -79
- package/lib/utils/expectUtils.js +31 -26
- package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
- package/lib/utils/isomorphic/assert.js +28 -22
- package/lib/utils/isomorphic/colors.js +66 -59
- package/lib/utils/isomorphic/cssParser.js +120 -125
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +38 -37
- package/lib/utils/isomorphic/locatorGenerators.js +358 -357
- package/lib/utils/isomorphic/locatorParser.js +96 -105
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +46 -39
- package/lib/utils/isomorphic/mimeType.js +447 -25
- package/lib/utils/isomorphic/multimap.js +34 -27
- package/lib/utils/isomorphic/protocolFormatter.js +68 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
- package/lib/utils/isomorphic/recorderUtils.js +140 -181
- package/lib/utils/isomorphic/rtti.js +35 -33
- package/lib/utils/isomorphic/selectorParser.js +182 -193
- package/lib/utils/isomorphic/semaphore.js +27 -24
- package/lib/utils/isomorphic/stackTrace.js +87 -98
- package/lib/utils/isomorphic/stringUtils.js +98 -112
- package/lib/utils/isomorphic/time.js +46 -22
- package/lib/utils/isomorphic/timeoutRunner.js +53 -53
- package/lib/utils/isomorphic/traceUtils.js +37 -41
- package/lib/utils/isomorphic/types.js +15 -4
- package/lib/utils/isomorphic/urlMatch.js +113 -67
- package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
- package/lib/utils.js +101 -443
- package/lib/utilsBundle.js +101 -52
- package/lib/utilsBundleImpl/index.js +160 -150
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +1 -1
- package/types/protocol.d.ts +1267 -1057
- package/types/types.d.ts +131 -29
- 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/compare.js +0 -108
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/image_tools/stats.js +0 -102
- package/lib/protocol/debug.js +0 -27
- package/lib/protocol/transport.js +0 -82
- package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
- package/lib/server/recorder/contextRecorder.js +0 -290
- package/lib/server/recorder/recorderCollection.js +0 -104
- package/lib/server/recorder/recorderFrontend.js +0 -5
- package/lib/server/storageScript.js +0 -160
- package/lib/server/timeoutSettings.js +0 -74
- package/lib/third_party/diff_match_patch.js +0 -2222
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -171
- package/lib/utils/crypto.js +0 -174
- 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/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -210
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -133
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- 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/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -121
- 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 -62
- package/lib/vite/htmlReport/index.html +0 -69
- package/lib/vite/recorder/assets/codeMirrorModule-DrMbgOIo.js +0 -16684
- package/lib/vite/recorder/assets/codeMirrorModule-DuST8d_k.css +0 -344
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-5NM3V7eb.css +0 -2524
- package/lib/vite/recorder/assets/index-CT-scFHn.js +0 -16848
- package/lib/vite/recorder/index.html +0 -29
- package/lib/vite/recorder/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/assets/codeMirrorModule-CB-2okZ8.js +0 -16684
- package/lib/vite/traceViewer/assets/defaultSettingsView-CBiB4avC.js +0 -217
- package/lib/vite/traceViewer/assets/inspectorTab-CwgfffWb.js +0 -25143
- package/lib/vite/traceViewer/assets/workbench-CWZselvp.js +0 -2470
- package/lib/vite/traceViewer/assets/xtermModule-Es_gt_u7.js +0 -5994
- package/lib/vite/traceViewer/codeMirrorModule.DuST8d_k.css +0 -344
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.Dp3b_92q.css +0 -41
- package/lib/vite/traceViewer/embedded.BeldSa2G.css +0 -68
- package/lib/vite/traceViewer/embedded.gzudoghF.js +0 -106
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/index.DilotR1h.js +0 -314
- package/lib/vite/traceViewer/index.QewjJ85u.css +0 -131
- package/lib/vite/traceViewer/index.html +0 -47
- package/lib/vite/traceViewer/inspectorTab.DnGm18kV.css +0 -3178
- package/lib/vite/traceViewer/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/recorder.DLgqV9db.css +0 -15
- package/lib/vite/traceViewer/recorder.DVrkq3Um.js +0 -551
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/snapshot.html +0 -21
- package/lib/vite/traceViewer/sw.bundle.js +0 -3
- package/lib/vite/traceViewer/uiMode.C9_OcpPU.js +0 -1756
- package/lib/vite/traceViewer/uiMode.c5ORgcrX.css +0 -1424
- package/lib/vite/traceViewer/uiMode.html +0 -21
- package/lib/vite/traceViewer/workbench.xUZSA8PY.css +0 -787
- package/lib/vite/traceViewer/xtermModule.EsaqrrTX.css +0 -209
package/lib/server/network.js
CHANGED
|
@@ -1,76 +1,82 @@
|
|
|
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
|
+
Request: () => Request,
|
|
22
|
+
Response: () => Response,
|
|
23
|
+
Route: () => Route,
|
|
24
|
+
WebSocket: () => WebSocket,
|
|
25
|
+
filterCookies: () => filterCookies,
|
|
26
|
+
isLocalHostname: () => isLocalHostname,
|
|
27
|
+
kMaxCookieExpiresDateInSeconds: () => kMaxCookieExpiresDateInSeconds,
|
|
28
|
+
mergeHeaders: () => mergeHeaders,
|
|
29
|
+
parseURL: () => parseURL,
|
|
30
|
+
rewriteCookies: () => rewriteCookies,
|
|
31
|
+
singleHeader: () => singleHeader,
|
|
32
|
+
statusText: () => statusText,
|
|
33
|
+
stripFragmentFromUrl: () => stripFragmentFromUrl
|
|
5
34
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.singleHeader = singleHeader;
|
|
13
|
-
exports.statusText = statusText;
|
|
14
|
-
exports.stripFragmentFromUrl = stripFragmentFromUrl;
|
|
15
|
-
var _utils = require("../utils");
|
|
16
|
-
var _browserContext = require("./browserContext");
|
|
17
|
-
var _fetch = require("./fetch");
|
|
18
|
-
var _instrumentation = require("./instrumentation");
|
|
19
|
-
var _manualPromise = require("../utils/isomorphic/manualPromise");
|
|
20
|
-
/**
|
|
21
|
-
* Copyright (c) Microsoft Corporation.
|
|
22
|
-
*
|
|
23
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
24
|
-
* you may not use this file except in compliance with the License.
|
|
25
|
-
* You may obtain a copy of the License at
|
|
26
|
-
*
|
|
27
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
28
|
-
*
|
|
29
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
30
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
31
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
32
|
-
* See the License for the specific language governing permissions and
|
|
33
|
-
* limitations under the License.
|
|
34
|
-
*/
|
|
35
|
-
|
|
35
|
+
module.exports = __toCommonJS(network_exports);
|
|
36
|
+
var import_utils = require("../utils");
|
|
37
|
+
var import_browserContext = require("./browserContext");
|
|
38
|
+
var import_fetch = require("./fetch");
|
|
39
|
+
var import_instrumentation = require("./instrumentation");
|
|
40
|
+
var import_manualPromise = require("../utils/isomorphic/manualPromise");
|
|
36
41
|
function filterCookies(cookies, urls) {
|
|
37
|
-
const parsedURLs = urls.map(s => new URL(s));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
const parsedURLs = urls.map((s) => new URL(s));
|
|
43
|
+
return cookies.filter((c) => {
|
|
44
|
+
if (!parsedURLs.length)
|
|
45
|
+
return true;
|
|
41
46
|
for (const parsedURL of parsedURLs) {
|
|
42
47
|
let domain = c.domain;
|
|
43
|
-
if (!domain.startsWith(
|
|
44
|
-
|
|
45
|
-
if (!parsedURL.
|
|
46
|
-
|
|
48
|
+
if (!domain.startsWith("."))
|
|
49
|
+
domain = "." + domain;
|
|
50
|
+
if (!("." + parsedURL.hostname).endsWith(domain))
|
|
51
|
+
continue;
|
|
52
|
+
if (!parsedURL.pathname.startsWith(c.path))
|
|
53
|
+
continue;
|
|
54
|
+
if (parsedURL.protocol !== "https:" && !isLocalHostname(parsedURL.hostname) && c.secure)
|
|
55
|
+
continue;
|
|
47
56
|
return true;
|
|
48
57
|
}
|
|
49
58
|
return false;
|
|
50
59
|
});
|
|
51
60
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const kMaxCookieExpiresDateInSeconds = exports.kMaxCookieExpiresDateInSeconds = 253402300799;
|
|
61
|
+
function isLocalHostname(hostname) {
|
|
62
|
+
return hostname === "localhost" || hostname.endsWith(".localhost");
|
|
63
|
+
}
|
|
64
|
+
const kMaxCookieExpiresDateInSeconds = 253402300799;
|
|
57
65
|
function rewriteCookies(cookies) {
|
|
58
|
-
return cookies.map(c => {
|
|
59
|
-
(0,
|
|
60
|
-
(0,
|
|
61
|
-
(0,
|
|
62
|
-
(0,
|
|
63
|
-
(0,
|
|
64
|
-
const copy = {
|
|
65
|
-
...c
|
|
66
|
-
};
|
|
66
|
+
return cookies.map((c) => {
|
|
67
|
+
(0, import_utils.assert)(c.url || c.domain && c.path, "Cookie should have a url or a domain/path pair");
|
|
68
|
+
(0, import_utils.assert)(!(c.url && c.domain), "Cookie should have either url or domain");
|
|
69
|
+
(0, import_utils.assert)(!(c.url && c.path), "Cookie should have either url or path");
|
|
70
|
+
(0, import_utils.assert)(!(c.expires && c.expires < 0 && c.expires !== -1), "Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed");
|
|
71
|
+
(0, import_utils.assert)(!(c.expires && c.expires > 0 && c.expires > kMaxCookieExpiresDateInSeconds), "Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed");
|
|
72
|
+
const copy = { ...c };
|
|
67
73
|
if (copy.url) {
|
|
68
|
-
(0,
|
|
69
|
-
(0,
|
|
74
|
+
(0, import_utils.assert)(copy.url !== "about:blank", `Blank page can not have cookie "${c.name}"`);
|
|
75
|
+
(0, import_utils.assert)(!copy.url.startsWith("data:"), `Data URL page can not have cookie "${c.name}"`);
|
|
70
76
|
const url = new URL(copy.url);
|
|
71
77
|
copy.domain = url.hostname;
|
|
72
|
-
copy.path = url.pathname.substring(0, url.pathname.lastIndexOf(
|
|
73
|
-
copy.secure = url.protocol ===
|
|
78
|
+
copy.path = url.pathname.substring(0, url.pathname.lastIndexOf("/") + 1);
|
|
79
|
+
copy.secure = url.protocol === "https:";
|
|
74
80
|
}
|
|
75
81
|
return copy;
|
|
76
82
|
});
|
|
@@ -83,38 +89,29 @@ function parseURL(url) {
|
|
|
83
89
|
}
|
|
84
90
|
}
|
|
85
91
|
function stripFragmentFromUrl(url) {
|
|
86
|
-
if (!url.includes(
|
|
87
|
-
|
|
92
|
+
if (!url.includes("#"))
|
|
93
|
+
return url;
|
|
94
|
+
return url.substring(0, url.indexOf("#"));
|
|
88
95
|
}
|
|
89
|
-
class Request extends
|
|
96
|
+
class Request extends import_instrumentation.SdkObject {
|
|
90
97
|
constructor(context, frame, serviceWorker, redirectedFrom, documentId, url, resourceType, method, postData, headers) {
|
|
91
|
-
super(frame || context,
|
|
98
|
+
super(frame || context, "request");
|
|
92
99
|
this._response = null;
|
|
93
|
-
this._redirectedFrom = void 0;
|
|
94
100
|
this._redirectedTo = null;
|
|
95
|
-
this._documentId = void 0;
|
|
96
|
-
this._isFavicon = void 0;
|
|
97
101
|
this._failureText = null;
|
|
98
|
-
this.
|
|
99
|
-
this._resourceType = void 0;
|
|
100
|
-
this._method = void 0;
|
|
101
|
-
this._postData = void 0;
|
|
102
|
-
this._headers = void 0;
|
|
103
|
-
this._headersMap = new Map();
|
|
102
|
+
this._headersMap = /* @__PURE__ */ new Map();
|
|
104
103
|
this._frame = null;
|
|
105
104
|
this._serviceWorker = null;
|
|
106
|
-
this.
|
|
107
|
-
this.
|
|
108
|
-
this._waitForResponsePromise = new _manualPromise.ManualPromise();
|
|
105
|
+
this._rawRequestHeadersPromise = new import_manualPromise.ManualPromise();
|
|
106
|
+
this._waitForResponsePromise = new import_manualPromise.ManualPromise();
|
|
109
107
|
this._responseEndTiming = -1;
|
|
110
|
-
|
|
111
|
-
this._bodySize = void 0;
|
|
112
|
-
(0, _utils.assert)(!url.startsWith('data:'), 'Data urls should not fire requests');
|
|
108
|
+
(0, import_utils.assert)(!url.startsWith("data:"), "Data urls should not fire requests");
|
|
113
109
|
this._context = context;
|
|
114
110
|
this._frame = frame;
|
|
115
111
|
this._serviceWorker = serviceWorker;
|
|
116
112
|
this._redirectedFrom = redirectedFrom;
|
|
117
|
-
if (redirectedFrom)
|
|
113
|
+
if (redirectedFrom)
|
|
114
|
+
redirectedFrom._redirectedTo = this;
|
|
118
115
|
this._documentId = documentId;
|
|
119
116
|
this._url = stripFragmentFromUrl(url);
|
|
120
117
|
this._resourceType = resourceType;
|
|
@@ -122,55 +119,49 @@ class Request extends _instrumentation.SdkObject {
|
|
|
122
119
|
this._postData = postData;
|
|
123
120
|
this._headers = headers;
|
|
124
121
|
this._updateHeadersMap();
|
|
125
|
-
this._isFavicon = url.endsWith(
|
|
122
|
+
this._isFavicon = url.endsWith("/favicon.ico") || !!redirectedFrom?._isFavicon;
|
|
126
123
|
}
|
|
127
124
|
_setFailureText(failureText) {
|
|
128
125
|
this._failureText = failureText;
|
|
129
126
|
this._waitForResponsePromise.resolve(null);
|
|
130
127
|
}
|
|
131
|
-
|
|
132
|
-
this._overrides = overrides;
|
|
128
|
+
_applyOverrides(overrides) {
|
|
129
|
+
this._overrides = { ...this._overrides, ...overrides };
|
|
133
130
|
this._updateHeadersMap();
|
|
131
|
+
return this._overrides;
|
|
134
132
|
}
|
|
135
133
|
_updateHeadersMap() {
|
|
136
|
-
for (const {
|
|
137
|
-
name,
|
|
138
|
-
value
|
|
139
|
-
} of this.headers()) this._headersMap.set(name.toLowerCase(), value);
|
|
134
|
+
for (const { name, value } of this.headers())
|
|
135
|
+
this._headersMap.set(name.toLowerCase(), value);
|
|
140
136
|
}
|
|
141
|
-
|
|
142
|
-
return
|
|
137
|
+
overrides() {
|
|
138
|
+
return this._overrides;
|
|
143
139
|
}
|
|
144
140
|
url() {
|
|
145
|
-
|
|
146
|
-
return ((_this$_overrides = this._overrides) === null || _this$_overrides === void 0 ? void 0 : _this$_overrides.url) || this._url;
|
|
141
|
+
return this._overrides?.url || this._url;
|
|
147
142
|
}
|
|
148
143
|
resourceType() {
|
|
149
144
|
return this._resourceType;
|
|
150
145
|
}
|
|
151
146
|
method() {
|
|
152
|
-
|
|
153
|
-
return ((_this$_overrides2 = this._overrides) === null || _this$_overrides2 === void 0 ? void 0 : _this$_overrides2.method) || this._method;
|
|
147
|
+
return this._overrides?.method || this._method;
|
|
154
148
|
}
|
|
155
149
|
postDataBuffer() {
|
|
156
|
-
|
|
157
|
-
return ((_this$_overrides3 = this._overrides) === null || _this$_overrides3 === void 0 ? void 0 : _this$_overrides3.postData) || this._postData;
|
|
150
|
+
return this._overrides?.postData || this._postData;
|
|
158
151
|
}
|
|
159
152
|
headers() {
|
|
160
|
-
|
|
161
|
-
return ((_this$_overrides4 = this._overrides) === null || _this$_overrides4 === void 0 ? void 0 : _this$_overrides4.headers) || this._headers;
|
|
153
|
+
return this._overrides?.headers || this._headers;
|
|
162
154
|
}
|
|
163
155
|
headerValue(name) {
|
|
164
156
|
return this._headersMap.get(name);
|
|
165
157
|
}
|
|
166
|
-
|
|
167
158
|
// "null" means no raw headers available - we'll use provisional headers as raw headers.
|
|
168
159
|
setRawRequestHeaders(headers) {
|
|
169
|
-
if (!this._rawRequestHeadersPromise.isDone())
|
|
160
|
+
if (!this._rawRequestHeadersPromise.isDone())
|
|
161
|
+
this._rawRequestHeadersPromise.resolve(headers || this._headers);
|
|
170
162
|
}
|
|
171
163
|
async rawRequestHeaders() {
|
|
172
|
-
|
|
173
|
-
return ((_this$_overrides5 = this._overrides) === null || _this$_overrides5 === void 0 ? void 0 : _this$_overrides5.headers) || this._rawRequestHeadersPromise;
|
|
164
|
+
return this._overrides?.headers || this._rawRequestHeadersPromise;
|
|
174
165
|
}
|
|
175
166
|
response() {
|
|
176
167
|
return this._waitForResponsePromise;
|
|
@@ -198,158 +189,163 @@ class Request extends _instrumentation.SdkObject {
|
|
|
198
189
|
return this._redirectedFrom;
|
|
199
190
|
}
|
|
200
191
|
failure() {
|
|
201
|
-
if (this._failureText === null)
|
|
192
|
+
if (this._failureText === null)
|
|
193
|
+
return null;
|
|
202
194
|
return {
|
|
203
195
|
errorText: this._failureText
|
|
204
196
|
};
|
|
205
197
|
}
|
|
206
|
-
|
|
207
198
|
// TODO(bidi): remove once post body is available.
|
|
208
199
|
_setBodySize(size) {
|
|
209
200
|
this._bodySize = size;
|
|
210
201
|
}
|
|
211
202
|
bodySize() {
|
|
212
|
-
|
|
213
|
-
return this._bodySize || ((_this$postDataBuffer = this.postDataBuffer()) === null || _this$postDataBuffer === void 0 ? void 0 : _this$postDataBuffer.length) || 0;
|
|
203
|
+
return this._bodySize || this.postDataBuffer()?.length || 0;
|
|
214
204
|
}
|
|
215
205
|
async requestHeadersSize() {
|
|
216
|
-
let headersSize = 4;
|
|
206
|
+
let headersSize = 4;
|
|
217
207
|
headersSize += this.method().length;
|
|
218
208
|
headersSize += new URL(this.url()).pathname.length;
|
|
219
|
-
headersSize += 8;
|
|
209
|
+
headersSize += 8;
|
|
220
210
|
const headers = await this.rawRequestHeaders();
|
|
221
|
-
for (const header of headers)
|
|
211
|
+
for (const header of headers)
|
|
212
|
+
headersSize += header.name.length + header.value.length + 4;
|
|
222
213
|
return headersSize;
|
|
223
214
|
}
|
|
224
215
|
}
|
|
225
|
-
|
|
226
|
-
class Route extends _instrumentation.SdkObject {
|
|
216
|
+
class Route extends import_instrumentation.SdkObject {
|
|
227
217
|
constructor(request, delegate) {
|
|
228
|
-
super(request._frame || request._context,
|
|
229
|
-
this._request = void 0;
|
|
230
|
-
this._delegate = void 0;
|
|
218
|
+
super(request._frame || request._context, "route");
|
|
231
219
|
this._handled = false;
|
|
220
|
+
this._futureHandlers = [];
|
|
232
221
|
this._request = request;
|
|
233
222
|
this._delegate = delegate;
|
|
234
223
|
this._request._context.addRouteInFlight(this);
|
|
235
224
|
}
|
|
225
|
+
handle(handlers) {
|
|
226
|
+
this._futureHandlers = [...handlers];
|
|
227
|
+
this.continue({ isFallback: true }).catch(() => {
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
async removeHandler(handler) {
|
|
231
|
+
this._futureHandlers = this._futureHandlers.filter((h) => h !== handler);
|
|
232
|
+
if (handler === this._currentHandler) {
|
|
233
|
+
await this.continue({ isFallback: true }).catch(() => {
|
|
234
|
+
});
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
236
238
|
request() {
|
|
237
239
|
return this._request;
|
|
238
240
|
}
|
|
239
|
-
async abort(errorCode =
|
|
241
|
+
async abort(errorCode = "failed") {
|
|
240
242
|
this._startHandling();
|
|
241
|
-
this._request._context.emit(
|
|
243
|
+
this._request._context.emit(import_browserContext.BrowserContext.Events.RequestAborted, this._request);
|
|
242
244
|
await this._delegate.abort(errorCode);
|
|
243
245
|
this._endHandling();
|
|
244
246
|
}
|
|
245
|
-
|
|
247
|
+
redirectNavigationRequest(url) {
|
|
246
248
|
this._startHandling();
|
|
247
|
-
(0,
|
|
248
|
-
this._request.frame().redirectNavigation(url, this._request._documentId, this._request.headerValue(
|
|
249
|
+
(0, import_utils.assert)(this._request.isNavigationRequest());
|
|
250
|
+
this._request.frame().redirectNavigation(url, this._request._documentId, this._request.headerValue("referer"));
|
|
251
|
+
this._endHandling();
|
|
249
252
|
}
|
|
250
253
|
async fulfill(overrides) {
|
|
251
254
|
this._startHandling();
|
|
252
255
|
let body = overrides.body;
|
|
253
256
|
let isBase64 = overrides.isBase64 || false;
|
|
254
|
-
if (body ===
|
|
257
|
+
if (body === void 0) {
|
|
255
258
|
if (overrides.fetchResponseUid) {
|
|
256
|
-
const buffer = this._request._context.fetchRequest.fetchResponses.get(overrides.fetchResponseUid) ||
|
|
257
|
-
(0,
|
|
258
|
-
body = buffer.toString(
|
|
259
|
+
const buffer = this._request._context.fetchRequest.fetchResponses.get(overrides.fetchResponseUid) || import_fetch.APIRequestContext.findResponseBody(overrides.fetchResponseUid);
|
|
260
|
+
(0, import_utils.assert)(buffer, "Fetch response has been disposed");
|
|
261
|
+
body = buffer.toString("base64");
|
|
259
262
|
isBase64 = true;
|
|
260
263
|
} else {
|
|
261
|
-
body =
|
|
264
|
+
body = "";
|
|
262
265
|
isBase64 = false;
|
|
263
266
|
}
|
|
264
267
|
}
|
|
265
|
-
const headers = [...
|
|
268
|
+
const headers = [...overrides.headers || []];
|
|
266
269
|
this._maybeAddCorsHeaders(headers);
|
|
267
|
-
this._request._context.emit(
|
|
270
|
+
this._request._context.emit(import_browserContext.BrowserContext.Events.RequestFulfilled, this._request);
|
|
268
271
|
await this._delegate.fulfill({
|
|
269
272
|
status: overrides.status || 200,
|
|
270
273
|
headers,
|
|
271
|
-
body
|
|
274
|
+
body,
|
|
272
275
|
isBase64
|
|
273
276
|
});
|
|
274
277
|
this._endHandling();
|
|
275
278
|
}
|
|
276
|
-
|
|
277
279
|
// See https://github.com/microsoft/playwright/issues/12929
|
|
278
280
|
_maybeAddCorsHeaders(headers) {
|
|
279
|
-
const origin = this._request.headerValue(
|
|
280
|
-
if (!origin)
|
|
281
|
+
const origin = this._request.headerValue("origin");
|
|
282
|
+
if (!origin)
|
|
283
|
+
return;
|
|
281
284
|
const requestUrl = new URL(this._request.url());
|
|
282
|
-
if (!requestUrl.protocol.startsWith(
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}) => name ===
|
|
287
|
-
if (corsHeader)
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
});
|
|
292
|
-
headers.push({
|
|
293
|
-
name: 'access-control-allow-credentials',
|
|
294
|
-
value: 'true'
|
|
295
|
-
});
|
|
296
|
-
headers.push({
|
|
297
|
-
name: 'vary',
|
|
298
|
-
value: 'Origin'
|
|
299
|
-
});
|
|
285
|
+
if (!requestUrl.protocol.startsWith("http"))
|
|
286
|
+
return;
|
|
287
|
+
if (requestUrl.origin === origin.trim())
|
|
288
|
+
return;
|
|
289
|
+
const corsHeader = headers.find(({ name }) => name === "access-control-allow-origin");
|
|
290
|
+
if (corsHeader)
|
|
291
|
+
return;
|
|
292
|
+
headers.push({ name: "access-control-allow-origin", value: origin });
|
|
293
|
+
headers.push({ name: "access-control-allow-credentials", value: "true" });
|
|
294
|
+
headers.push({ name: "vary", value: "Origin" });
|
|
300
295
|
}
|
|
301
296
|
async continue(overrides) {
|
|
302
|
-
this._startHandling();
|
|
303
297
|
if (overrides.url) {
|
|
304
298
|
const newUrl = new URL(overrides.url);
|
|
305
299
|
const oldUrl = new URL(this._request.url());
|
|
306
|
-
if (oldUrl.protocol !== newUrl.protocol)
|
|
300
|
+
if (oldUrl.protocol !== newUrl.protocol)
|
|
301
|
+
throw new Error("New URL must have same protocol as overridden URL");
|
|
302
|
+
}
|
|
303
|
+
if (overrides.headers)
|
|
304
|
+
overrides.headers = overrides.headers?.filter((header) => header.name.toLowerCase() !== "cookie");
|
|
305
|
+
overrides = this._request._applyOverrides(overrides);
|
|
306
|
+
const nextHandler = this._futureHandlers.shift();
|
|
307
|
+
if (nextHandler) {
|
|
308
|
+
this._currentHandler = nextHandler;
|
|
309
|
+
nextHandler(this, this._request);
|
|
310
|
+
return;
|
|
307
311
|
}
|
|
308
|
-
|
|
309
|
-
|
|
312
|
+
if (!overrides.isFallback)
|
|
313
|
+
this._request._context.emit(import_browserContext.BrowserContext.Events.RequestContinued, this._request);
|
|
314
|
+
this._startHandling();
|
|
310
315
|
await this._delegate.continue(overrides);
|
|
311
316
|
this._endHandling();
|
|
312
317
|
}
|
|
313
318
|
_startHandling() {
|
|
314
|
-
(0,
|
|
319
|
+
(0, import_utils.assert)(!this._handled, "Route is already handled!");
|
|
315
320
|
this._handled = true;
|
|
321
|
+
this._currentHandler = void 0;
|
|
316
322
|
}
|
|
317
323
|
_endHandling() {
|
|
324
|
+
this._futureHandlers = [];
|
|
325
|
+
this._currentHandler = void 0;
|
|
318
326
|
this._request._context.removeRouteInFlight(this);
|
|
319
327
|
}
|
|
320
328
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
super(request.frame() || request._context, 'response');
|
|
325
|
-
this._request = void 0;
|
|
329
|
+
class Response extends import_instrumentation.SdkObject {
|
|
330
|
+
constructor(request, status, statusText2, headers, timing, getResponseBodyCallback, fromServiceWorker, httpVersion) {
|
|
331
|
+
super(request.frame() || request._context, "response");
|
|
326
332
|
this._contentPromise = null;
|
|
327
|
-
this._finishedPromise = new
|
|
328
|
-
this.
|
|
329
|
-
this.
|
|
330
|
-
this.
|
|
331
|
-
this.
|
|
332
|
-
this.
|
|
333
|
-
this.
|
|
334
|
-
this.
|
|
335
|
-
this._serverAddrPromise = new _manualPromise.ManualPromise();
|
|
336
|
-
this._securityDetailsPromise = new _manualPromise.ManualPromise();
|
|
337
|
-
this._rawResponseHeadersPromise = new _manualPromise.ManualPromise();
|
|
338
|
-
this._httpVersion = void 0;
|
|
339
|
-
this._fromServiceWorker = void 0;
|
|
340
|
-
this._encodedBodySizePromise = new _manualPromise.ManualPromise();
|
|
341
|
-
this._transferSizePromise = new _manualPromise.ManualPromise();
|
|
342
|
-
this._responseHeadersSizePromise = new _manualPromise.ManualPromise();
|
|
333
|
+
this._finishedPromise = new import_manualPromise.ManualPromise();
|
|
334
|
+
this._headersMap = /* @__PURE__ */ new Map();
|
|
335
|
+
this._serverAddrPromise = new import_manualPromise.ManualPromise();
|
|
336
|
+
this._securityDetailsPromise = new import_manualPromise.ManualPromise();
|
|
337
|
+
this._rawResponseHeadersPromise = new import_manualPromise.ManualPromise();
|
|
338
|
+
this._encodedBodySizePromise = new import_manualPromise.ManualPromise();
|
|
339
|
+
this._transferSizePromise = new import_manualPromise.ManualPromise();
|
|
340
|
+
this._responseHeadersSizePromise = new import_manualPromise.ManualPromise();
|
|
343
341
|
this._request = request;
|
|
344
342
|
this._timing = timing;
|
|
345
343
|
this._status = status;
|
|
346
|
-
this._statusText =
|
|
344
|
+
this._statusText = statusText2;
|
|
347
345
|
this._url = request.url();
|
|
348
346
|
this._headers = headers;
|
|
349
|
-
for (const {
|
|
350
|
-
name,
|
|
351
|
-
value
|
|
352
|
-
} of this._headers) this._headersMap.set(name.toLowerCase(), value);
|
|
347
|
+
for (const { name, value } of this._headers)
|
|
348
|
+
this._headersMap.set(name.toLowerCase(), value);
|
|
353
349
|
this._getResponseBodyCallback = getResponseBodyCallback;
|
|
354
350
|
this._request._setResponse(this);
|
|
355
351
|
this._httpVersion = httpVersion;
|
|
@@ -363,8 +359,8 @@ class Response extends _instrumentation.SdkObject {
|
|
|
363
359
|
}
|
|
364
360
|
_requestFinished(responseEndTiming) {
|
|
365
361
|
this._request._responseEndTiming = Math.max(responseEndTiming, this._timing.responseStart);
|
|
366
|
-
|
|
367
|
-
|
|
362
|
+
if (this._timing.requestStart === -1)
|
|
363
|
+
this._timing.requestStart = this._request._responseEndTiming;
|
|
368
364
|
this._finishedPromise.resolve();
|
|
369
365
|
}
|
|
370
366
|
_setHttpVersion(httpVersion) {
|
|
@@ -388,10 +384,10 @@ class Response extends _instrumentation.SdkObject {
|
|
|
388
384
|
async rawResponseHeaders() {
|
|
389
385
|
return this._rawResponseHeadersPromise;
|
|
390
386
|
}
|
|
391
|
-
|
|
392
387
|
// "null" means no raw headers available - we'll use provisional headers as raw headers.
|
|
393
388
|
setRawResponseHeaders(headers) {
|
|
394
|
-
if (!this._rawResponseHeadersPromise.isDone())
|
|
389
|
+
if (!this._rawResponseHeadersPromise.isDone())
|
|
390
|
+
this._rawResponseHeadersPromise.resolve(headers || this._headers);
|
|
395
391
|
}
|
|
396
392
|
setTransferSize(size) {
|
|
397
393
|
this._transferSizePromise.resolve(size);
|
|
@@ -406,15 +402,16 @@ class Response extends _instrumentation.SdkObject {
|
|
|
406
402
|
return this._timing;
|
|
407
403
|
}
|
|
408
404
|
async serverAddr() {
|
|
409
|
-
return
|
|
405
|
+
return await this._serverAddrPromise || null;
|
|
410
406
|
}
|
|
411
407
|
async securityDetails() {
|
|
412
|
-
return
|
|
408
|
+
return await this._securityDetailsPromise || null;
|
|
413
409
|
}
|
|
414
410
|
body() {
|
|
415
411
|
if (!this._contentPromise) {
|
|
416
412
|
this._contentPromise = this._finishedPromise.then(async () => {
|
|
417
|
-
if (this._status >= 300 && this._status <= 399)
|
|
413
|
+
if (this._status >= 300 && this._status <= 399)
|
|
414
|
+
throw new Error("Response body is unavailable for redirect responses");
|
|
418
415
|
return this._getResponseBodyCallback();
|
|
419
416
|
});
|
|
420
417
|
}
|
|
@@ -427,9 +424,12 @@ class Response extends _instrumentation.SdkObject {
|
|
|
427
424
|
return this._request.frame();
|
|
428
425
|
}
|
|
429
426
|
httpVersion() {
|
|
430
|
-
if (!this._httpVersion)
|
|
431
|
-
|
|
432
|
-
if (this._httpVersion ===
|
|
427
|
+
if (!this._httpVersion)
|
|
428
|
+
return "HTTP/1.1";
|
|
429
|
+
if (this._httpVersion === "http/1.1")
|
|
430
|
+
return "HTTP/1.1";
|
|
431
|
+
if (this._httpVersion === "h2")
|
|
432
|
+
return "HTTP/2.0";
|
|
433
433
|
return this._httpVersion;
|
|
434
434
|
}
|
|
435
435
|
fromServiceWorker() {
|
|
@@ -437,16 +437,16 @@ class Response extends _instrumentation.SdkObject {
|
|
|
437
437
|
}
|
|
438
438
|
async responseHeadersSize() {
|
|
439
439
|
const availableSize = await this._responseHeadersSizePromise;
|
|
440
|
-
if (availableSize !== null)
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
headersSize +=
|
|
445
|
-
headersSize += 3; // statusCode;
|
|
440
|
+
if (availableSize !== null)
|
|
441
|
+
return availableSize;
|
|
442
|
+
let headersSize = 4;
|
|
443
|
+
headersSize += 8;
|
|
444
|
+
headersSize += 3;
|
|
446
445
|
headersSize += this.statusText().length;
|
|
447
446
|
const headers = await this._rawResponseHeadersPromise;
|
|
448
|
-
for (const header of headers)
|
|
449
|
-
|
|
447
|
+
for (const header of headers)
|
|
448
|
+
headersSize += header.name.length + header.value.length + 4;
|
|
449
|
+
headersSize += 2;
|
|
450
450
|
return headersSize;
|
|
451
451
|
}
|
|
452
452
|
async sizes() {
|
|
@@ -454,15 +454,12 @@ class Response extends _instrumentation.SdkObject {
|
|
|
454
454
|
const responseHeadersSize = await this.responseHeadersSize();
|
|
455
455
|
let encodedBodySize = await this._encodedBodySizePromise;
|
|
456
456
|
if (encodedBodySize === null) {
|
|
457
|
-
var _headers$find;
|
|
458
|
-
// Fallback to calculating it manually.
|
|
459
457
|
const headers = await this._rawResponseHeadersPromise;
|
|
460
|
-
const contentLength =
|
|
458
|
+
const contentLength = headers.find((h) => h.name.toLowerCase() === "content-length")?.value;
|
|
461
459
|
encodedBodySize = contentLength ? +contentLength : 0;
|
|
462
460
|
}
|
|
463
461
|
let transferSize = await this._transferSizePromise;
|
|
464
462
|
if (transferSize === null) {
|
|
465
|
-
// Fallback to calculating it manually.
|
|
466
463
|
transferSize = responseHeadersSize + encodedBodySize;
|
|
467
464
|
}
|
|
468
465
|
return {
|
|
@@ -474,19 +471,23 @@ class Response extends _instrumentation.SdkObject {
|
|
|
474
471
|
};
|
|
475
472
|
}
|
|
476
473
|
}
|
|
477
|
-
|
|
478
|
-
class WebSocket extends _instrumentation.SdkObject {
|
|
474
|
+
class WebSocket extends import_instrumentation.SdkObject {
|
|
479
475
|
constructor(parent, url) {
|
|
480
|
-
super(parent,
|
|
481
|
-
this._url = void 0;
|
|
476
|
+
super(parent, "ws");
|
|
482
477
|
this._notified = false;
|
|
483
478
|
this._url = url;
|
|
484
479
|
}
|
|
480
|
+
static {
|
|
481
|
+
this.Events = {
|
|
482
|
+
Close: "close",
|
|
483
|
+
SocketError: "socketerror",
|
|
484
|
+
FrameReceived: "framereceived",
|
|
485
|
+
FrameSent: "framesent"
|
|
486
|
+
};
|
|
487
|
+
}
|
|
485
488
|
markAsNotified() {
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
// Or maybe the handshake response was a redirect?
|
|
489
|
-
if (this._notified) return false;
|
|
489
|
+
if (this._notified)
|
|
490
|
+
return false;
|
|
490
491
|
this._notified = true;
|
|
491
492
|
return true;
|
|
492
493
|
}
|
|
@@ -494,16 +495,10 @@ class WebSocket extends _instrumentation.SdkObject {
|
|
|
494
495
|
return this._url;
|
|
495
496
|
}
|
|
496
497
|
frameSent(opcode, data) {
|
|
497
|
-
this.emit(WebSocket.Events.FrameSent, {
|
|
498
|
-
opcode,
|
|
499
|
-
data
|
|
500
|
-
});
|
|
498
|
+
this.emit(WebSocket.Events.FrameSent, { opcode, data });
|
|
501
499
|
}
|
|
502
500
|
frameReceived(opcode, data) {
|
|
503
|
-
this.emit(WebSocket.Events.FrameReceived, {
|
|
504
|
-
opcode,
|
|
505
|
-
data
|
|
506
|
-
});
|
|
501
|
+
this.emit(WebSocket.Events.FrameReceived, { opcode, data });
|
|
507
502
|
}
|
|
508
503
|
error(errorMessage) {
|
|
509
504
|
this.emit(WebSocket.Events.SocketError, errorMessage);
|
|
@@ -512,106 +507,107 @@ class WebSocket extends _instrumentation.SdkObject {
|
|
|
512
507
|
this.emit(WebSocket.Events.Close);
|
|
513
508
|
}
|
|
514
509
|
}
|
|
515
|
-
exports.WebSocket = WebSocket;
|
|
516
|
-
WebSocket.Events = {
|
|
517
|
-
Close: 'close',
|
|
518
|
-
SocketError: 'socketerror',
|
|
519
|
-
FrameReceived: 'framereceived',
|
|
520
|
-
FrameSent: 'framesent'
|
|
521
|
-
};
|
|
522
|
-
// List taken from https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml with extra 306 and 418 codes.
|
|
523
510
|
const STATUS_TEXTS = {
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
511
|
+
"100": "Continue",
|
|
512
|
+
"101": "Switching Protocols",
|
|
513
|
+
"102": "Processing",
|
|
514
|
+
"103": "Early Hints",
|
|
515
|
+
"200": "OK",
|
|
516
|
+
"201": "Created",
|
|
517
|
+
"202": "Accepted",
|
|
518
|
+
"203": "Non-Authoritative Information",
|
|
519
|
+
"204": "No Content",
|
|
520
|
+
"205": "Reset Content",
|
|
521
|
+
"206": "Partial Content",
|
|
522
|
+
"207": "Multi-Status",
|
|
523
|
+
"208": "Already Reported",
|
|
524
|
+
"226": "IM Used",
|
|
525
|
+
"300": "Multiple Choices",
|
|
526
|
+
"301": "Moved Permanently",
|
|
527
|
+
"302": "Found",
|
|
528
|
+
"303": "See Other",
|
|
529
|
+
"304": "Not Modified",
|
|
530
|
+
"305": "Use Proxy",
|
|
531
|
+
"306": "Switch Proxy",
|
|
532
|
+
"307": "Temporary Redirect",
|
|
533
|
+
"308": "Permanent Redirect",
|
|
534
|
+
"400": "Bad Request",
|
|
535
|
+
"401": "Unauthorized",
|
|
536
|
+
"402": "Payment Required",
|
|
537
|
+
"403": "Forbidden",
|
|
538
|
+
"404": "Not Found",
|
|
539
|
+
"405": "Method Not Allowed",
|
|
540
|
+
"406": "Not Acceptable",
|
|
541
|
+
"407": "Proxy Authentication Required",
|
|
542
|
+
"408": "Request Timeout",
|
|
543
|
+
"409": "Conflict",
|
|
544
|
+
"410": "Gone",
|
|
545
|
+
"411": "Length Required",
|
|
546
|
+
"412": "Precondition Failed",
|
|
547
|
+
"413": "Payload Too Large",
|
|
548
|
+
"414": "URI Too Long",
|
|
549
|
+
"415": "Unsupported Media Type",
|
|
550
|
+
"416": "Range Not Satisfiable",
|
|
551
|
+
"417": "Expectation Failed",
|
|
552
|
+
"418": "I'm a teapot",
|
|
553
|
+
"421": "Misdirected Request",
|
|
554
|
+
"422": "Unprocessable Entity",
|
|
555
|
+
"423": "Locked",
|
|
556
|
+
"424": "Failed Dependency",
|
|
557
|
+
"425": "Too Early",
|
|
558
|
+
"426": "Upgrade Required",
|
|
559
|
+
"428": "Precondition Required",
|
|
560
|
+
"429": "Too Many Requests",
|
|
561
|
+
"431": "Request Header Fields Too Large",
|
|
562
|
+
"451": "Unavailable For Legal Reasons",
|
|
563
|
+
"500": "Internal Server Error",
|
|
564
|
+
"501": "Not Implemented",
|
|
565
|
+
"502": "Bad Gateway",
|
|
566
|
+
"503": "Service Unavailable",
|
|
567
|
+
"504": "Gateway Timeout",
|
|
568
|
+
"505": "HTTP Version Not Supported",
|
|
569
|
+
"506": "Variant Also Negotiates",
|
|
570
|
+
"507": "Insufficient Storage",
|
|
571
|
+
"508": "Loop Detected",
|
|
572
|
+
"510": "Not Extended",
|
|
573
|
+
"511": "Network Authentication Required"
|
|
587
574
|
};
|
|
588
575
|
function statusText(status) {
|
|
589
|
-
return STATUS_TEXTS[String(status)] ||
|
|
576
|
+
return STATUS_TEXTS[String(status)] || "Unknown";
|
|
590
577
|
}
|
|
591
578
|
function singleHeader(name, value) {
|
|
592
|
-
return [{
|
|
593
|
-
name,
|
|
594
|
-
value
|
|
595
|
-
}];
|
|
579
|
+
return [{ name, value }];
|
|
596
580
|
}
|
|
597
581
|
function mergeHeaders(headers) {
|
|
598
|
-
const lowerCaseToValue = new Map();
|
|
599
|
-
const lowerCaseToOriginalCase = new Map();
|
|
582
|
+
const lowerCaseToValue = /* @__PURE__ */ new Map();
|
|
583
|
+
const lowerCaseToOriginalCase = /* @__PURE__ */ new Map();
|
|
600
584
|
for (const h of headers) {
|
|
601
|
-
if (!h)
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
value
|
|
605
|
-
} of h) {
|
|
585
|
+
if (!h)
|
|
586
|
+
continue;
|
|
587
|
+
for (const { name, value } of h) {
|
|
606
588
|
const lower = name.toLowerCase();
|
|
607
589
|
lowerCaseToOriginalCase.set(lower, name);
|
|
608
590
|
lowerCaseToValue.set(lower, value);
|
|
609
591
|
}
|
|
610
592
|
}
|
|
611
593
|
const result = [];
|
|
612
|
-
for (const [lower, value] of lowerCaseToValue)
|
|
613
|
-
name: lowerCaseToOriginalCase.get(lower),
|
|
614
|
-
value
|
|
615
|
-
});
|
|
594
|
+
for (const [lower, value] of lowerCaseToValue)
|
|
595
|
+
result.push({ name: lowerCaseToOriginalCase.get(lower), value });
|
|
616
596
|
return result;
|
|
617
|
-
}
|
|
597
|
+
}
|
|
598
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
599
|
+
0 && (module.exports = {
|
|
600
|
+
Request,
|
|
601
|
+
Response,
|
|
602
|
+
Route,
|
|
603
|
+
WebSocket,
|
|
604
|
+
filterCookies,
|
|
605
|
+
isLocalHostname,
|
|
606
|
+
kMaxCookieExpiresDateInSeconds,
|
|
607
|
+
mergeHeaders,
|
|
608
|
+
parseURL,
|
|
609
|
+
rewriteCookies,
|
|
610
|
+
singleHeader,
|
|
611
|
+
statusText,
|
|
612
|
+
stripFragmentFromUrl
|
|
613
|
+
});
|