patchright-core 1.51.3 → 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.
Files changed (303) hide show
  1. package/browsers.json +15 -13
  2. package/lib/androidServerImpl.js +42 -48
  3. package/lib/browserServerImpl.js +54 -67
  4. package/lib/cli/driver.js +71 -69
  5. package/lib/cli/program.js +312 -328
  6. package/lib/cli/programWithTestStub.js +51 -45
  7. package/lib/client/accessibility.js +31 -32
  8. package/lib/client/android.js +141 -228
  9. package/lib/client/api.js +135 -283
  10. package/lib/client/artifact.js +39 -36
  11. package/lib/client/browser.js +57 -61
  12. package/lib/client/browserContext.js +297 -326
  13. package/lib/client/browserType.js +92 -106
  14. package/lib/client/cdpSession.js +29 -31
  15. package/lib/client/channelOwner.js +82 -95
  16. package/lib/client/clientHelper.js +46 -38
  17. package/lib/client/clientInstrumentation.js +40 -37
  18. package/lib/client/clientStackTrace.js +41 -37
  19. package/lib/client/clock.js +36 -36
  20. package/lib/client/connection.js +190 -212
  21. package/lib/client/consoleMessage.js +31 -28
  22. package/lib/client/coverage.js +25 -22
  23. package/lib/client/dialog.js +30 -31
  24. package/lib/client/download.js +25 -25
  25. package/lib/client/electron.js +73 -75
  26. package/lib/client/elementHandle.js +111 -147
  27. package/lib/client/errors.js +53 -53
  28. package/lib/client/eventEmitter.js +124 -121
  29. package/lib/client/events.js +72 -68
  30. package/lib/client/fetch.js +135 -158
  31. package/lib/client/fileChooser.js +25 -24
  32. package/lib/client/fileUtils.js +31 -28
  33. package/lib/client/frame.js +187 -306
  34. package/lib/client/harRouter.js +42 -52
  35. package/lib/client/input.js +40 -69
  36. package/lib/client/jsHandle.js +54 -69
  37. package/lib/client/jsonPipe.js +27 -23
  38. package/lib/client/localUtils.js +29 -28
  39. package/lib/client/locator.js +161 -245
  40. package/lib/client/network.js +277 -295
  41. package/lib/client/page.js +270 -318
  42. package/lib/client/platform.js +46 -43
  43. package/lib/client/playwright.js +51 -66
  44. package/lib/client/selectors.js +48 -46
  45. package/lib/client/stream.js +29 -25
  46. package/lib/client/timeoutSettings.js +49 -39
  47. package/lib/client/tracing.js +48 -84
  48. package/lib/client/types.js +26 -22
  49. package/lib/client/video.js +35 -27
  50. package/lib/client/waiter.js +69 -88
  51. package/lib/client/webError.js +25 -23
  52. package/lib/client/webSocket.js +61 -56
  53. package/lib/client/worker.js +48 -58
  54. package/lib/client/writableStream.js +27 -23
  55. package/lib/generated/clockSource.js +26 -5
  56. package/lib/generated/consoleApiSource.js +26 -5
  57. package/lib/generated/injectedScriptSource.js +26 -5
  58. package/lib/generated/pollingRecorderSource.js +26 -5
  59. package/lib/generated/utilityScriptSource.js +26 -5
  60. package/lib/generated/webSocketMockSource.js +375 -4
  61. package/lib/inProcessFactory.js +53 -53
  62. package/lib/inprocess.js +2 -19
  63. package/lib/outofprocess.js +53 -46
  64. package/lib/protocol/debug.js +209 -25
  65. package/lib/protocol/serializers.js +153 -134
  66. package/lib/protocol/validator.js +2714 -2714
  67. package/lib/protocol/validatorPrimitives.js +114 -73
  68. package/lib/remote/playwrightConnection.js +140 -157
  69. package/lib/remote/playwrightServer.js +99 -84
  70. package/lib/server/accessibility.js +44 -37
  71. package/lib/server/android/android.js +216 -209
  72. package/lib/server/android/backendAdb.js +89 -82
  73. package/lib/server/artifact.js +78 -55
  74. package/lib/server/bidi/bidiBrowser.js +221 -155
  75. package/lib/server/bidi/bidiChromium.js +106 -79
  76. package/lib/server/bidi/bidiConnection.js +66 -83
  77. package/lib/server/bidi/bidiExecutionContext.js +128 -113
  78. package/lib/server/bidi/bidiFirefox.js +76 -69
  79. package/lib/server/bidi/bidiInput.js +86 -97
  80. package/lib/server/bidi/bidiNetworkManager.js +137 -154
  81. package/lib/server/bidi/bidiOverCdp.js +57 -58
  82. package/lib/server/bidi/bidiPage.js +247 -219
  83. package/lib/server/bidi/bidiPdf.js +52 -86
  84. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  85. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  86. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  87. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  88. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  89. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  90. package/lib/server/browser.js +76 -84
  91. package/lib/server/browserContext.js +321 -346
  92. package/lib/server/browserType.js +169 -182
  93. package/lib/server/callLog.js +47 -44
  94. package/lib/server/chromium/chromium.js +212 -190
  95. package/lib/server/chromium/chromiumSwitches.js +86 -64
  96. package/lib/server/chromium/crAccessibility.js +157 -131
  97. package/lib/server/chromium/crBrowser.js +253 -273
  98. package/lib/server/chromium/crConnection.js +91 -116
  99. package/lib/server/chromium/crCoverage.js +113 -127
  100. package/lib/server/chromium/crDevTools.js +59 -51
  101. package/lib/server/chromium/crDragDrop.js +62 -79
  102. package/lib/server/chromium/crExecutionContext.js +88 -83
  103. package/lib/server/chromium/crInput.js +97 -95
  104. package/lib/server/chromium/crNetworkManager.js +284 -404
  105. package/lib/server/chromium/crPage.js +522 -608
  106. package/lib/server/chromium/crPdf.js +54 -86
  107. package/lib/server/chromium/crProtocolHelper.js +92 -80
  108. package/lib/server/chromium/crServiceWorker.js +82 -67
  109. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  110. package/lib/server/chromium/protocol.d.js +16 -0
  111. package/lib/server/chromium/videoRecorder.js +65 -99
  112. package/lib/server/clock.js +62 -50
  113. package/lib/server/codegen/csharp.js +185 -160
  114. package/lib/server/codegen/java.js +155 -128
  115. package/lib/server/codegen/javascript.js +163 -148
  116. package/lib/server/codegen/jsonl.js +32 -28
  117. package/lib/server/codegen/language.js +75 -52
  118. package/lib/server/codegen/languages.js +65 -27
  119. package/lib/server/codegen/python.js +140 -125
  120. package/lib/server/codegen/types.js +15 -4
  121. package/lib/server/console.js +28 -32
  122. package/lib/server/cookieStore.js +105 -86
  123. package/lib/server/debugController.js +97 -124
  124. package/lib/server/debugger.js +82 -78
  125. package/lib/server/deviceDescriptors.js +37 -24
  126. package/lib/server/deviceDescriptorsSource.json +50 -50
  127. package/lib/server/dialog.js +36 -35
  128. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  129. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  130. package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
  131. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  132. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  133. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  134. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
  135. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  136. package/lib/server/dispatchers/dispatcher.js +169 -220
  137. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  138. package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
  139. package/lib/server/dispatchers/frameDispatcher.js +99 -163
  140. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  141. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  142. package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
  143. package/lib/server/dispatchers/networkDispatchers.js +90 -107
  144. package/lib/server/dispatchers/pageDispatcher.js +128 -169
  145. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  146. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  147. package/lib/server/dispatchers/streamDispatcher.js +42 -45
  148. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  149. package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
  150. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
  151. package/lib/server/dom.js +413 -443
  152. package/lib/server/download.js +45 -35
  153. package/lib/server/electron/electron.js +156 -176
  154. package/lib/server/electron/loader.js +8 -36
  155. package/lib/server/errors.js +47 -46
  156. package/lib/server/fetch.js +289 -323
  157. package/lib/server/fileChooser.js +25 -24
  158. package/lib/server/fileUploadUtils.js +65 -59
  159. package/lib/server/firefox/ffAccessibility.js +153 -131
  160. package/lib/server/firefox/ffBrowser.js +213 -277
  161. package/lib/server/firefox/ffConnection.js +63 -84
  162. package/lib/server/firefox/ffExecutionContext.js +91 -73
  163. package/lib/server/firefox/ffInput.js +67 -69
  164. package/lib/server/firefox/ffNetworkManager.js +131 -110
  165. package/lib/server/firefox/ffPage.js +236 -273
  166. package/lib/server/firefox/firefox.js +76 -67
  167. package/lib/server/firefox/protocol.d.js +16 -0
  168. package/lib/server/formData.js +107 -35
  169. package/lib/server/frameSelectors.js +77 -111
  170. package/lib/server/frames.js +730 -894
  171. package/lib/server/har/harRecorder.js +85 -77
  172. package/lib/server/har/harTracer.js +287 -222
  173. package/lib/server/harBackend.js +80 -80
  174. package/lib/server/helper.js +56 -59
  175. package/lib/server/index.js +59 -99
  176. package/lib/server/input.js +134 -163
  177. package/lib/server/instrumentation.js +49 -44
  178. package/lib/server/javascript.js +143 -134
  179. package/lib/server/launchApp.js +92 -73
  180. package/lib/server/localUtils.js +130 -122
  181. package/lib/server/macEditingCommands.js +141 -137
  182. package/lib/server/network.js +262 -296
  183. package/lib/server/page.js +329 -426
  184. package/lib/server/pageBinding.js +88 -0
  185. package/lib/server/pipeTransport.js +49 -45
  186. package/lib/server/playwright.js +60 -67
  187. package/lib/server/progress.js +56 -51
  188. package/lib/server/protocolError.js +34 -31
  189. package/lib/server/recorder/chat.js +70 -86
  190. package/lib/server/recorder/contextRecorder.js +134 -138
  191. package/lib/server/recorder/recorderApp.js +127 -136
  192. package/lib/server/recorder/recorderCollection.js +56 -44
  193. package/lib/server/recorder/recorderFrontend.js +15 -4
  194. package/lib/server/recorder/recorderRunner.js +79 -103
  195. package/lib/server/recorder/recorderUtils.js +56 -45
  196. package/lib/server/recorder/throttledFile.js +42 -30
  197. package/lib/server/recorder.js +177 -186
  198. package/lib/server/registry/browserFetcher.js +106 -101
  199. package/lib/server/registry/dependencies.js +245 -196
  200. package/lib/server/registry/index.js +904 -792
  201. package/lib/server/registry/nativeDeps.js +1073 -464
  202. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  203. package/lib/server/screenshotter.js +166 -182
  204. package/lib/server/selectors.js +85 -46
  205. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  206. package/lib/server/socksInterceptor.js +62 -70
  207. package/lib/server/storageScript.js +94 -100
  208. package/lib/server/timeoutSettings.js +58 -43
  209. package/lib/server/trace/recorder/snapshotter.js +70 -89
  210. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  211. package/lib/server/trace/recorder/tracing.js +321 -333
  212. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  213. package/lib/server/trace/viewer/traceViewer.js +168 -146
  214. package/lib/server/transport.js +124 -133
  215. package/lib/server/types.js +26 -22
  216. package/lib/server/usKeyboardLayout.js +135 -545
  217. package/lib/server/utils/ascii.js +39 -26
  218. package/lib/server/utils/comparators.js +105 -103
  219. package/lib/server/utils/crypto.js +157 -112
  220. package/lib/server/utils/debug.js +37 -28
  221. package/lib/server/utils/debugLogger.js +69 -48
  222. package/lib/server/utils/env.js +52 -37
  223. package/lib/server/utils/eventsHelper.js +29 -28
  224. package/lib/server/utils/expectUtils.js +31 -26
  225. package/lib/server/utils/fileUtils.js +123 -136
  226. package/lib/server/utils/happyEyeballs.js +138 -123
  227. package/lib/server/utils/hostPlatform.js +84 -120
  228. package/lib/server/utils/httpServer.js +106 -121
  229. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  230. package/lib/server/utils/image_tools/compare.js +44 -43
  231. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  232. package/lib/server/utils/image_tools/stats.js +40 -40
  233. package/lib/server/utils/linuxUtils.js +50 -37
  234. package/lib/server/utils/network.js +143 -86
  235. package/lib/server/utils/nodePlatform.js +87 -79
  236. package/lib/server/utils/pipeTransport.js +44 -42
  237. package/lib/server/utils/processLauncher.js +111 -121
  238. package/lib/server/utils/profiler.js +52 -39
  239. package/lib/server/utils/socksProxy.js +280 -339
  240. package/lib/server/utils/spawnAsync.js +37 -41
  241. package/lib/server/utils/task.js +31 -38
  242. package/lib/server/utils/userAgent.js +73 -66
  243. package/lib/server/utils/wsServer.js +73 -69
  244. package/lib/server/utils/zipFile.js +36 -37
  245. package/lib/server/utils/zones.js +37 -34
  246. package/lib/server/webkit/protocol.d.js +16 -0
  247. package/lib/server/webkit/webkit.js +76 -63
  248. package/lib/server/webkit/wkAccessibility.js +161 -118
  249. package/lib/server/webkit/wkBrowser.js +159 -176
  250. package/lib/server/webkit/wkConnection.js +59 -83
  251. package/lib/server/webkit/wkExecutionContext.js +84 -70
  252. package/lib/server/webkit/wkInput.js +82 -80
  253. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  254. package/lib/server/webkit/wkPage.js +525 -619
  255. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  256. package/lib/server/webkit/wkWorkers.js +77 -77
  257. package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
  258. package/lib/utils/isomorphic/assert.js +28 -22
  259. package/lib/utils/isomorphic/builtins.js +90 -0
  260. package/lib/utils/isomorphic/colors.js +66 -59
  261. package/lib/utils/isomorphic/cssParser.js +121 -125
  262. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  263. package/lib/utils/isomorphic/headers.js +38 -37
  264. package/lib/utils/isomorphic/locatorGenerators.js +340 -357
  265. package/lib/utils/isomorphic/locatorParser.js +96 -105
  266. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  267. package/lib/utils/isomorphic/manualPromise.js +47 -39
  268. package/lib/utils/isomorphic/mimeType.js +448 -25
  269. package/lib/utils/isomorphic/multimap.js +35 -27
  270. package/lib/utils/isomorphic/rtti.js +35 -33
  271. package/lib/utils/isomorphic/selectorParser.js +183 -193
  272. package/lib/utils/isomorphic/semaphore.js +27 -24
  273. package/lib/utils/isomorphic/stackTrace.js +87 -98
  274. package/lib/utils/isomorphic/stringUtils.js +113 -106
  275. package/lib/utils/isomorphic/time.js +41 -22
  276. package/lib/utils/isomorphic/timeoutRunner.js +55 -54
  277. package/lib/utils/isomorphic/traceUtils.js +38 -41
  278. package/lib/utils/isomorphic/types.js +15 -4
  279. package/lib/utils/isomorphic/urlMatch.js +112 -67
  280. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  281. package/lib/utils.js +97 -443
  282. package/lib/utilsBundle.js +101 -52
  283. package/lib/vite/htmlReport/index.html +21 -15
  284. package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-DVQi6prl.js} +1 -1
  285. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-dvXVzLxY.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.ChIUCJnj.js +2 -0
  291. package/lib/vite/traceViewer/index.html +3 -3
  292. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  293. package/lib/vite/traceViewer/uiMode.html +3 -3
  294. package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
  295. package/lib/zipBundle.js +32 -23
  296. package/package.json +1 -1
  297. package/types/protocol.d.ts +436 -17
  298. package/types/types.d.ts +35 -16
  299. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  300. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  301. package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
  302. package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
