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