@checkly/playwright-core 1.51.17-beta.1 → 1.54.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -36
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-DrMbgOIo.js +0 -16684
  345. package/lib/vite/recorder/assets/codeMirrorModule-DuST8d_k.css +0 -344
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-5NM3V7eb.css +0 -2524
  348. package/lib/vite/recorder/assets/index-CT-scFHn.js +0 -16848
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-CB-2okZ8.js +0 -16684
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-CBiB4avC.js +0 -217
  353. package/lib/vite/traceViewer/assets/inspectorTab-CwgfffWb.js +0 -25143
  354. package/lib/vite/traceViewer/assets/workbench-CWZselvp.js +0 -2470
  355. package/lib/vite/traceViewer/assets/xtermModule-Es_gt_u7.js +0 -5994
  356. package/lib/vite/traceViewer/codeMirrorModule.DuST8d_k.css +0 -344
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.Dp3b_92q.css +0 -41
  359. package/lib/vite/traceViewer/embedded.BeldSa2G.css +0 -68
  360. package/lib/vite/traceViewer/embedded.gzudoghF.js +0 -106
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/index.DilotR1h.js +0 -314
  363. package/lib/vite/traceViewer/index.QewjJ85u.css +0 -131
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.DnGm18kV.css +0 -3178
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.DLgqV9db.css +0 -15
  368. package/lib/vite/traceViewer/recorder.DVrkq3Um.js +0 -551
  369. package/lib/vite/traceViewer/recorder.html +0 -17
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.C9_OcpPU.js +0 -1756
  373. package/lib/vite/traceViewer/uiMode.c5ORgcrX.css +0 -1424
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.xUZSA8PY.css +0 -787
  376. package/lib/vite/traceViewer/xtermModule.EsaqrrTX.css +0 -209
@@ -1,255 +1,235 @@
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
+ setMaxDispatchersForTest: () => setMaxDispatchersForTest
5
25
  });
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)();
36
- function existingDispatcher(object) {
37
- return object[dispatcherSymbol];
38
- }
26
+ module.exports = __toCommonJS(dispatcher_exports);
27
+ var import_events = require("events");
28
+ var import_eventsHelper = require("../utils/eventsHelper");
29
+ var import_validator = require("../../protocol/validator");
30
+ var import_utils = require("../../utils");
31
+ var import_debug = require("../utils/debug");
32
+ var import_errors = require("../errors");
33
+ var import_instrumentation = require("../instrumentation");
34
+ var import_protocolError = require("../protocolError");
35
+ var import_callLog = require("../callLog");
36
+ var import_protocolMetainfo = require("../../utils/isomorphic/protocolMetainfo");
37
+ var import_progress = require("../progress");
38
+ const metadataValidator = (0, import_validator.createMetadataValidator)();
39
39
  let maxDispatchersOverride;
40
40
  function setMaxDispatchersForTest(value) {
41
41
  maxDispatchersOverride = value;
42
42
  }
43
43
  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;
44
+ return maxDispatchersOverride ?? {
45
+ "JSHandle": 1e5,
46
+ "ElementHandle": 1e5
47
+ }[gcBucket] ?? 1e4;
49
48
  }