@@ -1,38 +1,42 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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
- exports.dispatcherSymbol = exports.RootDispatcher = exports.DispatcherConnection = exports.Dispatcher = void 0;
7
- exports.existingDispatcher = existingDispatcher;
8
- exports.setMaxDispatchersForTest = setMaxDispatchersForTest;
9
- var _events = require("events");
10
- var _eventsHelper = require("../utils/eventsHelper");
11
- var _validator = require("../../protocol/validator");
12
- var _utils = require("../../utils");
13
- var _debug = require("../utils/debug");
14
- var _errors = require("../errors");
15
- var _instrumentation = require("../instrumentation");
16
- var _protocolError = require("../protocolError");
17
- var _callLog = require("../callLog");
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
- var _ref;
45
- return (_ref = maxDispatchersOverride !== null && maxDispatchersOverride !== void 0 ? maxDispatchersOverride : {
46
- 'JSHandle': 100000,
47
- 'ElementHandle': 100000
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 _events.EventEmitter {
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._guid = void 0;
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 ? undefined : parent;
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 !== null && gcBucket !== void 0 ? gcBucket : type;
67
+ this._gcBucket = gcBucket ?? type;
72
68
  object[dispatcherSymbol] = this;
73
69
  this._connection.registerDispatcher(this);
74
70
  if (this._parent) {
75
- (0, _utils.assert)(!this._parent._dispatchers.has(guid));
71
+ (0, import_utils.assert)(!this._parent._dispatchers.has(guid));
76
72
  this._parent._dispatchers.set(guid, this);
77
73
  }
78
- if (this._parent) this._connection.sendCreate(this._parent, type, guid, initializer);
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(_eventsHelper.eventsHelper.addEventListener(this._object, eventName, handler));
82
+ this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(this._object, eventName, handler));
86
83
  }
87
84
  adopt(child) {
88
- if (child._parent === this) return;
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, _errors.isTargetClosedError)(e)) return await commandPromise;
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, _debug.isUnderTest)()) throw new Error(`${this._guid} is sending "${String(method)}" event after being disposed`);
107
- // Just ignore this event outside of tests.
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 _errors.TargetClosedError());
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
- var _this$_parent;
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
- _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
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 === null || list === void 0 || list.delete(this._guid);
124
+ list?.delete(this._guid);
128
125
  this._connection._dispatchers.delete(this._guid);
