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
|
@@ -1,38 +1,42 @@
|
|
|
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 dispatcher_exports = {};
|
|
20
|
+
__export(dispatcher_exports, {
|
|
21
|
+
Dispatcher: () => Dispatcher,
|
|
22
|
+
DispatcherConnection: () => DispatcherConnection,
|
|
23
|
+
RootDispatcher: () => RootDispatcher,
|
|
24
|
+
dispatcherSymbol: () => dispatcherSymbol,
|
|
25
|
+
existingDispatcher: () => existingDispatcher,
|
|
26
|
+
setMaxDispatchersForTest: () => setMaxDispatchersForTest
|
|
5
27
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Copyright (c) Microsoft Corporation.
|
|
20
|
-
*
|
|
21
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
22
|
-
* you may not use this file except in compliance with the License.
|
|
23
|
-
* You may obtain a copy of the License at
|
|
24
|
-
*
|
|
25
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
26
|
-
*
|
|
27
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
28
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
29
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
30
|
-
* See the License for the specific language governing permissions and
|
|
31
|
-
* limitations under the License.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
const dispatcherSymbol = exports.dispatcherSymbol = Symbol('dispatcher');
|
|
35
|
-
const metadataValidator = (0, _validator.createMetadataValidator)();
|
|
28
|
+
module.exports = __toCommonJS(dispatcher_exports);
|
|
29
|
+
var import_events = require("events");
|
|
30
|
+
var import_eventsHelper = require("../utils/eventsHelper");
|
|
31
|
+
var import_validator = require("../../protocol/validator");
|
|
32
|
+
var import_utils = require("../../utils");
|
|
33
|
+
var import_debug = require("../utils/debug");
|
|
34
|
+
var import_errors = require("../errors");
|
|
35
|
+
var import_instrumentation = require("../instrumentation");
|
|
36
|
+
var import_protocolError = require("../protocolError");
|
|
37
|
+
var import_callLog = require("../callLog");
|
|
38
|
+
const dispatcherSymbol = Symbol("dispatcher");
|
|
39
|
+
const metadataValidator = (0, import_validator.createMetadataValidator)();
|
|
36
40
|
function existingDispatcher(object) {
|
|
37
41
|
return object[dispatcherSymbol];
|
|
38
42
|
}
|
|
@@ -41,51 +45,45 @@ function setMaxDispatchersForTest(value) {
|
|
|
41
45
|
maxDispatchersOverride = value;
|
|
42
46
|
}
|
|
43
47
|
function maxDispatchersForBucket(gcBucket) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}[gcBucket]) !== null && _ref !== void 0 ? _ref : 10000;
|
|
48
|
+
return maxDispatchersOverride ?? {
|
|
49
|
+
"JSHandle": 1e5,
|
|
50
|
+
"ElementHandle": 1e5
|
|
51
|
+
}[gcBucket] ?? 1e4;
|
|
49
52
|
}
|
|
50
|
-
class Dispatcher extends
|
|
53
|
+
class Dispatcher extends import_events.EventEmitter {
|
|
51
54
|
constructor(parent, object, type, initializer, gcBucket) {
|
|
52
55
|
super();
|
|
53
|
-
this._connection = void 0;
|
|
54
|
-
// Parent is always "isScope".
|
|
55
|
-
this._parent = void 0;
|
|
56
56
|
// Only "isScope" channel owners have registered dispatchers inside.
|
|
57
|
-
this._dispatchers = new Map();
|
|
57
|
+
this._dispatchers = /* @__PURE__ */ new Map();
|
|
58
58
|
this._disposed = false;
|
|
59
59
|
this._eventListeners = [];
|
|
60
|
-
this.
|
|
61
|
-
this._type = void 0;
|
|
62
|
-
this._gcBucket = void 0;
|
|
63
|
-
this._object = void 0;
|
|
64
|
-
this._openScope = new _utils.LongStandingScope();
|
|
60
|
+
this._openScope = new import_utils.LongStandingScope();
|
|
65
61
|
this._connection = parent instanceof DispatcherConnection ? parent : parent._connection;
|
|
66
|
-
this._parent = parent instanceof DispatcherConnection ?
|
|
62
|
+
this._parent = parent instanceof DispatcherConnection ? void 0 : parent;
|
|
67
63
|
const guid = object.guid;
|
|
68
64
|
this._guid = guid;
|
|
69
65
|
this._type = type;
|
|
70
66
|
this._object = object;
|
|
71
|
-
this._gcBucket = gcBucket
|
|
67
|
+
this._gcBucket = gcBucket ?? type;
|
|
72
68
|
object[dispatcherSymbol] = this;
|
|
73
69
|
this._connection.registerDispatcher(this);
|
|
74
70
|
if (this._parent) {
|
|
75
|
-
(0,
|
|
71
|
+
(0, import_utils.assert)(!this._parent._dispatchers.has(guid));
|
|
76
72
|
this._parent._dispatchers.set(guid, this);
|
|
77
73
|
}
|
|
78
|
-
if (this._parent)
|
|
74
|
+
if (this._parent)
|
|
75
|
+
this._connection.sendCreate(this._parent, type, guid, initializer);
|
|
79
76
|
this._connection.maybeDisposeStaleDispatchers(this._gcBucket);
|
|
80
77
|
}
|
|
81
78
|
parentScope() {
|
|
82
79
|
return this._parent;
|
|
83
80
|
}
|
|
84
81
|
addObjectListener(eventName, handler) {
|
|
85
|
-
this._eventListeners.push(
|
|
82
|
+
this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(this._object, eventName, handler));
|
|
86
83
|
}
|
|
87
84
|
adopt(child) {
|
|
88
|
-
if (child._parent === this)
|
|
85
|
+
if (child._parent === this)
|
|
86
|
+
return;
|
|
89
87
|
const oldParent = child._parent;
|
|
90
88
|
oldParent._dispatchers.delete(child._guid);
|
|
91
89
|
this._dispatchers.set(child._guid, child);
|
|
@@ -97,38 +95,36 @@ class Dispatcher extends _events.EventEmitter {
|
|
|
97
95
|
try {
|
|
98
96
|
return await this._openScope.race(commandPromise);
|
|
99
97
|
} catch (e) {
|
|
100
|
-
if (callMetadata.potentiallyClosesScope && (0,
|
|
98
|
+
if (callMetadata.potentiallyClosesScope && (0, import_errors.isTargetClosedError)(e))
|
|
99
|
+
return await commandPromise;
|
|
101
100
|
throw e;
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
_dispatchEvent(method, params) {
|
|
105
104
|
if (this._disposed) {
|
|
106
|
-
if ((0,
|
|
107
|
-
|
|
105
|
+
if ((0, import_debug.isUnderTest)())
|
|
106
|
+
throw new Error(`${this._guid} is sending "${String(method)}" event after being disposed`);
|
|
108
107
|
return;
|
|
109
108
|
}
|
|
110
109
|
this._connection.sendEvent(this, method, params);
|
|
111
110
|
}
|
|
112
111
|
_dispose(reason) {
|
|
113
|
-
this._disposeRecursively(new
|
|
112
|
+
this._disposeRecursively(new import_errors.TargetClosedError());
|
|
114
113
|
this._connection.sendDispose(this, reason);
|
|
115
114
|
}
|
|
116
|
-
_onDispose() {
|
|
115
|
+
_onDispose() {
|
|
116
|
+
}
|
|
117
117
|
_disposeRecursively(error) {
|
|
118
|
-
|
|
119
|
-
(0, _utils.assert)(!this._disposed, `${this._guid} is disposed more than once`);
|
|
118
|
+
(0, import_utils.assert)(!this._disposed, `${this._guid} is disposed more than once`);
|
|
120
119
|
this._onDispose();
|
|
121
120
|
this._disposed = true;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// Clean up from parent and connection.
|
|
125
|
-
(_this$_parent = this._parent) === null || _this$_parent === void 0 || _this$_parent._dispatchers.delete(this._guid);
|
|
121
|
+
import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
|
|
122
|
+
this._parent?._dispatchers.delete(this._guid);
|
|
126
123
|
const list = this._connection._dispatchersByBucket.get(this._gcBucket);
|
|
127
|
-
list
|
|
124
|
+
list?.delete(this._guid);
|
|
128
125
|
this._connection._dispatchers.delete(this._guid);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
for (const dispatcher of [...this._dispatchers.values()]) dispatcher._disposeRecursively(error);
|
|
126
|
+
for (const dispatcher of [...this._dispatchers.values()])
|
|
127
|
+
dispatcher._disposeRecursively(error);
|
|
132
128
|
this._dispatchers.clear();
|
|
133
129
|
delete this._object[dispatcherSymbol];
|
|
134
130
|
this._openScope.close(error);
|
|
@@ -136,120 +132,92 @@ class Dispatcher extends _events.EventEmitter {
|
|
|
136
132
|
_debugScopeState() {
|
|
137
133
|
return {
|
|
138
134
|
_guid: this._guid,
|
|
139
|
-
objects: Array.from(this._dispatchers.values()).map(o => o._debugScopeState())
|
|
135
|
+
objects: Array.from(this._dispatchers.values()).map((o) => o._debugScopeState())
|
|
140
136
|
};
|
|
141
137
|
}
|
|
142
138
|
async waitForEventInfo() {
|
|
143
|
-
// Instrumentation takes care of this.
|
|
144
139
|
}
|
|
145
140
|
}
|
|
146
|
-
exports.Dispatcher = Dispatcher;
|
|
147
141
|
class RootDispatcher extends Dispatcher {
|
|
148
142
|
constructor(connection, createPlaywright) {
|
|
149
|
-
super(connection, {
|
|
150
|
-
guid: ''
|
|
151
|
-
}, 'Root', {});
|
|
152
|
-
this._initialized = false;
|
|
143
|
+
super(connection, { guid: "" }, "Root", {});
|
|
153
144
|
this.createPlaywright = createPlaywright;
|
|
145
|
+
this._initialized = false;
|
|
154
146
|
}
|
|
155
147
|
async initialize(params) {
|
|
156
|
-
(0,
|
|
157
|
-
(0,
|
|
148
|
+
(0, import_utils.assert)(this.createPlaywright);
|
|
149
|
+
(0, import_utils.assert)(!this._initialized);
|
|
158
150
|
this._initialized = true;
|
|
159
151
|
return {
|
|
160
152
|
playwright: await this.createPlaywright(this, params)
|
|
161
153
|
};
|
|
162
154
|
}
|
|
163
155
|
}
|
|
164
|
-
exports.RootDispatcher = RootDispatcher;
|
|
165
156
|
class DispatcherConnection {
|
|
166
157
|
constructor(isLocal) {
|
|
167
|
-
this._dispatchers = new Map();
|
|
168
|
-
this._dispatchersByBucket = new Map();
|
|
169
|
-
this.onmessage = message => {
|
|
170
|
-
|
|
171
|
-
this.
|
|
158
|
+
this._dispatchers = /* @__PURE__ */ new Map();
|
|
159
|
+
this._dispatchersByBucket = /* @__PURE__ */ new Map();
|
|
160
|
+
this.onmessage = (message) => {
|
|
161
|
+
};
|
|
162
|
+
this._waitOperations = /* @__PURE__ */ new Map();
|
|
172
163
|
this._isLocal = !!isLocal;
|
|
173
164
|
}
|
|
174
165
|
sendEvent(dispatcher, event, params) {
|
|
175
|
-
const validator = (0,
|
|
176
|
-
params = validator(params,
|
|
177
|
-
this.onmessage({
|
|
178
|
-
guid: dispatcher._guid,
|
|
179
|
-
method: event,
|
|
180
|
-
params
|
|
181
|
-
});
|
|
166
|
+
const validator = (0, import_validator.findValidator)(dispatcher._type, event, "Event");
|
|
167
|
+
params = validator(params, "", this._validatorToWireContext());
|
|
168
|
+
this.onmessage({ guid: dispatcher._guid, method: event, params });
|
|
182
169
|
}
|
|
183
170
|
sendCreate(parent, type, guid, initializer) {
|
|
184
|
-
const validator = (0,
|
|
185
|
-
initializer = validator(initializer,
|
|
186
|
-
this.onmessage({
|
|
187
|
-
guid: parent._guid,
|
|
188
|
-
method: '__create__',
|
|
189
|
-
params: {
|
|
190
|
-
type,
|
|
191
|
-
initializer,
|
|
192
|
-
guid
|
|
193
|
-
}
|
|
194
|
-
});
|
|
171
|
+
const validator = (0, import_validator.findValidator)(type, "", "Initializer");
|
|
172
|
+
initializer = validator(initializer, "", this._validatorToWireContext());
|
|
173
|
+
this.onmessage({ guid: parent._guid, method: "__create__", params: { type, initializer, guid } });
|
|
195
174
|
}
|
|
196
175
|
sendAdopt(parent, dispatcher) {
|
|
197
|
-
this.onmessage({
|
|
198
|
-
guid: parent._guid,
|
|
199
|
-
method: '__adopt__',
|
|
200
|
-
params: {
|
|
201
|
-
guid: dispatcher._guid
|
|
202
|
-
}
|
|
203
|
-
});
|
|
176
|
+
this.onmessage({ guid: parent._guid, method: "__adopt__", params: { guid: dispatcher._guid } });
|
|
204
177
|
}
|
|
205
178
|
sendDispose(dispatcher, reason) {
|
|
206
|
-
this.onmessage({
|
|
207
|
-
guid: dispatcher._guid,
|
|
208
|
-
method: '__dispose__',
|
|
209
|
-
params: {
|
|
210
|
-
reason
|
|
211
|
-
}
|
|
212
|
-
});
|
|
179
|
+
this.onmessage({ guid: dispatcher._guid, method: "__dispose__", params: { reason } });
|
|
213
180
|
}
|
|
214
181
|
_validatorToWireContext() {
|
|
215
182
|
return {
|
|
216
183
|
tChannelImpl: this._tChannelImplToWire.bind(this),
|
|
217
|
-
binary: this._isLocal ?
|
|
218
|
-
isUnderTest:
|
|
184
|
+
binary: this._isLocal ? "buffer" : "toBase64",
|
|
185
|
+
isUnderTest: import_debug.isUnderTest
|
|
219
186
|
};
|
|
220
187
|
}
|
|
221
188
|
_validatorFromWireContext() {
|
|
222
189
|
return {
|
|
223
190
|
tChannelImpl: this._tChannelImplFromWire.bind(this),
|
|
224
|
-
binary: this._isLocal ?
|
|
225
|
-
isUnderTest:
|
|
191
|
+
binary: this._isLocal ? "buffer" : "fromBase64",
|
|
192
|
+
isUnderTest: import_debug.isUnderTest
|
|
226
193
|
};
|
|
227
194
|
}
|
|
228
195
|
_tChannelImplFromWire(names, arg, path, context) {
|
|
229
|
-
if (arg && typeof arg ===
|
|
196
|
+
if (arg && typeof arg === "object" && typeof arg.guid === "string") {
|
|
230
197
|
const guid = arg.guid;
|
|
231
198
|
const dispatcher = this._dispatchers.get(guid);
|
|
232
|
-
if (!dispatcher)
|
|
233
|
-
|
|
199
|
+
if (!dispatcher)
|
|
200
|
+
throw new import_validator.ValidationError(`${path}: no object with guid ${guid}`);
|
|
201
|
+
if (names !== "*" && !names.includes(dispatcher._type))
|
|
202
|
+
throw new import_validator.ValidationError(`${path}: object with guid ${guid} has type ${dispatcher._type}, expected ${names.toString()}`);
|
|
234
203
|
return dispatcher;
|
|
235
204
|
}
|
|
236
|
-
throw new
|
|
205
|
+
throw new import_validator.ValidationError(`${path}: expected guid for ${names.toString()}`);
|
|
237
206
|
}
|
|
238
207
|
_tChannelImplToWire(names, arg, path, context) {
|
|
239
208
|
if (arg instanceof Dispatcher) {
|
|
240
|
-
if (names !==
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
};
|
|
209
|
+
if (names !== "*" && !names.includes(arg._type))
|
|
210
|
+
throw new import_validator.ValidationError(`${path}: dispatcher with guid ${arg._guid} has type ${arg._type}, expected ${names.toString()}`);
|
|
211
|
+
return { guid: arg._guid };
|
|
244
212
|
}
|
|
245
|
-
throw new
|
|
213
|
+
throw new import_validator.ValidationError(`${path}: expected dispatcher ${names.toString()}`);
|
|
246
214
|
}
|
|
247
215
|
registerDispatcher(dispatcher) {
|
|
248
|
-
(0,
|
|
216
|
+
(0, import_utils.assert)(!this._dispatchers.has(dispatcher._guid));
|
|
249
217
|
this._dispatchers.set(dispatcher._guid, dispatcher);
|
|
250
218
|
let list = this._dispatchersByBucket.get(dispatcher._gcBucket);
|
|
251
219
|
if (!list) {
|
|
252
|
-
list = new Set();
|
|
220
|
+
list = /* @__PURE__ */ new Set();
|
|
253
221
|
this._dispatchersByBucket.set(dispatcher._gcBucket, list);
|
|
254
222
|
}
|
|
255
223
|
list.add(dispatcher._guid);
|
|
@@ -257,141 +225,122 @@ class DispatcherConnection {
|
|
|
257
225
|
maybeDisposeStaleDispatchers(gcBucket) {
|
|
258
226
|
const maxDispatchers = maxDispatchersForBucket(gcBucket);
|
|
259
227
|
const list = this._dispatchersByBucket.get(gcBucket);
|
|
260
|
-
if (!list || list.size <= maxDispatchers)
|
|
228
|
+
if (!list || list.size <= maxDispatchers)
|
|
229
|
+
return;
|
|
261
230
|
const dispatchersArray = [...list];
|
|
262
231
|
const disposeCount = maxDispatchers / 10 | 0;
|
|
263
232
|
this._dispatchersByBucket.set(gcBucket, new Set(dispatchersArray.slice(disposeCount)));
|
|
264
233
|
for (let i = 0; i < disposeCount; ++i) {
|
|
265
234
|
const d = this._dispatchers.get(dispatchersArray[i]);
|
|
266
|
-
if (!d)
|
|
267
|
-
|
|
235
|
+
if (!d)
|
|
236
|
+
continue;
|
|
237
|
+
d._dispose("gc");
|
|
268
238
|
}
|
|
269
239
|
}
|
|
270
240
|
async dispatch(message) {
|
|
271
|
-
|
|
272
|
-
const {
|
|
273
|
-
id,
|
|
274
|
-
guid,
|
|
275
|
-
method,
|
|
276
|
-
params,
|
|
277
|
-
metadata
|
|
278
|
-
} = message;
|
|
241
|
+
const { id, guid, method, params, metadata } = message;
|
|
279
242
|
const dispatcher = this._dispatchers.get(guid);
|
|
280
243
|
if (!dispatcher) {
|
|
281
|
-
this.onmessage({
|
|
282
|
-
id,
|
|
283
|
-
error: (0, _errors.serializeError)(new _errors.TargetClosedError())
|
|
284
|
-
});
|
|
244
|
+
this.onmessage({ id, error: (0, import_errors.serializeError)(new import_errors.TargetClosedError()) });
|
|
285
245
|
return;
|
|
286
246
|
}
|
|
287
247
|
let validParams;
|
|
288
248
|
let validMetadata;
|
|
289
249
|
try {
|
|
290
|
-
const validator = (0,
|
|
250
|
+
const validator = (0, import_validator.findValidator)(dispatcher._type, method, "Params");
|
|
291
251
|
const validatorContext = this._validatorFromWireContext();
|
|
292
|
-
validParams = validator(params,
|
|
293
|
-
validMetadata = metadataValidator(metadata,
|
|
294
|
-
if (typeof dispatcher[method] !==
|
|
252
|
+
validParams = validator(params, "", validatorContext);
|
|
253
|
+
validMetadata = metadataValidator(metadata, "", validatorContext);
|
|
254
|
+
if (typeof dispatcher[method] !== "function")
|
|
255
|
+
throw new Error(`Mismatching dispatcher: "${dispatcher._type}" does not implement "${method}"`);
|
|
295
256
|
} catch (e) {
|
|
296
|
-
this.onmessage({
|
|
297
|
-
id,
|
|
298
|
-
error: (0, _errors.serializeError)(e)
|
|
299
|
-
});
|
|
257
|
+
this.onmessage({ id, error: (0, import_errors.serializeError)(e) });
|
|
300
258
|
return;
|
|
301
259
|
}
|
|
302
|
-
const sdkObject = dispatcher._object instanceof
|
|
260
|
+
const sdkObject = dispatcher._object instanceof import_instrumentation.SdkObject ? dispatcher._object : void 0;
|
|
303
261
|
const callMetadata = {
|
|
304
262
|
id: `call@${id}`,
|
|
305
263
|
location: validMetadata.location,
|
|
306
264
|
apiName: validMetadata.apiName,
|
|
307
265
|
internal: validMetadata.internal,
|
|
308
266
|
stepId: validMetadata.stepId,
|
|
309
|
-
objectId: sdkObject
|
|
310
|
-
pageId: sdkObject
|
|
311
|
-
frameId: sdkObject
|
|
312
|
-
startTime: (0,
|
|
267
|
+
objectId: sdkObject?.guid,
|
|
268
|
+
pageId: sdkObject?.attribution?.page?.guid,
|
|
269
|
+
frameId: sdkObject?.attribution?.frame?.guid,
|
|
270
|
+
startTime: (0, import_utils.monotonicTime)(),
|
|
313
271
|
endTime: 0,
|
|
314
272
|
type: dispatcher._type,
|
|
315
273
|
method,
|
|
316
274
|
params: params || {},
|
|
317
275
|
log: []
|
|
318
276
|
};
|
|
319
|
-
if (sdkObject && params
|
|
320
|
-
// Process logs for waitForNavigation/waitForLoadState/etc.
|
|
277
|
+
if (sdkObject && params?.info?.waitId) {
|
|
321
278
|
const info = params.info;
|
|
322
279
|
switch (info.phase) {
|
|
323
|
-
case
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
{
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
originalMetadata.endTime = (0, _utils.monotonicTime)();
|
|
346
|
-
originalMetadata.error = info.error ? {
|
|
347
|
-
error: {
|
|
348
|
-
name: 'Error',
|
|
349
|
-
message: info.error
|
|
350
|
-
}
|
|
351
|
-
} : undefined;
|
|
352
|
-
this._waitOperations.delete(info.waitId);
|
|
353
|
-
await sdkObject.instrumentation.onAfterCall(sdkObject, originalMetadata);
|
|
354
|
-
this.onmessage({
|
|
355
|
-
id
|
|
356
|
-
});
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
280
|
+
case "before": {
|
|
281
|
+
this._waitOperations.set(info.waitId, callMetadata);
|
|
282
|
+
await sdkObject.instrumentation.onBeforeCall(sdkObject, callMetadata);
|
|
283
|
+
this.onmessage({ id });
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
case "log": {
|
|
287
|
+
const originalMetadata = this._waitOperations.get(info.waitId);
|
|
288
|
+
originalMetadata.log.push(info.message);
|
|
289
|
+
sdkObject.instrumentation.onCallLog(sdkObject, originalMetadata, "api", info.message);
|
|
290
|
+
this.onmessage({ id });
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
case "after": {
|
|
294
|
+
const originalMetadata = this._waitOperations.get(info.waitId);
|
|
295
|
+
originalMetadata.endTime = (0, import_utils.monotonicTime)();
|
|
296
|
+
originalMetadata.error = info.error ? { error: { name: "Error", message: info.error } } : void 0;
|
|
297
|
+
this._waitOperations.delete(info.waitId);
|
|
298
|
+
await sdkObject.instrumentation.onAfterCall(sdkObject, originalMetadata);
|
|
299
|
+
this.onmessage({ id });
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
359
302
|
}
|
|
360
303
|
}
|
|
361
|
-
await
|
|
362
|
-
const response = {
|
|
363
|
-
id
|
|
364
|
-
};
|
|
304
|
+
await sdkObject?.instrumentation.onBeforeCall(sdkObject, callMetadata);
|
|
305
|
+
const response = { id };
|
|
365
306
|
try {
|
|
366
307
|
const result = await dispatcher._handleCommand(callMetadata, method, validParams);
|
|
367
|
-
const validator = (0,
|
|
368
|
-
response.result = validator(result,
|
|
308
|
+
const validator = (0, import_validator.findValidator)(dispatcher._type, method, "Result");
|
|
309
|
+
response.result = validator(result, "", this._validatorToWireContext());
|
|
369
310
|
callMetadata.result = result;
|
|
370
311
|
} catch (e) {
|
|
371
|
-
if ((0,
|
|
312
|
+
if ((0, import_errors.isTargetClosedError)(e) && sdkObject) {
|
|
372
313
|
const reason = closeReason(sdkObject);
|
|
373
|
-
if (reason)
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
314
|
+
if (reason)
|
|
315
|
+
(0, import_utils.rewriteErrorMessage)(e, reason);
|
|
316
|
+
} else if ((0, import_protocolError.isProtocolError)(e)) {
|
|
317
|
+
if (e.type === "closed") {
|
|
318
|
+
const reason = sdkObject ? closeReason(sdkObject) : void 0;
|
|
319
|
+
e = new import_errors.TargetClosedError(reason, e.browserLogMessage());
|
|
320
|
+
} else if (e.type === "crashed") {
|
|
321
|
+
(0, import_utils.rewriteErrorMessage)(e, "Target crashed " + e.browserLogMessage());
|
|
380
322
|
}
|
|
381
323
|
}
|
|
382
|
-
response.error = (0,
|
|
383
|
-
// The command handler could have set error in the metadata, do not reset it if there was no exception.
|
|
324
|
+
response.error = (0, import_errors.serializeError)(e);
|
|
384
325
|
callMetadata.error = response.error;
|
|
385
326
|
} finally {
|
|
386
|
-
callMetadata.endTime = (0,
|
|
387
|
-
await
|
|
327
|
+
callMetadata.endTime = (0, import_utils.monotonicTime)();
|
|
328
|
+
await sdkObject?.instrumentation.onAfterCall(sdkObject, callMetadata);
|
|
388
329
|
}
|
|
389
|
-
if (response.error)
|
|
330
|
+
if (response.error)
|
|
331
|
+
response.log = (0, import_callLog.compressCallLog)(callMetadata.log);
|
|
390
332
|
this.onmessage(response);
|
|
391
333
|
}
|
|
392
334
|
}
|
|
393
|
-
exports.DispatcherConnection = DispatcherConnection;
|
|
394
335
|
function closeReason(sdkObject) {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
336
|
+
return sdkObject.attribution.page?._closeReason || sdkObject.attribution.context?._closeReason || sdkObject.attribution.browser?._closeReason;
|
|
337
|
+
}
|
|
338
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
339
|
+
0 && (module.exports = {
|
|
340
|
+
Dispatcher,
|
|
341
|
+
DispatcherConnection,
|
|
342
|
+
RootDispatcher,
|
|
343
|
+
dispatcherSymbol,
|
|
344
|
+
existingDispatcher,
|
|
345
|
+
setMaxDispatchersForTest
|
|
346
|
+
});
|