50
- class Dispatcher extends _events.EventEmitter {
49
+ class Dispatcher extends import_events.EventEmitter {
51
50
  constructor(parent, object, type, initializer, gcBucket) {
52
51
  super();
53
- this._connection = void 0;
54
- // Parent is always "isScope".
55
- this._parent = void 0;
56
- // Only "isScope" channel owners have registered dispatchers inside.
57
- this._dispatchers = new Map();
52
+ this._dispatchers = /* @__PURE__ */ new Map();
58
53
  this._disposed = false;
59
54
  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();
65
- this._connection = parent instanceof DispatcherConnection ? parent : parent._connection;
66
- this._parent = parent instanceof DispatcherConnection ? undefined : parent;
55
+ this._activeProgressControllers = /* @__PURE__ */ new Set();
56
+ this.connection = parent instanceof DispatcherConnection ? parent : parent.connection;
57
+ this._parent = parent instanceof DispatcherConnection ? void 0 : parent;
67
58
  const guid = object.guid;
68
59
  this._guid = guid;
69
60
  this._type = type;
70
61
  this._object = object;
71
- this._gcBucket = gcBucket !== null && gcBucket !== void 0 ? gcBucket : type;
72
- object[dispatcherSymbol] = this;
73
- this._connection.registerDispatcher(this);
62
+ this._gcBucket = gcBucket ?? type;
63
+ this.connection.registerDispatcher(this);
74
64
  if (this._parent) {
75
- (0, _utils.assert)(!this._parent._dispatchers.has(guid));
65
+ (0, import_utils.assert)(!this._parent._dispatchers.has(guid));
76
66
  this._parent._dispatchers.set(guid, this);
77
67
  }
78
- if (this._parent) this._connection.sendCreate(this._parent, type, guid, initializer);
79
- this._connection.maybeDisposeStaleDispatchers(this._gcBucket);
68
+ if (this._parent)
69
+ this.connection.sendCreate(this._parent, type, guid, initializer);
70
+ this.connection.maybeDisposeStaleDispatchers(this._gcBucket);
80
71
  }
81
72
  parentScope() {
82
73
  return this._parent;
83
74
  }
84
75
  addObjectListener(eventName, handler) {
85
- this._eventListeners.push(_eventsHelper.eventsHelper.addEventListener(this._object, eventName, handler));
76
+ this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(this._object, eventName, handler));
86
77
  }
87
78
  adopt(child) {
88
- if (child._parent === this) return;
79
+ if (child._parent === this)
80
+ return;
89
81
  const oldParent = child._parent;
90
82
  oldParent._dispatchers.delete(child._guid);
91
83
  this._dispatchers.set(child._guid, child);
92
84
  child._parent = this;
93
- this._connection.sendAdopt(this, child);
85
+ this.connection.sendAdopt(this, child);
94
86
  }
95
- async _handleCommand(callMetadata, method, validParams) {
96
- const commandPromise = this[method](validParams, callMetadata);
87
+ async _runCommand(callMetadata, method, validParams) {
88
+ const controller = new import_progress.ProgressController(callMetadata, this._object);
89
+ this._activeProgressControllers.add(controller);
97
90
  try {
98
- return await this._openScope.race(commandPromise);
99
- } catch (e) {
100
- if (callMetadata.potentiallyClosesScope && (0, _errors.isTargetClosedError)(e)) return await commandPromise;
101
- throw e;
91
+ return await controller.run((progress) => this[method](validParams, progress), validParams?.timeout);
92
+ } finally {
93
+ this._activeProgressControllers.delete(controller);
102
94
  }
103
95
  }
104
96
  _dispatchEvent(method, params) {
105
97
  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.
98
+ if ((0, import_debug.isUnderTest)())
99
+ throw new Error(`${this._guid} is sending "${String(method)}" event after being disposed`);
108
100
  return;
109
101
  }
110
- this._connection.sendEvent(this, method, params);
102
+ this.connection.sendEvent(this, method, params);
111
103
  }
112
104
  _dispose(reason) {
113
- this._disposeRecursively(new _errors.TargetClosedError());
114
- this._connection.sendDispose(this, reason);
105
+ this._disposeRecursively(new import_errors.TargetClosedError());
106
+ this.connection.sendDispose(this, reason);
107
+ }
108
+ _onDispose() {
109
+ }
110
+ async stopPendingOperations(error) {
111
+ const controllers = [];
112
+ const collect = (dispatcher) => {
113
+ controllers.push(...dispatcher._activeProgressControllers);
114
+ for (const child of [...dispatcher._dispatchers.values()])
115
+ collect(child);
116
+ };
117
+ collect(this);
118
+ await Promise.all(controllers.map((controller) => controller.abort(error)));
115
119
  }
116
- _onDispose() {}
117
120
  _disposeRecursively(error) {
118
- var _this$_parent;
119
- (0, _utils.assert)(!this._disposed, `${this._guid} is disposed more than once`);
121
+ (0, import_utils.assert)(!this._disposed, `${this._guid} is disposed more than once`);
122
+ for (const controller of this._activeProgressControllers) {
123
+ if (!controller.metadata.potentiallyClosesScope)
124
+ controller.abort(error).catch(() => {
125
+ });
126
+ }
120
127
  this._onDispose();
121
128
  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);
126
- const list = this._connection._dispatchersByBucket.get(this._gcBucket);
127
- list === null || list === void 0 || list.delete(this._guid);
128
- this._connection._dispatchers.delete(this._guid);
129
-
130
- // Dispose all children.
131
- for (const dispatcher of [...this._dispatchers.values()]) dispatcher._disposeRecursively(error);
129
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
130
+ this._parent?._dispatchers.delete(this._guid);
131
+ const list = this.connection._dispatchersByBucket.get(this._gcBucket);
132
+ list?.delete(this._guid);
133
+ this.connection._dispatcherByGuid.delete(this._guid);
134
+ this.connection._dispatcherByObject.delete(this._object);
135
+ for (const dispatcher of [...this._dispatchers.values()])
136
+ dispatcher._disposeRecursively(error);
132
137
  this._dispatchers.clear();
133
- delete this._object[dispatcherSymbol];
134
- this._openScope.close(error);
135
138
  }