129
-
130
- // Dispose all children.
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, _utils.assert)(this.createPlaywright);
157
- (0, _utils.assert)(!this._initialized);
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
- this._waitOperations = new Map();
171
- this._isLocal = void 0;
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, _validator.findValidator)(dispatcher._type, event, 'Event');
176
- params = validator(params, '', this._validatorToWireContext());
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, _validator.findValidator)(type, '', 'Initializer');
185
- initializer = validator(initializer, '', this._validatorToWireContext());
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 ? 'buffer' : 'toBase64',
218
- isUnderTest: _debug.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 ? 'buffer' : 'fromBase64',
225
- isUnderTest: _debug.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 === 'object' && typeof arg.guid === 'string') {
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) throw new _validator.ValidationError(`${path}: no object with guid ${guid}`);
233
- if (names !== '*' && !names.includes(dispatcher._type)) throw new _validator.ValidationError(`${path}: object with guid ${guid} has type ${dispatcher._type}, expected ${names.toString()}`);
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 _validator.ValidationError(`${path}: expected guid for ${names.toString()}`);
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 !== '*' && !names.includes(arg._type)) throw new _validator.ValidationError(`${path}: dispatcher with guid ${arg._guid} has type ${arg._type}, expected ${names.toString()}`);
241
- return {
242
- guid: arg._guid
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 _validator.ValidationError(`${path}: expected dispatcher ${names.toString()}`);
213
+ throw new import_validator.ValidationError(`${path}: expected dispatcher ${names.toString()}`);
246
214
  }
