patchright-core 1.51.3 → 1.52.1
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 +56 -71
- 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 +371 -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 +284 -404
- 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 +221 -112
- package/lib/server/frames.js +731 -894
- 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 +326 -423
- 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 +86 -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-CXVeovup.js} +1 -1
- package/lib/vite/recorder/assets/index-BsWQsSGl.js +184 -0
- package/lib/vite/recorder/index.html +1 -1
- package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-_GLjJL-7.js} +1 -1
- package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +265 -0
- package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
- package/lib/vite/traceViewer/index.cFZzK9RN.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.XVPIqBeS.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +3 -3
- 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-l0TyP_G8.js +0 -259
- package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
- package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
package/lib/server/transport.js
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
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 transport_exports = {};
|
|
20
|
+
__export(transport_exports, {
|
|
21
|
+
WebSocketTransport: () => WebSocketTransport,
|
|
22
|
+
perMessageDeflate: () => perMessageDeflate
|
|
5
23
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
* Copyright 2018 Google Inc. All rights reserved.
|
|
12
|
-
* Modifications copyright (c) Microsoft Corporation.
|
|
13
|
-
*
|
|
14
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15
|
-
* you may not use this file except in compliance with the License.
|
|
16
|
-
* You may obtain a copy of the License at
|
|
17
|
-
*
|
|
18
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
19
|
-
*
|
|
20
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
21
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
22
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
23
|
-
* See the License for the specific language governing permissions and
|
|
24
|
-
* limitations under the License.
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
-
const perMessageDeflate = exports.perMessageDeflate = {
|
|
24
|
+
module.exports = __toCommonJS(transport_exports);
|
|
25
|
+
var import_utils = require("../utils");
|
|
26
|
+
var import_happyEyeballs = require("./utils/happyEyeballs");
|
|
27
|
+
var import_utilsBundle = require("../utilsBundle");
|
|
28
|
+
const perMessageDeflate = {
|
|
28
29
|
clientNoContextTakeover: true,
|
|
29
30
|
zlibDeflateOptions: {
|
|
30
31
|
level: 3
|
|
@@ -35,158 +36,148 @@ const perMessageDeflate = exports.perMessageDeflate = {
|
|
|
35
36
|
threshold: 10 * 1024
|
|
36
37
|
};
|
|
37
38
|
class WebSocketTransport {
|
|
38
|
-
|
|
39
|
-
return await WebSocketTransport._connect(progress, url, headers || {}, {
|
|
40
|
-
follow: !!followRedirects,
|
|
41
|
-
hadRedirects: false
|
|
42
|
-
}, debugLogHeader);
|
|
43
|
-
}
|
|
44
|
-
static async _connect(progress, url, headers, redirect, debugLogHeader) {
|
|
45
|
-
const logUrl = stripQueryParams(url);
|
|
46
|
-
progress === null || progress === void 0 || progress.log(`<ws connecting> ${logUrl}`);
|
|
47
|
-
const transport = new WebSocketTransport(progress, url, logUrl, headers, redirect.follow && redirect.hadRedirects, debugLogHeader);
|
|
48
|
-
let success = false;
|
|
49
|
-
progress === null || progress === void 0 || progress.cleanupWhenAborted(async () => {
|
|
50
|
-
if (!success) await transport.closeAndWait().catch(e => null);
|
|
51
|
-
});
|
|
52
|
-
const result = await new Promise((fulfill, reject) => {
|
|
53
|
-
transport._ws.on('open', async () => {
|
|
54
|
-
progress === null || progress === void 0 || progress.log(`<ws connected> ${logUrl}`);
|
|
55
|
-
fulfill({
|
|
56
|
-
transport
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
transport._ws.on('error', event => {
|
|
60
|
-
progress === null || progress === void 0 || progress.log(`<ws connect error> ${logUrl} ${event.message}`);
|
|
61
|
-
reject(new Error('WebSocket error: ' + event.message));
|
|
62
|
-
transport._ws.close();
|
|
63
|
-
});
|
|
64
|
-
transport._ws.on('unexpected-response', (request, response) => {
|
|
65
|
-
if (redirect.follow && !redirect.hadRedirects && (response.statusCode === 301 || response.statusCode === 302 || response.statusCode === 307 || response.statusCode === 308)) {
|
|
66
|
-
fulfill({
|
|
67
|
-
redirect: response
|
|
68
|
-
});
|
|
69
|
-
transport._ws.close();
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
for (let i = 0; i < response.rawHeaders.length; i += 2) {
|
|
73
|
-
if (debugLogHeader && response.rawHeaders[i] === debugLogHeader) progress === null || progress === void 0 || progress.log(response.rawHeaders[i + 1]);
|
|
74
|
-
}
|
|
75
|
-
const chunks = [];
|
|
76
|
-
const errorPrefix = `${logUrl} ${response.statusCode} ${response.statusMessage}`;
|
|
77
|
-
response.on('data', chunk => chunks.push(chunk));
|
|
78
|
-
response.on('close', () => {
|
|
79
|
-
const error = chunks.length ? `${errorPrefix}\n${Buffer.concat(chunks)}` : errorPrefix;
|
|
80
|
-
progress === null || progress === void 0 || progress.log(`<ws unexpected response> ${error}`);
|
|
81
|
-
reject(new Error('WebSocket error: ' + error));
|
|
82
|
-
transport._ws.close();
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
if (result.redirect) {
|
|
87
|
-
// Strip authorization headers from the redirected request.
|
|
88
|
-
const newHeaders = Object.fromEntries(Object.entries(headers || {}).filter(([name]) => {
|
|
89
|
-
return !name.includes('access-key') && name.toLowerCase() !== 'authorization';
|
|
90
|
-
}));
|
|
91
|
-
return WebSocketTransport._connect(progress, result.redirect.headers.location, newHeaders, {
|
|
92
|
-
follow: true,
|
|
93
|
-
hadRedirects: true
|
|
94
|
-
}, debugLogHeader);
|
|
95
|
-
}
|
|
96
|
-
success = true;
|
|
97
|
-
return transport;
|
|
98
|
-
}
|
|
99
|
-
constructor(progress, url, logUrl, headers, followRedirects, debugLogHeader) {
|
|
100
|
-
var _progress$timeUntilDe;
|
|
101
|
-
this._ws = void 0;
|
|
102
|
-
this._progress = void 0;
|
|
103
|
-
this._logUrl = void 0;
|
|
104
|
-
this.onmessage = void 0;
|
|
105
|
-
this.onclose = void 0;
|
|
106
|
-
this.wsEndpoint = void 0;
|
|
39
|
+
constructor(progress, url, logUrl, options) {
|
|
107
40
|
this.headers = [];
|
|
108
41
|
this.wsEndpoint = url;
|
|
109
42
|
this._logUrl = logUrl;
|
|
110
|
-
this._ws = new
|
|
43
|
+
this._ws = new import_utilsBundle.ws(url, [], {
|
|
111
44
|
maxPayload: 256 * 1024 * 1024,
|
|
112
45
|
// 256Mb,
|
|
113
46
|
// Prevent internal http client error when passing negative timeout.
|
|
114
|
-
handshakeTimeout: Math.max(
|
|
115
|
-
headers,
|
|
116
|
-
followRedirects,
|
|
117
|
-
agent: /^(https|wss):\/\//.test(url) ?
|
|
47
|
+
handshakeTimeout: Math.max(progress?.timeUntilDeadline() ?? 3e4, 1),
|
|
48
|
+
headers: options.headers,
|
|
49
|
+
followRedirects: options.followRedirects,
|
|
50
|
+
agent: /^(https|wss):\/\//.test(url) ? import_happyEyeballs.httpsHappyEyeballsAgent : import_happyEyeballs.httpHappyEyeballsAgent,
|
|
118
51
|
perMessageDeflate
|
|
119
52
|
});
|
|
120
|
-
this._ws.on(
|
|
53
|
+
this._ws.on("upgrade", (response) => {
|
|
121
54
|
for (let i = 0; i < response.rawHeaders.length; i += 2) {
|
|
122
|
-
this.headers.push({
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
if (debugLogHeader && response.rawHeaders[i] === debugLogHeader) progress === null || progress === void 0 || progress.log(response.rawHeaders[i + 1]);
|
|
55
|
+
this.headers.push({ name: response.rawHeaders[i], value: response.rawHeaders[i + 1] });
|
|
56
|
+
if (options.debugLogHeader && response.rawHeaders[i] === options.debugLogHeader)
|
|
57
|
+
progress?.log(response.rawHeaders[i + 1]);
|
|
127
58
|
}
|
|
128
59
|
});
|
|
129
60
|
this._progress = progress;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// are dispatched into separate tasks, so there's no need
|
|
133
|
-
// to do anything extra.
|
|
134
|
-
const messageWrap = (0, _utils.makeWaitForNextTask)();
|
|
135
|
-
this._ws.addEventListener('message', event => {
|
|
61
|
+
const messageWrap = (0, import_utils.makeWaitForNextTask)();
|
|
62
|
+
this._ws.addEventListener("message", (event) => {
|
|
136
63
|
messageWrap(() => {
|
|
137
64
|
const eventData = event.data;
|
|
138
65
|
let parsedJson;
|
|
139
66
|
try {
|
|
140
67
|
parsedJson = JSON.parse(eventData);
|
|
141
68
|
} catch (e) {
|
|
142
|
-
|
|
143
|
-
(_this$_progress = this._progress) === null || _this$_progress === void 0 || _this$_progress.log(`<closing ws> Closing websocket due to malformed JSON. eventData=${eventData} e=${e === null || e === void 0 ? void 0 : e.message}`);
|
|
69
|
+
this._progress?.log(`<closing ws> Closing websocket due to malformed JSON. eventData=${eventData} e=${e?.message}`);
|
|
144
70
|
this._ws.close();
|
|
145
71
|
return;
|
|
146
72
|
}
|
|
147
73
|
try {
|
|
148
|
-
if (this.onmessage)
|
|
74
|
+
if (this.onmessage)
|
|
75
|
+
this.onmessage.call(null, parsedJson);
|
|
149
76
|
} catch (e) {
|
|
150
|
-
|
|
151
|
-
(_this$_progress2 = this._progress) === null || _this$_progress2 === void 0 || _this$_progress2.log(`<closing ws> Closing websocket due to failed onmessage callback. eventData=${eventData} e=${e === null || e === void 0 ? void 0 : e.message}`);
|
|
77
|
+
this._progress?.log(`<closing ws> Closing websocket due to failed onmessage callback. eventData=${eventData} e=${e?.message}`);
|
|
152
78
|
this._ws.close();
|
|
153
79
|
}
|
|
154
80
|
});
|
|
155
81
|
});
|
|
156
|
-
this._ws.addEventListener(
|
|
157
|
-
|
|
158
|
-
(
|
|
159
|
-
|
|
82
|
+
this._ws.addEventListener("close", (event) => {
|
|
83
|
+
this._progress?.log(`<ws disconnected> ${logUrl} code=${event.code} reason=${event.reason}`);
|
|
84
|
+
if (this.onclose)
|
|
85
|
+
this.onclose.call(null, event.reason);
|
|
86
|
+
});
|
|
87
|
+
this._ws.addEventListener("error", (error) => this._progress?.log(`<ws error> ${logUrl} ${error.type} ${error.message}`));
|
|
88
|
+
}
|
|
89
|
+
static async connect(progress, url, options = {}) {
|
|
90
|
+
return await WebSocketTransport._connect(
|
|
91
|
+
progress,
|
|
92
|
+
url,
|
|
93
|
+
options,
|
|
94
|
+
false
|
|
95
|
+
/* hadRedirects */
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
static async _connect(progress, url, options, hadRedirects) {
|
|
99
|
+
const logUrl = stripQueryParams(url);
|
|
100
|
+
progress?.log(`<ws connecting> ${logUrl}`);
|
|
101
|
+
const transport = new WebSocketTransport(progress, url, logUrl, { ...options, followRedirects: !!options.followRedirects && hadRedirects });
|
|
102
|
+
let success = false;
|
|
103
|
+
progress?.cleanupWhenAborted(async () => {
|
|
104
|
+
if (!success)
|
|
105
|
+
await transport.closeAndWait().catch((e) => null);
|
|
160
106
|
});
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
107
|
+
const result = await new Promise((fulfill, reject) => {
|
|
108
|
+
transport._ws.on("open", async () => {
|
|
109
|
+
progress?.log(`<ws connected> ${logUrl}`);
|
|
110
|
+
fulfill({ transport });
|
|
111
|
+
});
|
|
112
|
+
transport._ws.on("error", (event) => {
|
|
113
|
+
progress?.log(`<ws connect error> ${logUrl} ${event.message}`);
|
|
114
|
+
reject(new Error("WebSocket error: " + event.message));
|
|
115
|
+
transport._ws.close();
|
|
116
|
+
});
|
|
117
|
+
transport._ws.on("unexpected-response", (request, response) => {
|
|
118
|
+
if (options.followRedirects && !hadRedirects && (response.statusCode === 301 || response.statusCode === 302 || response.statusCode === 307 || response.statusCode === 308)) {
|
|
119
|
+
fulfill({ redirect: response });
|
|
120
|
+
transport._ws.close();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
for (let i = 0; i < response.rawHeaders.length; i += 2) {
|
|
124
|
+
if (options.debugLogHeader && response.rawHeaders[i] === options.debugLogHeader)
|
|
125
|
+
progress?.log(response.rawHeaders[i + 1]);
|
|
126
|
+
}
|
|
127
|
+
const chunks = [];
|
|
128
|
+
const errorPrefix = `${logUrl} ${response.statusCode} ${response.statusMessage}`;
|
|
129
|
+
response.on("data", (chunk) => chunks.push(chunk));
|
|
130
|
+
response.on("close", () => {
|
|
131
|
+
const error = chunks.length ? `${errorPrefix}
|
|
132
|
+
${Buffer.concat(chunks)}` : errorPrefix;
|
|
133
|
+
progress?.log(`<ws unexpected response> ${error}`);
|
|
134
|
+
reject(new Error("WebSocket error: " + error));
|
|
135
|
+
transport._ws.close();
|
|
136
|
+
});
|
|
137
|
+
});
|
|
165
138
|
});
|
|
139
|
+
if (result.redirect) {
|
|
140
|
+
const newHeaders = Object.fromEntries(Object.entries(options.headers || {}).filter(([name]) => {
|
|
141
|
+
return !name.includes("access-key") && name.toLowerCase() !== "authorization";
|
|
142
|
+
}));
|
|
143
|
+
return WebSocketTransport._connect(
|
|
144
|
+
progress,
|
|
145
|
+
result.redirect.headers.location,
|
|
146
|
+
{ ...options, headers: newHeaders },
|
|
147
|
+
true
|
|
148
|
+
/* hadRedirects */
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
success = true;
|
|
152
|
+
return transport;
|
|
166
153
|
}
|
|
167
154
|
send(message) {
|
|
168
155
|
this._ws.send(JSON.stringify(message));
|
|
169
156
|
}
|
|
170
157
|
close() {
|
|
171
|
-
|
|
172
|
-
(_this$_progress5 = this._progress) === null || _this$_progress5 === void 0 || _this$_progress5.log(`<ws disconnecting> ${this._logUrl}`);
|
|
158
|
+
this._progress?.log(`<ws disconnecting> ${this._logUrl}`);
|
|
173
159
|
this._ws.close();
|
|
174
160
|
}
|
|
175
161
|
async closeAndWait() {
|
|
176
|
-
if (this._ws.readyState ===
|
|
177
|
-
|
|
162
|
+
if (this._ws.readyState === import_utilsBundle.ws.CLOSED)
|
|
163
|
+
return;
|
|
164
|
+
const promise = new Promise((f) => this._ws.once("close", f));
|
|
178
165
|
this.close();
|
|
179
|
-
await promise;
|
|
166
|
+
await promise;
|
|
180
167
|
}
|
|
181
168
|
}
|
|
182
|
-
exports.WebSocketTransport = WebSocketTransport;
|
|
183
169
|
function stripQueryParams(url) {
|
|
184
170
|
try {
|
|
185
171
|
const u = new URL(url);
|
|
186
|
-
u.search =
|
|
187
|
-
u.hash =
|
|
172
|
+
u.search = "";
|
|
173
|
+
u.hash = "";
|
|
188
174
|
return u.toString();
|
|
189
175
|
} catch {
|
|
190
176
|
return url;
|
|
191
177
|
}
|
|
192
|
-
}
|
|
178
|
+
}
|
|
179
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
180
|
+
0 && (module.exports = {
|
|
181
|
+
WebSocketTransport,
|
|
182
|
+
perMessageDeflate
|
|
183
|
+
});
|
package/lib/server/types.js
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
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 types_exports = {};
|
|
20
|
+
__export(types_exports, {
|
|
21
|
+
kLifecycleEvents: () => kLifecycleEvents
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(types_exports);
|
|
24
|
+
const kLifecycleEvents = /* @__PURE__ */ new Set(["load", "domcontentloaded", "networkidle", "commit"]);
|
|
25
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
26
|
+
0 && (module.exports = {
|
|
27
|
+
kLifecycleEvents
|
|
5
28
|
});
|
|
6
|
-
exports.kLifecycleEvents = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Copyright 2018 Google Inc. All rights reserved.
|
|
9
|
-
* Modifications copyright (c) Microsoft Corporation.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
const kLifecycleEvents = exports.kLifecycleEvents = new Set(['load', 'domcontentloaded', 'networkidle', 'commit']);
|