136
139
  _debugScopeState() {
137
140
  return {
138
141
  _guid: this._guid,
139
- objects: Array.from(this._dispatchers.values()).map(o => o._debugScopeState())
142
+ objects: Array.from(this._dispatchers.values()).map((o) => o._debugScopeState())
140
143
  };
141
144
  }
142
145
  async waitForEventInfo() {
143
- // Instrumentation takes care of this.
144
146
  }
145
147
  }
146
- exports.Dispatcher = Dispatcher;
147
148
  class RootDispatcher extends Dispatcher {
148
149
  constructor(connection, createPlaywright) {
149
- super(connection, {
150
- guid: ''
151
- }, 'Root', {});
152
- this._initialized = false;
150
+ super(connection, (0, import_instrumentation.createRootSdkObject)(), "Root", {});
153
151
  this.createPlaywright = createPlaywright;
152
+ this._initialized = false;
154
153
  }
155
- async initialize(params) {
156
- (0, _utils.assert)(this.createPlaywright);
157
- (0, _utils.assert)(!this._initialized);
154
+ async initialize(params, progress) {
155
+ (0, import_utils.assert)(this.createPlaywright);
156
+ (0, import_utils.assert)(!this._initialized);
158
157
  this._initialized = true;
159
158
  return {
160
159
  playwright: await this.createPlaywright(this, params)
161
160
  };
162
161
  }
163
162
  }
164
- exports.RootDispatcher = RootDispatcher;
165
163
  class DispatcherConnection {
166
164
  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;
165
+ this._dispatcherByGuid = /* @__PURE__ */ new Map();
166
+ this._dispatcherByObject = /* @__PURE__ */ new Map();
167
+ this._dispatchersByBucket = /* @__PURE__ */ new Map();
168
+ this.onmessage = (message) => {
169
+ };
170
+ this._waitOperations = /* @__PURE__ */ new Map();
172
171
  this._isLocal = !!isLocal;
173
172
  }
174
173
  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
- });
174
+ const validator = (0, import_validator.findValidator)(dispatcher._type, event, "Event");
175
+ params = validator(params, "", this._validatorToWireContext());
176
+ this.onmessage({ guid: dispatcher._guid, method: event, params });
182
177
  }
183
178
  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