247
215
  registerDispatcher(dispatcher) {
248
- (0, _utils.assert)(!this._dispatchers.has(dispatcher._guid));
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) return;
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) continue;
267
- d._dispose('gc');
235
+ if (!d)
236
+ continue;
237
+ d._dispose("gc");
268
238
  }
269
239
  }
270
240
  async dispatch(message) {
271
- var _sdkObject$attributio, _sdkObject$attributio2, _params$info;
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, _validator.findValidator)(dispatcher._type, method, 'Params');
250
+ const validator = (0, import_validator.findValidator)(dispatcher._type, method, "Params");
291
251
  const validatorContext = this._validatorFromWireContext();
292
- validParams = validator(params, '', validatorContext);
293
- validMetadata = metadataValidator(metadata, '', validatorContext);
294
- if (typeof dispatcher[method] !== 'function') throw new Error(`Mismatching dispatcher: "${dispatcher._type}" does not implement "${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 _instrumentation.SdkObject ? dispatcher._object : undefined;
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 === null || sdkObject === void 0 ? void 0 : sdkObject.guid,
310
- pageId: sdkObject === null || sdkObject === void 0 || (_sdkObject$attributio = sdkObject.attribution) === null || _sdkObject$attributio === void 0 || (_sdkObject$attributio = _sdkObject$attributio.page) === null || _sdkObject$attributio === void 0 ? void 0 : _sdkObject$attributio.guid,
311
- frameId: sdkObject === null || sdkObject === void 0 || (_sdkObject$attributio2 = sdkObject.attribution) === null || _sdkObject$attributio2 === void 0 || (_sdkObject$attributio2 = _sdkObject$attributio2.frame) === null || _sdkObject$attributio2 === void 0 ? void 0 : _sdkObject$attributio2.guid,
312
- startTime: (0, _utils.monotonicTime)(),
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 !== null && params !== void 0 && (_params$info = params.info) !== null && _params$info !== void 0 && _params$info.waitId) {
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 'before':
324
- {
325
- this._waitOperations.set(info.waitId, callMetadata);
326
- await sdkObject.instrumentation.onBeforeCall(sdkObject, callMetadata);
327
- this.onmessage({
328
- id
329
- });
330
- return;
331
- }
332
- case 'log':
333
- {
334
- const originalMetadata = this._waitOperations.get(info.waitId);
335
- originalMetadata.log.push(info.message);
336
- sdkObject.instrumentation.onCallLog(sdkObject, originalMetadata, 'api', info.message);
337
- this.onmessage({
338
- id
339
- });
340
- return;
341
- }
342
- case 'after':
343
- {
344
- const originalMetadata = this._waitOperations.get(info.waitId);
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 (sdkObject === null || sdkObject === void 0 ? void 0 : sdkObject.instrumentation.onBeforeCall(sdkObject, callMetadata));
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, _validator.findValidator)(dispatcher._type, method, 'Result');
368
- response.result = validator(result, '', this._validatorToWireContext());
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, _errors.isTargetClosedError)(e) && sdkObject) {
312
+ if ((0, import_errors.isTargetClosedError)(e) && sdkObject) {
372
313
  const reason = closeReason(sdkObject);
373
- if (reason) (0, _utils.rewriteErrorMessage)(e, reason);
374
- } else if ((0, _protocolError.isProtocolError)(e)) {
375
- if (e.type === 'closed') {
376
- const reason = sdkObject ? closeReason(sdkObject) : undefined;
377
- e = new _errors.TargetClosedError(reason, e.browserLogMessage());
378
- } else if (e.type === 'crashed') {
379
- (0, _utils.rewriteErrorMessage)(e, 'Target crashed ' + e.browserLogMessage());
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, _errors.serializeError)(e);
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, _utils.monotonicTime)();
387
- await (sdkObject === null || sdkObject === void 0 ? void 0 : sdkObject.instrumentation.onAfterCall(sdkObject, callMetadata));
327
+ callMetadata.endTime = (0, import_utils.monotonicTime)();
328
+ await sdkObject?.instrumentation.onAfterCall(sdkObject, callMetadata);
388
329
  }
389
- if (response.error) response.log = (0, _callLog.compressCallLog)(callMetadata.log);
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
- var _sdkObject$attributio3, _sdkObject$attributio4, _sdkObject$attributio5;
396
- return ((_sdkObject$attributio3 = sdkObject.attribution.page) === null || _sdkObject$attributio3 === void 0 ? void 0 : _sdkObject$attributio3._closeReason) || ((_sdkObject$attributio4 = sdkObject.attribution.context) === null || _sdkObject$attributio4 === void 0 ? void 0 : _sdkObject$attributio4._closeReason) || ((_sdkObject$attributio5 = sdkObject.attribution.browser) === null || _sdkObject$attributio5 === void 0 ? void 0 : _sdkObject$attributio5._closeReason);
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
+ });