- });
179
+ const validator = (0, import_validator.findValidator)(type, "", "Initializer");
180
+ initializer = validator(initializer, "", this._validatorToWireContext());
181
+ this.onmessage({ guid: parent._guid, method: "__create__", params: { type, initializer, guid } });
195
182
  }
196
183
  sendAdopt(parent, dispatcher) {
197
- this.onmessage({
198
- guid: parent._guid,
199
- method: '__adopt__',
200
- params: {
201
- guid: dispatcher._guid
202
- }
203
- });
184
+ this.onmessage({ guid: parent._guid, method: "__adopt__", params: { guid: dispatcher._guid } });
204
185
  }
205
186
  sendDispose(dispatcher, reason) {
206
- this.onmessage({
207
- guid: dispatcher._guid,
208
- method: '__dispose__',
209
- params: {
210
- reason
211
- }
212
- });
187
+ this.onmessage({ guid: dispatcher._guid, method: "__dispose__", params: { reason } });
213
188
  }
214
189
  _validatorToWireContext() {
215
190
  return {
216
191
  tChannelImpl: this._tChannelImplToWire.bind(this),
217
- binary: this._isLocal ? 'buffer' : 'toBase64',
218
- isUnderTest: _debug.isUnderTest
192
+ binary: this._isLocal ? "buffer" : "toBase64",
193
+ isUnderTest: import_debug.isUnderTest
219
194
  };
220
195
  }
221
196
  _validatorFromWireContext() {
222
197
  return {
223
198
  tChannelImpl: this._tChannelImplFromWire.bind(this),
224
- binary: this._isLocal ? 'buffer' : 'fromBase64',
225
- isUnderTest: _debug.isUnderTest
199
+ binary: this._isLocal ? "buffer" : "fromBase64",
200
+ isUnderTest: import_debug.isUnderTest
226
201
  };
227
202
  }
228
203
  _tChannelImplFromWire(names, arg, path, context) {
229
- if (arg && typeof arg === 'object' && typeof arg.guid === 'string') {
204
+ if (arg && typeof arg === "object" && typeof arg.guid === "string") {
230
205
  const guid = arg.guid;
231
- 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()}`);
206
+ const dispatcher = this._dispatcherByGuid.get(guid);
207
+ if (!dispatcher)
208
+ throw new import_validator.ValidationError(`${path}: no object with guid ${guid}`);
209
+ if (names !== "*" && !names.includes(dispatcher._type))
210
+ throw new import_validator.ValidationError(`${path}: object with guid ${guid} has type ${dispatcher._type}, expected ${names.toString()}`);
234
211
  return dispatcher;
235
212
  }
236
- throw new _validator.ValidationError(`${path}: expected guid for ${names.toString()}`);
213
+ throw new import_validator.ValidationError(`${path}: expected guid for ${names.toString()}`);
237
214
  }
238
215
  _tChannelImplToWire(names, arg, path, context) {
239
216
  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
- };
217
+ if (names !== "*" && !names.includes(arg._type))
218
+ throw new import_validator.ValidationError(`${path}: dispatcher with guid ${arg._guid} has type ${arg._type}, expected ${names.toString()}`);
219
+ return { guid: arg._guid };
244
220
  }
245
- throw new _validator.ValidationError(`${path}: expected dispatcher ${names.toString()}`);
221
+ throw new import_validator.ValidationError(`${path}: expected dispatcher ${names.toString()}`);
222
+ }
223
+ existingDispatcher(object) {
224
+ return this._dispatcherByObject.get(object);
246
225
  }
247
226
  registerDispatcher(dispatcher) {
248
- (0, _utils.assert)(!this._dispatchers.has(dispatcher._guid));
249
- this._dispatchers.set(dispatcher._guid, dispatcher);
227
+ (0, import_utils.assert)(!this._dispatcherByGuid.has(dispatcher._guid));
228
+ this._dispatcherByGuid.set(dispatcher._guid, dispatcher);
229
+ this._dispatcherByObject.set(dispatcher._object, dispatcher);
250
230
  let list = this._dispatchersByBucket.get(dispatcher._gcBucket);
251
231
  if (!list) {
252
- list = new Set();
232
+ list = /* @__PURE__ */ new Set();
253
233
  this._dispatchersByBucket.set(dispatcher._gcBucket, list);
254
234
  }
255
235
  list.add(dispatcher._guid);
@@ -257,141 +237,121 @@ class DispatcherConnection {
257
237
  maybeDisposeStaleDispatchers(gcBucket) {
258
238
  const maxDispatchers = maxDispatchersForBucket(gcBucket);
259
239
  const list = this._dispatchersByBucket.get(gcBucket);
260
- if (!list || list.size <= maxDispatchers) return;
240
+ if (!list || list.size <= maxDispatchers)
241
+ return;
261
242
  const dispatchersArray = [...list];
262
243
  const disposeCount = maxDispatchers / 10 | 0;
263
244
  this._dispatchersByBucket.set(gcBucket, new Set(dispatchersArray.slice(disposeCount)));
264
245
  for (let i = 0; i < disposeCount; ++i) {
265
- const d = this._dispatchers.get(dispatchersArray[i]);
266
- if (!d) continue;
267
- d._dispose('gc');
246
+ const d = this._dispatcherByGuid.get(dispatchersArray[i]);
247
+ if (!d)
248
+ continue;
249
+ d._dispose("gc");
268
250
  }
269
251
  }
270
252
  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;
279
- const dispatcher = this._dispatchers.get(guid);
253
+ const { id, guid, method, params, metadata } = message;
254
+ const dispatcher = this._dispatcherByGuid.get(guid);
280
255
  if (!dispatcher) {
281
- this.onmessage({
282
- id,
283
- error: (0, _errors.serializeError)(new _errors.TargetClosedError())
284
- });
256
+ this.onmessage({ id, error: (0, import_errors.serializeError)(new import_errors.TargetClosedError()) });
285
257
  return;
286
258
  }
287
259
  let validParams;
288
260
  let validMetadata;
289
261
  try {
290
- const validator = (0, _validator.findValidator)(dispatcher._type, method, 'Params');
262
+ const validator = (0, import_validator.findValidator)(dispatcher._type, method, "Params");
291
263
  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}"`);
264
+ validParams = validator(params, "", validatorContext);
265
+ validMetadata = metadataValidator(metadata, "", validatorContext);
266
+ if (typeof dispatcher[method] !== "function")
267
+ throw new Error(`Mismatching dispatcher: "${dispatcher._type}" does not implement "${method}"`);
295
268
  } catch (e) {
296
- this.onmessage({
297
- id,
298
- error: (0, _errors.serializeError)(e)
299
- });
269
+ this.onmessage({ id, error: (0, import_errors.serializeError)(e) });
300
270
  return;
301
271
  }
302
- const sdkObject = dispatcher._object instanceof _instrumentation.SdkObject ? dispatcher._object : undefined;
272
+ if (import_protocolMetainfo.methodMetainfo.get(dispatcher._type + "." + method)?.internal) {
273
+ validMetadata.internal = true;
274
+ }
275
+ const sdkObject = dispatcher._object;
303
276
  const callMetadata = {
304
277
  id: `call@${id}`,
305
278
  location: validMetadata.location,
306
- apiName: validMetadata.apiName,
279
+ title: validMetadata.title,
307
280
  internal: validMetadata.internal,
308
281
  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)(),
282
+ objectId: sdkObject.guid,
283
+ pageId: sdkObject.attribution?.page?.guid,
284
+ frameId: sdkObject.attribution?.frame?.guid,
285
+ startTime: (0, import_utils.monotonicTime)(),
313
286
  endTime: 0,
314
287
  type: dispatcher._type,
315
288
  method,
316
289
  params: params || {},
317
290
  log: []
318
291
  };
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.
292
+ if (params?.info?.waitId) {
321
293
  const info = params.info;
322
294
  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
- }
295
+ case "before": {
296
+ this._waitOperations.set(info.waitId, callMetadata);
297
+ await sdkObject.instrumentation.onBeforeCall(sdkObject, callMetadata);
298
+ this.onmessage({ id });
299
+ return;
300
+ }
301
+ case "log": {
302
+ const originalMetadata = this._waitOperations.get(info.waitId);
303
+ originalMetadata.log.push(info.message);
304
+ sdkObject.instrumentation.onCallLog(sdkObject, originalMetadata, "api", info.message);
305
+ this.onmessage({ id });
306
+ return;
307
+ }
308
+ case "after": {
309
+ const originalMetadata = this._waitOperations.get(info.waitId);
310
+ originalMetadata.endTime = (0, import_utils.monotonicTime)();
311
+ originalMetadata.error = info.error ? { error: { name: "Error", message: info.error } } : void 0;
312
+ this._waitOperations.delete(info.waitId);
313
+ await sdkObject.instrumentation.onAfterCall(sdkObject, originalMetadata);
314
+ this.onmessage({ id });
315
+ return;
316
+ }
359
317
  }
360
318
  }
361
- await (sdkObject === null || sdkObject === void 0 ? void 0 : sdkObject.instrumentation.onBeforeCall(sdkObject, callMetadata));
362
- const response = {
363
- id
364
- };
319
+ await sdkObject.instrumentation.onBeforeCall(sdkObject, callMetadata);
320
+ const response = { id };
365
321
  try {
366
- 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());
322
+ const result = await dispatcher._runCommand(callMetadata, method, validParams);
323
+ const validator = (0, import_validator.findValidator)(dispatcher._type, method, "Result");
324
+ response.result = validator(result, "", this._validatorToWireContext());
369
325
  callMetadata.result = result;
370
326
  } catch (e) {
371
- if ((0, _errors.isTargetClosedError)(e) && sdkObject) {
327
+ if ((0, import_errors.isTargetClosedError)(e)) {
372
328
  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());
380
- }
329
+ if (reason)
330
+ (0, import_utils.rewriteErrorMessage)(e, reason);
331
+ } else if ((0, import_protocolError.isProtocolError)(e)) {
332
+ if (e.type === "closed")
333
+ e = new import_errors.TargetClosedError(closeReason(sdkObject), e.browserLogMessage());
334
+ else if (e.type === "crashed")
335
+ (0, import_utils.rewriteErrorMessage)(e, "Target crashed " + e.browserLogMessage());
381
336
  }
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.
337
+ response.error = (0, import_errors.serializeError)(e);
384
338
  callMetadata.error = response.error;
385
339
  } finally {
386
- callMetadata.endTime = (0, _utils.monotonicTime)();
387
- await (sdkObject === null || sdkObject === void 0 ? void 0 : sdkObject.instrumentation.onAfterCall(sdkObject, callMetadata));
340
+ callMetadata.endTime = (0, import_utils.monotonicTime)();
341
+ await sdkObject.instrumentation.onAfterCall(sdkObject, callMetadata);
388
342
  }
389
- if (response.error) response.log = (0, _callLog.compressCallLog)(callMetadata.log);
343
+ if (response.error)
344
+ response.log = (0, import_callLog.compressCallLog)(callMetadata.log);
390
345
  this.onmessage(response);
391
346
  }
392
347
  }
393
- exports.DispatcherConnection = DispatcherConnection;
394
348
  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
- }
349
+ return sdkObject.attribution.page?.closeReason || sdkObject.attribution.context?._closeReason || sdkObject.attribution.browser?._closeReason;
350
+ }
351
+ // Annotate the CommonJS export names for ESM import in node:
352
+ 0 && (module.exports = {
353
+ Dispatcher,
354
+ DispatcherConnection,
355
+ RootDispatcher,
356
+ setMaxDispatchersForTest
357
+ });