@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,122 +1,122 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var wkPage_exports = {};
30
+ __export(wkPage_exports, {
31
+ WKPage: () => WKPage
5
32
  });
6
- exports.WKPage = void 0;
7
- var _path = _interopRequireDefault(require("path"));
8
- var _utils = require("../../utils");
9
- var _headers = require("../../utils/isomorphic/headers");
10
- var _crypto = require("../utils/crypto");
11
- var _eventsHelper = require("../utils/eventsHelper");
12
- var _hostPlatform = require("../utils/hostPlatform");
13
- var _stackTrace = require("../../utils/isomorphic/stackTrace");
14
- var _utilsBundle = require("../../utilsBundle");
15
- var _browserContext = require("../browserContext");
16
- var dialog = _interopRequireWildcard(require("../dialog"));
17
- var dom = _interopRequireWildcard(require("../dom"));
18
- var _errors = require("../errors");
19
- var _helper = require("../helper");
20
- var network = _interopRequireWildcard(require("../network"));
21
- var _page = require("../page");
22
- var _wkAccessibility = require("./wkAccessibility");
23
- var _wkConnection = require("./wkConnection");
24
- var _wkExecutionContext = require("./wkExecutionContext");
25
- var _wkInput = require("./wkInput");
26
- var _wkInterceptableRequest = require("./wkInterceptableRequest");
27
- var _wkProvisionalPage = require("./wkProvisionalPage");
28
- var _wkWorkers = require("./wkWorkers");
29
- var _debugLogger = require("../utils/debugLogger");
30
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
31
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
32
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
33
- /**
34
- * Copyright 2017 Google Inc. All rights reserved.
35
- * Modifications copyright (c) Microsoft Corporation.
36
- *
37
- * Licensed under the Apache License, Version 2.0 (the "License");
38
- * you may not use this file except in compliance with the License.
39
- * You may obtain a copy of the License at
40
- *
41
- * http://www.apache.org/licenses/LICENSE-2.0
42
- *
43
- * Unless required by applicable law or agreed to in writing, software
44
- * distributed under the License is distributed on an "AS IS" BASIS,
45
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
46
- * See the License for the specific language governing permissions and
47
- * limitations under the License.
48
- */
49
-
50
- const UTILITY_WORLD_NAME = '__playwright_utility_world__';
33
+ module.exports = __toCommonJS(wkPage_exports);
34
+ var import_path = __toESM(require("path"));
35
+ var import_utils = require("../../utils");
36
+ var import_headers = require("../../utils/isomorphic/headers");
37
+ var import_crypto = require("../utils/crypto");
38
+ var import_eventsHelper = require("../utils/eventsHelper");
39
+ var import_hostPlatform = require("../utils/hostPlatform");
40
+ var import_stackTrace = require("../../utils/isomorphic/stackTrace");
41
+ var import_utilsBundle = require("../../utilsBundle");
42
+ var import_browserContext = require("../browserContext");
43
+ var dialog = __toESM(require("../dialog"));
44
+ var dom = __toESM(require("../dom"));
45
+ var import_errors = require("../errors");
46
+ var import_helper = require("../helper");
47
+ var network = __toESM(require("../network"));
48
+ var import_page = require("../page");
49
+ var import_wkAccessibility = require("./wkAccessibility");
50
+ var import_wkConnection = require("./wkConnection");
51
+ var import_wkExecutionContext = require("./wkExecutionContext");
52
+ var import_wkInput = require("./wkInput");
53
+ var import_wkInterceptableRequest = require("./wkInterceptableRequest");
54
+ var import_wkProvisionalPage = require("./wkProvisionalPage");
55
+ var import_wkWorkers = require("./wkWorkers");
56
+ var import_debugLogger = require("../utils/debugLogger");
57
+ const UTILITY_WORLD_NAME = "__playwright_utility_world__";
51
58
  class WKPage {
52
59
  constructor(browserContext, pageProxySession, opener) {
53
- this.rawMouse = void 0;
54
- this.rawKeyboard = void 0;
55
- this.rawTouchscreen = void 0;
56
- this._session = void 0;
57
60
  this._provisionalPage = null;
58
- this._page = void 0;
59
- this._pageProxySession = void 0;
60
- this._opener = void 0;
61
- this._requestIdToRequest = new Map();
62
- this._requestIdToRequestWillBeSentEvent = new Map();
63
- this._workers = void 0;
64
- this._contextIdToContext = void 0;
61
+ this._requestIdToRequest = /* @__PURE__ */ new Map();
62
+ this._requestIdToRequestWillBeSentEvent = /* @__PURE__ */ new Map();
65
63
  this._sessionListeners = [];
66
- this._eventListeners = void 0;
67
- this._browserContext = void 0;
68
- this._firstNonInitialNavigationCommittedPromise = void 0;
69
- this._firstNonInitialNavigationCommittedFulfill = () => {};
70
- this._firstNonInitialNavigationCommittedReject = e => {};
64
+ this._firstNonInitialNavigationCommittedFulfill = () => {
65
+ };
66
+ this._firstNonInitialNavigationCommittedReject = (e) => {
67
+ };
71
68
  this._lastConsoleMessage = null;
72
- this._requestIdToResponseReceivedPayloadEvent = new Map();
73
- // Holds window features for the next popup being opened via window.open,
74
- // until the popup page proxy arrives.
75
- this._nextWindowOpenPopupFeatures = void 0;
69
+ this._requestIdToResponseReceivedPayloadEvent = /* @__PURE__ */ new Map();
76
70
  this._recordingVideoFile = null;
77
71
  this._screencastGeneration = 0;
78
72
  this._pageProxySession = pageProxySession;
79
73
  this._opener = opener;
80
- this.rawKeyboard = new _wkInput.RawKeyboardImpl(pageProxySession);
81
- this.rawMouse = new _wkInput.RawMouseImpl(pageProxySession);
82
- this.rawTouchscreen = new _wkInput.RawTouchscreenImpl(pageProxySession);
83
- this._contextIdToContext = new Map();
84
- this._page = new _page.Page(this, browserContext);
74
+ this.rawKeyboard = new import_wkInput.RawKeyboardImpl(pageProxySession);
75
+ this.rawMouse = new import_wkInput.RawMouseImpl(pageProxySession);
76
+ this.rawTouchscreen = new import_wkInput.RawTouchscreenImpl(pageProxySession);
77
+ this._contextIdToContext = /* @__PURE__ */ new Map();
78
+ this._page = new import_page.Page(this, browserContext);
85
79
  this.rawMouse.setPage(this._page);
86
- this._workers = new _wkWorkers.WKWorkers(this._page);
87
- this._session = undefined;
80
+ this._workers = new import_wkWorkers.WKWorkers(this._page);
81
+ this._session = void 0;
88
82
  this._browserContext = browserContext;
89
- this._page.on(_page.Page.Events.FrameDetached, frame => this._removeContextsForFrame(frame, false));
90
- this._eventListeners = [_eventsHelper.eventsHelper.addEventListener(this._pageProxySession, 'Target.targetCreated', this._onTargetCreated.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._pageProxySession, 'Target.targetDestroyed', this._onTargetDestroyed.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._pageProxySession, 'Target.dispatchMessageFromTarget', this._onDispatchMessageFromTarget.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._pageProxySession, 'Target.didCommitProvisionalTarget', this._onDidCommitProvisionalTarget.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._pageProxySession, 'Screencast.screencastFrame', this._onScreencastFrame.bind(this))];
83
+ this._page.on(import_page.Page.Events.FrameDetached, (frame) => this._removeContextsForFrame(frame, false));
84
+ this._eventListeners = [
85
+ import_eventsHelper.eventsHelper.addEventListener(this._pageProxySession, "Target.targetCreated", this._onTargetCreated.bind(this)),
86
+ import_eventsHelper.eventsHelper.addEventListener(this._pageProxySession, "Target.targetDestroyed", this._onTargetDestroyed.bind(this)),
87
+ import_eventsHelper.eventsHelper.addEventListener(this._pageProxySession, "Target.dispatchMessageFromTarget", this._onDispatchMessageFromTarget.bind(this)),
88
+ import_eventsHelper.eventsHelper.addEventListener(this._pageProxySession, "Target.didCommitProvisionalTarget", this._onDidCommitProvisionalTarget.bind(this)),
89
+ import_eventsHelper.eventsHelper.addEventListener(this._pageProxySession, "Screencast.screencastFrame", this._onScreencastFrame.bind(this))
90
+ ];
91
91
  this._firstNonInitialNavigationCommittedPromise = new Promise((f, r) => {
92
92
  this._firstNonInitialNavigationCommittedFulfill = f;
93
93
  this._firstNonInitialNavigationCommittedReject = r;
94
94
  });
95
95
  if (opener && !browserContext._options.noDefaultViewport && opener._nextWindowOpenPopupFeatures) {
96
- const viewportSize = _helper.helper.getViewportSizeFromWindowFeatures(opener._nextWindowOpenPopupFeatures);
97
- opener._nextWindowOpenPopupFeatures = undefined;
98
- if (viewportSize) this._page._emulatedSize = {
99
- viewport: viewportSize,
100
- screen: viewportSize
101
- };
96
+ const viewportSize = import_helper.helper.getViewportSizeFromWindowFeatures(opener._nextWindowOpenPopupFeatures);
97
+ opener._nextWindowOpenPopupFeatures = void 0;
98
+ if (viewportSize)
99
+ this._page.setEmulatedSizeFromWindowOpen({ viewport: viewportSize, screen: viewportSize });
102
100
  }
103
101
  }
104
102
  async _initializePageProxySession() {
105
- if (this._page._browserContext.isSettingStorageState()) return;
106
- const promises = [this._pageProxySession.send('Dialog.enable'), this._pageProxySession.send('Emulation.setActiveAndFocused', {
107
- active: true
108
- })];
103
+ if (this._page.browserContext.isSettingStorageState())
104
+ return;
105
+ const promises = [
106
+ this._pageProxySession.send("Dialog.enable"),
107
+ this._pageProxySession.send("Emulation.setActiveAndFocused", { active: true })
108
+ ];
109
109
  const contextOptions = this._browserContext._options;
110
- if (contextOptions.javaScriptEnabled === false) promises.push(this._pageProxySession.send('Emulation.setJavaScriptEnabled', {
111
- enabled: false
112
- }));
110
+ if (contextOptions.javaScriptEnabled === false)
111
+ promises.push(this._pageProxySession.send("Emulation.setJavaScriptEnabled", { enabled: false }));
113
112
  promises.push(this._updateViewport());
114
113
  promises.push(this.updateHttpCredentials());
115
114
  if (this._browserContext._permissions.size) {
116
- for (const [key, value] of this._browserContext._permissions) promises.push(this._grantPermissions(key, value));
115
+ for (const [key, value] of this._browserContext._permissions)
116
+ promises.push(this._grantPermissions(key, value));
117
117
  }
118
118
  if (this._browserContext._options.recordVideo) {
119
- const outputFile = _path.default.join(this._browserContext._options.recordVideo.dir, (0, _crypto.createGuid)() + '.webm');
119
+ const outputFile = import_path.default.join(this._browserContext._options.recordVideo.dir, (0, import_crypto.createGuid)() + ".webm");
120
120
  promises.push(this._browserContext._ensureVideosPath().then(() => {
121
121
  return this._startVideo({
122
122
  // validateBrowserContextOptions ensures correct video size.
@@ -128,134 +128,101 @@ class WKPage {
128
128
  await Promise.all(promises);
129
129
  }
130
130
  _setSession(session) {
131
- _eventsHelper.eventsHelper.removeEventListeners(this._sessionListeners);
131
+ import_eventsHelper.eventsHelper.removeEventListeners(this._sessionListeners);
132
132
  this._session = session;
133
133
  this.rawKeyboard.setSession(session);
134
134
  this.rawMouse.setSession(session);
135
135
  this._addSessionListeners();
136
136
  this._workers.setSession(session);
137
137
  }
138
-
139
138
  // This method is called for provisional targets as well. The session passed as the parameter
140
139
  // may be different from the current session and may be destroyed without becoming current.
141
140
  async _initializeSession(session, provisional, resourceTreeHandler) {
142
- await this._initializeSessionMayThrow(session, resourceTreeHandler).catch(e => {
143
- // Provisional session can be disposed at any time, for example due to new navigation initiating
144
- // a new provisional page.
145
- if (provisional && session.isDisposed()) return;
146
- // Swallow initialization errors due to newer target swap in,
147
- // since we will reinitialize again.
148
- if (this._session === session) throw e;
141
+ await this._initializeSessionMayThrow(session, resourceTreeHandler).catch((e) => {
142
+ if (provisional && session.isDisposed())
143
+ return;
144
+ if (this._session === session)
145
+ throw e;
149
146
  });
150
147
  }
151
148
  async _initializeSessionMayThrow(session, resourceTreeHandler) {
152
149
  const [, frameTree] = await Promise.all([
153
- // Page agent must be enabled before Runtime.
154
- session.send('Page.enable'), session.send('Page.getResourceTree')]);
150
+ // Page agent must be enabled before Runtime.
151
+ session.send("Page.enable"),
152
+ session.send("Page.getResourceTree")
153
+ ]);
155
154
  resourceTreeHandler(frameTree);
156
155
  const promises = [
157
- // Resource tree should be received before first execution context.
158
- session.send('Runtime.enable'), session.send('Runtime.addBinding', {
159
- name: _page.PageBinding.kPlaywrightBinding
160
- }), session.send('Page.createUserWorld', {
161
- name: UTILITY_WORLD_NAME
162
- }).catch(_ => {}),
163
- // Worlds are per-process
164
- session.send('Console.enable'), session.send('Network.enable'), this._workers.initializeSession(session)];
156
+ // Resource tree should be received before first execution context.
157
+ session.send("Runtime.enable"),
158
+ session.send("Page.createUserWorld", { name: UTILITY_WORLD_NAME }).catch((_) => {
159
+ }),
160
+ // Worlds are per-process
161
+ session.send("Console.enable"),
162
+ session.send("Network.enable"),
163
+ this._workers.initializeSession(session)
164
+ ];
165
+ if (this._page.browserContext.needsPlaywrightBinding())
166
+ promises.push(session.send("Runtime.addBinding", { name: import_page.PageBinding.kBindingName }));
165
167
  if (this._page.needsRequestInterception()) {
166
- promises.push(session.send('Network.setInterceptionEnabled', {
167
- enabled: true
168
- }));
169
- promises.push(session.send('Network.setResourceCachingDisabled', {
170
- disabled: true
171
- }));
172
- promises.push(session.send('Network.addInterception', {
173
- url: '.*',
174
- stage: 'request',
175
- isRegex: true
176
- }));
168
+ promises.push(session.send("Network.setInterceptionEnabled", { enabled: true }));
169
+ promises.push(session.send("Network.setResourceCachingDisabled", { disabled: true }));
170
+ promises.push(session.send("Network.addInterception", { url: ".*", stage: "request", isRegex: true }));
177
171
  }
178
- if (this._page._browserContext.isSettingStorageState()) {
172
+ if (this._page.browserContext.isSettingStorageState()) {
179
173
  await Promise.all(promises);
180
174
  return;
181
175
  }
182
176
  const contextOptions = this._browserContext._options;
183
- if (contextOptions.userAgent) promises.push(this.updateUserAgent());
177
+ if (contextOptions.userAgent)
178
+ promises.push(this.updateUserAgent());
184
179
  const emulatedMedia = this._page.emulatedMedia();
185
- if (emulatedMedia.media || emulatedMedia.colorScheme || emulatedMedia.reducedMotion || emulatedMedia.forcedColors || emulatedMedia.contrast) promises.push(WKPage._setEmulateMedia(session, emulatedMedia.media, emulatedMedia.colorScheme, emulatedMedia.reducedMotion, emulatedMedia.forcedColors, emulatedMedia.contrast));
180
+ if (emulatedMedia.media || emulatedMedia.colorScheme || emulatedMedia.reducedMotion || emulatedMedia.forcedColors || emulatedMedia.contrast)
181
+ promises.push(WKPage._setEmulateMedia(session, emulatedMedia.media, emulatedMedia.colorScheme, emulatedMedia.reducedMotion, emulatedMedia.forcedColors, emulatedMedia.contrast));
186
182
  const bootstrapScript = this._calculateBootstrapScript();
187
- if (bootstrapScript.length) promises.push(session.send('Page.setBootstrapScript', {
188
- source: bootstrapScript
189
- }));
190
- this._page.frames().map(frame => frame.evaluateExpression(bootstrapScript).catch(e => {}));
191
- if (contextOptions.bypassCSP) promises.push(session.send('Page.setBypassCSP', {
192
- enabled: true
183
+ if (bootstrapScript.length)
184
+ promises.push(session.send("Page.setBootstrapScript", { source: bootstrapScript }));
185
+ this._page.frames().map((frame) => frame.evaluateExpression(bootstrapScript).catch((e) => {
193
186
  }));
187
+ if (contextOptions.bypassCSP)
188
+ promises.push(session.send("Page.setBypassCSP", { enabled: true }));
194
189
  const emulatedSize = this._page.emulatedSize();
195
190
  if (emulatedSize) {
196
- promises.push(session.send('Page.setScreenSizeOverride', {
191
+ promises.push(session.send("Page.setScreenSizeOverride", {
197
192
  width: emulatedSize.screen.width,
198
193
  height: emulatedSize.screen.height
199
194
  }));
200
195
  }
201
196
  promises.push(this.updateEmulateMedia());
202
- promises.push(session.send('Network.setExtraHTTPHeaders', {
203
- headers: (0, _headers.headersArrayToObject)(this._calculateExtraHTTPHeaders(), false /* lowerCase */)
204
- }));
205
- if (contextOptions.offline) promises.push(session.send('Network.setEmulateOfflineState', {
206
- offline: true
207
- }));
208
- promises.push(session.send('Page.setTouchEmulationEnabled', {
209
- enabled: !!contextOptions.hasTouch
210
- }));
197
+ promises.push(session.send("Network.setExtraHTTPHeaders", { headers: (0, import_headers.headersArrayToObject)(
198
+ this._calculateExtraHTTPHeaders(),
199
+ false
200
+ /* lowerCase */
201
+ ) }));
202
+ if (contextOptions.offline)
203
+ promises.push(session.send("Network.setEmulateOfflineState", { offline: true }));
204
+ promises.push(session.send("Page.setTouchEmulationEnabled", { enabled: !!contextOptions.hasTouch }));
211
205
  if (contextOptions.timezoneId) {
212
- promises.push(session.send('Page.setTimeZone', {
213
- timeZone: contextOptions.timezoneId
214
- }).catch(e => {
206
+ promises.push(session.send("Page.setTimeZone", { timeZone: contextOptions.timezoneId }).catch((e) => {
215
207
  throw new Error(`Invalid timezone ID: ${contextOptions.timezoneId}`);
216
208
  }));
217
209
  }
218
- if (this._page.fileChooserIntercepted()) promises.push(session.send('Page.setInterceptFileChooserDialog', {
219
- enabled: true
220
- }));
221
- promises.push(session.send('Page.overrideSetting', {
222
- setting: 'DeviceOrientationEventEnabled',
223
- value: contextOptions.isMobile
224
- }));
225
- promises.push(session.send('Page.overrideSetting', {
226
- setting: 'FullScreenEnabled',
227
- value: !contextOptions.isMobile
228
- }));
229
- promises.push(session.send('Page.overrideSetting', {
230
- setting: 'NotificationsEnabled',
231
- value: !contextOptions.isMobile
232
- }));
233
- promises.push(session.send('Page.overrideSetting', {
234
- setting: 'PointerLockEnabled',
235
- value: !contextOptions.isMobile
236
- }));
237
- promises.push(session.send('Page.overrideSetting', {
238
- setting: 'InputTypeMonthEnabled',
239
- value: contextOptions.isMobile
240
- }));
241
- promises.push(session.send('Page.overrideSetting', {
242
- setting: 'InputTypeWeekEnabled',
243
- value: contextOptions.isMobile
244
- }));
245
- promises.push(session.send('Page.overrideSetting', {
246
- setting: 'FixedBackgroundsPaintRelativeToDocument',
247
- value: contextOptions.isMobile
248
- }));
210
+ if (this._page.fileChooserIntercepted())
211
+ promises.push(session.send("Page.setInterceptFileChooserDialog", { enabled: true }));
212
+ promises.push(session.send("Page.overrideSetting", { setting: "DeviceOrientationEventEnabled", value: contextOptions.isMobile }));
213
+ promises.push(session.send("Page.overrideSetting", { setting: "FullScreenEnabled", value: !contextOptions.isMobile }));
214
+ promises.push(session.send("Page.overrideSetting", { setting: "NotificationsEnabled", value: !contextOptions.isMobile }));
215
+ promises.push(session.send("Page.overrideSetting", { setting: "PointerLockEnabled", value: !contextOptions.isMobile }));
216
+ promises.push(session.send("Page.overrideSetting", { setting: "InputTypeMonthEnabled", value: contextOptions.isMobile }));
217
+ promises.push(session.send("Page.overrideSetting", { setting: "InputTypeWeekEnabled", value: contextOptions.isMobile }));
218
+ promises.push(session.send("Page.overrideSetting", { setting: "FixedBackgroundsPaintRelativeToDocument", value: contextOptions.isMobile }));
249
219
  await Promise.all(promises);
250
220
  }
251
221
  _onDidCommitProvisionalTarget(event) {
252
- const {
253
- oldTargetId,
254
- newTargetId
255
- } = event;
256
- (0, _utils.assert)(this._provisionalPage);
257
- (0, _utils.assert)(this._provisionalPage._session.sessionId === newTargetId, 'Unknown new target: ' + newTargetId);
258
- (0, _utils.assert)(this._session.sessionId === oldTargetId, 'Unknown old target: ' + oldTargetId);
222
+ const { oldTargetId, newTargetId } = event;
223
+ (0, import_utils.assert)(this._provisionalPage);
224
+ (0, import_utils.assert)(this._provisionalPage._session.sessionId === newTargetId, "Unknown new target: " + newTargetId);
225
+ (0, import_utils.assert)(this._session.sessionId === oldTargetId, "Unknown old target: " + oldTargetId);
259
226
  const newSession = this._provisionalPage._session;
260
227
  this._provisionalPage.commit();
261
228
  this._provisionalPage.dispose();
@@ -263,10 +230,7 @@ class WKPage {
263
230
  this._setSession(newSession);
264
231
  }
265
232
  _onTargetDestroyed(event) {
266
- const {
267
- targetId,
268
- crashed
269
- } = event;
233
+ const { targetId, crashed } = event;
270
234
  if (this._provisionalPage && this._provisionalPage._session.sessionId === targetId) {
271
235
  this._maybeCancelCoopNavigationRequest(this._provisionalPage);
272
236
  this._provisionalPage._session.dispose();
@@ -274,7 +238,7 @@ class WKPage {
274
238
  this._provisionalPage = null;
275
239
  } else if (this._session.sessionId === targetId) {
276
240
  this._session.dispose();
277
- _eventsHelper.eventsHelper.removeEventListeners(this._sessionListeners);
241
+ import_eventsHelper.eventsHelper.removeEventListeners(this._sessionListeners);
278
242
  if (crashed) {
279
243
  this._session.markAsCrashed();
280
244
  this._page._didCrash();
@@ -283,15 +247,16 @@ class WKPage {
283
247
  }
284
248
  didClose() {
285
249
  this._pageProxySession.dispose();
286
- _eventsHelper.eventsHelper.removeEventListeners(this._sessionListeners);
287
- _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
288
- if (this._session) this._session.dispose();
250
+ import_eventsHelper.eventsHelper.removeEventListeners(this._sessionListeners);
251
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
252
+ if (this._session)
253
+ this._session.dispose();
289
254
  if (this._provisionalPage) {
290
255
  this._provisionalPage._session.dispose();
291
256
  this._provisionalPage.dispose();
292
257
  this._provisionalPage = null;
293
258
  }
294
- this._firstNonInitialNavigationCommittedReject(new _errors.TargetClosedError());
259
+ this._firstNonInitialNavigationCommittedReject(new import_errors.TargetClosedError());
295
260
  this._page._didClose();
296
261
  }
297
262
  dispatchMessageToSession(message) {
@@ -299,220 +264,229 @@ class WKPage {
299
264
  }
300
265
  handleProvisionalLoadFailed(event) {
301
266
  if (!this._page.initializedOrUndefined()) {
302
- this._firstNonInitialNavigationCommittedReject(new Error('Initial load failed'));
267
+ this._firstNonInitialNavigationCommittedReject(new Error("Initial load failed"));
303
268
  return;
304
269
  }
305
- if (!this._provisionalPage) return;
270
+ if (!this._provisionalPage)
271
+ return;
306
272
  let errorText = event.error;
307
- if (errorText.includes('cancelled')) errorText += '; maybe frame was detached?';
308
- this._page._frameManager.frameAbortedNavigation(this._page.mainFrame()._id, errorText, event.loaderId);
273
+ if (errorText.includes("cancelled"))
274
+ errorText += "; maybe frame was detached?";
275
+ this._page.frameManager.frameAbortedNavigation(this._page.mainFrame()._id, errorText, event.loaderId);
309
276
  }
310
277
  handleWindowOpen(event) {
311
278
  this._nextWindowOpenPopupFeatures = event.windowFeatures;
312
279
  }
313
280
  async _onTargetCreated(event) {
314
- const {
315
- targetInfo
316
- } = event;
317
- const session = new _wkConnection.WKSession(this._pageProxySession.connection, targetInfo.targetId, message => {
318
- this._pageProxySession.send('Target.sendMessageToTarget', {
281
+ const { targetInfo } = event;
282
+ const session = new import_wkConnection.WKSession(this._pageProxySession.connection, targetInfo.targetId, (message) => {
283
+ this._pageProxySession.send("Target.sendMessageToTarget", {
319
284
  message: JSON.stringify(message),
320
285
  targetId: targetInfo.targetId
321
- }).catch(e => {
322
- session.dispatchMessage({
323
- id: message.id,
324
- error: {
325
- message: e.message
326
- }
327
- });
286
+ }).catch((e) => {
287
+ session.dispatchMessage({ id: message.id, error: { message: e.message } });
328
288
  });
329
289
  });
330
- (0, _utils.assert)(targetInfo.type === 'page', 'Only page targets are expected in WebKit, received: ' + targetInfo.type);
290
+ (0, import_utils.assert)(targetInfo.type === "page", "Only page targets are expected in WebKit, received: " + targetInfo.type);
331
291
  if (!targetInfo.isProvisional) {
332
- var _this$_opener;
333
- (0, _utils.assert)(!this._page.initializedOrUndefined());
292
+ (0, import_utils.assert)(!this._page.initializedOrUndefined());
334
293
  let pageOrError;
335
294
  try {
336
295
  this._setSession(session);
337
- await Promise.all([this._initializePageProxySession(), this._initializeSession(session, false, ({
338
- frameTree
339
- }) => this._handleFrameTree(frameTree))]);
296
+ await Promise.all([
297
+ this._initializePageProxySession(),
298
+ this._initializeSession(session, false, ({ frameTree }) => this._handleFrameTree(frameTree))
299
+ ]);
340
300
  pageOrError = this._page;
341
301
  } catch (e) {
342
302
  pageOrError = e;
343
303
  }
344
- if (targetInfo.isPaused) this._pageProxySession.sendMayFail('Target.resume', {
345
- targetId: targetInfo.targetId
346
- });
347
- if (pageOrError instanceof _page.Page && this._page.mainFrame().url() === '') {
304
+ if (targetInfo.isPaused)
305
+ this._pageProxySession.sendMayFail("Target.resume", { targetId: targetInfo.targetId });
306
+ if (pageOrError instanceof import_page.Page && this._page.mainFrame().url() === "") {
348
307
  try {
349
- // Initial empty page has an empty url. We should wait until the first real url has been loaded,
350
- // even if that url is about:blank. This is especially important for popups, where we need the
351
- // actual url before interacting with it.
352
308
  await this._firstNonInitialNavigationCommittedPromise;
353
309
  } catch (e) {
354
310
  pageOrError = e;
355
311
  }
356
312
  } else {
357
- // Avoid rejection on disconnect.
358
- this._firstNonInitialNavigationCommittedPromise.catch(() => {});
313
+ this._firstNonInitialNavigationCommittedPromise.catch(() => {
314
+ });
359
315
  }
360
- this._page.reportAsNew((_this$_opener = this._opener) === null || _this$_opener === void 0 ? void 0 : _this$_opener._page, pageOrError instanceof _page.Page ? undefined : pageOrError);
316
+ this._page.reportAsNew(this._opener?._page, pageOrError instanceof import_page.Page ? void 0 : pageOrError);
361
317
  } else {
362
- (0, _utils.assert)(targetInfo.isProvisional);
363
- (0, _utils.assert)(!this._provisionalPage);
364
- this._provisionalPage = new _wkProvisionalPage.WKProvisionalPage(session, this);
318
+ (0, import_utils.assert)(targetInfo.isProvisional);
319
+ (0, import_utils.assert)(!this._provisionalPage);
320
+ this._provisionalPage = new import_wkProvisionalPage.WKProvisionalPage(session, this);
365
321
  if (targetInfo.isPaused) {
366
322
  this._provisionalPage.initializationPromise.then(() => {
367
- this._pageProxySession.sendMayFail('Target.resume', {
368
- targetId: targetInfo.targetId
369
- });
323
+ this._pageProxySession.sendMayFail("Target.resume", { targetId: targetInfo.targetId });
370
324
  });
371
325
  }
372
326
  }
373
327
  }
374
328
  _onDispatchMessageFromTarget(event) {
375
- const {
376
- targetId,
377
- message
378
- } = event;
379
- if (this._provisionalPage && this._provisionalPage._session.sessionId === targetId) this._provisionalPage._session.dispatchMessage(JSON.parse(message));else if (this._session.sessionId === targetId) this._session.dispatchMessage(JSON.parse(message));else throw new Error('Unknown target: ' + targetId);
329
+ const { targetId, message } = event;
330
+ if (this._provisionalPage && this._provisionalPage._session.sessionId === targetId)
331
+ this._provisionalPage._session.dispatchMessage(JSON.parse(message));
332
+ else if (this._session.sessionId === targetId)
333
+ this._session.dispatchMessage(JSON.parse(message));
334
+ else
335
+ throw new Error("Unknown target: " + targetId);
380
336
  }
381
337
  _addSessionListeners() {
382
- this._sessionListeners = [_eventsHelper.eventsHelper.addEventListener(this._session, 'Page.frameNavigated', event => this._onFrameNavigated(event.frame, false)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.navigatedWithinDocument', event => this._onFrameNavigatedWithinDocument(event.frameId, event.url)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.frameAttached', event => this._onFrameAttached(event.frameId, event.parentFrameId)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.frameDetached', event => this._onFrameDetached(event.frameId)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.willCheckNavigationPolicy', event => this._onWillCheckNavigationPolicy(event.frameId)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.didCheckNavigationPolicy', event => this._onDidCheckNavigationPolicy(event.frameId, event.cancel)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.frameScheduledNavigation', event => this._onFrameScheduledNavigation(event.frameId, event.delay, event.targetIsCurrentFrame)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.loadEventFired', event => this._page._frameManager.frameLifecycleEvent(event.frameId, 'load')), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.domContentEventFired', event => this._page._frameManager.frameLifecycleEvent(event.frameId, 'domcontentloaded')), _eventsHelper.eventsHelper.addEventListener(this._session, 'Runtime.executionContextCreated', event => this._onExecutionContextCreated(event.context)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Runtime.bindingCalled', event => this._onBindingCalled(event.contextId, event.argument)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Console.messageAdded', event => this._onConsoleMessage(event)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Console.messageRepeatCountUpdated', event => this._onConsoleRepeatCountUpdated(event)), _eventsHelper.eventsHelper.addEventListener(this._pageProxySession, 'Dialog.javascriptDialogOpening', event => this._onDialog(event)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.fileChooserOpened', event => this._onFileChooserOpened(event)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.requestWillBeSent', e => this._onRequestWillBeSent(this._session, e)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.requestIntercepted', e => this._onRequestIntercepted(this._session, e)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.responseReceived', e => this._onResponseReceived(this._session, e)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.loadingFinished', e => this._onLoadingFinished(e)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.loadingFailed', e => this._onLoadingFailed(this._session, e)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.webSocketCreated', e => this._page._frameManager.onWebSocketCreated(e.requestId, e.url)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.webSocketWillSendHandshakeRequest', e => this._page._frameManager.onWebSocketRequest(e.requestId)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.webSocketHandshakeResponseReceived', e => this._page._frameManager.onWebSocketResponse(e.requestId, e.response.status, e.response.statusText)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.webSocketFrameSent', e => e.response.payloadData && this._page._frameManager.onWebSocketFrameSent(e.requestId, e.response.opcode, e.response.payloadData)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.webSocketFrameReceived', e => e.response.payloadData && this._page._frameManager.webSocketFrameReceived(e.requestId, e.response.opcode, e.response.payloadData)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.webSocketClosed', e => this._page._frameManager.webSocketClosed(e.requestId)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Network.webSocketFrameError', e => this._page._frameManager.webSocketError(e.requestId, e.errorMessage))];
338
+ this._sessionListeners = [
339
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.frameNavigated", (event) => this._onFrameNavigated(event.frame, false)),
340
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.navigatedWithinDocument", (event) => this._onFrameNavigatedWithinDocument(event.frameId, event.url)),
341
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.frameAttached", (event) => this._onFrameAttached(event.frameId, event.parentFrameId)),
342
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.frameDetached", (event) => this._onFrameDetached(event.frameId)),
343
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.willCheckNavigationPolicy", (event) => this._onWillCheckNavigationPolicy(event.frameId)),
344
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.didCheckNavigationPolicy", (event) => this._onDidCheckNavigationPolicy(event.frameId, event.cancel)),
345
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.frameScheduledNavigation", (event) => this._onFrameScheduledNavigation(event.frameId, event.delay, event.targetIsCurrentFrame)),
346
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.loadEventFired", (event) => this._page.frameManager.frameLifecycleEvent(event.frameId, "load")),
347
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.domContentEventFired", (event) => this._page.frameManager.frameLifecycleEvent(event.frameId, "domcontentloaded")),
348
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Runtime.executionContextCreated", (event) => this._onExecutionContextCreated(event.context)),
349
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Runtime.bindingCalled", (event) => this._onBindingCalled(event.contextId, event.argument)),
350
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Console.messageAdded", (event) => this._onConsoleMessage(event)),
351
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Console.messageRepeatCountUpdated", (event) => this._onConsoleRepeatCountUpdated(event)),
352
+ import_eventsHelper.eventsHelper.addEventListener(this._pageProxySession, "Dialog.javascriptDialogOpening", (event) => this._onDialog(event)),
353
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.fileChooserOpened", (event) => this._onFileChooserOpened(event)),
354
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.requestWillBeSent", (e) => this._onRequestWillBeSent(this._session, e)),
355
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.requestIntercepted", (e) => this._onRequestIntercepted(this._session, e)),
356
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.responseReceived", (e) => this._onResponseReceived(this._session, e)),
357
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.loadingFinished", (e) => this._onLoadingFinished(e)),
358
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.loadingFailed", (e) => this._onLoadingFailed(this._session, e)),
359
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.webSocketCreated", (e) => this._page.frameManager.onWebSocketCreated(e.requestId, e.url)),
360
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.webSocketWillSendHandshakeRequest", (e) => this._page.frameManager.onWebSocketRequest(e.requestId)),
361
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.webSocketHandshakeResponseReceived", (e) => this._page.frameManager.onWebSocketResponse(e.requestId, e.response.status, e.response.statusText)),
362
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.webSocketFrameSent", (e) => e.response.payloadData && this._page.frameManager.onWebSocketFrameSent(e.requestId, e.response.opcode, e.response.payloadData)),
363
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.webSocketFrameReceived", (e) => e.response.payloadData && this._page.frameManager.webSocketFrameReceived(e.requestId, e.response.opcode, e.response.payloadData)),
364
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.webSocketClosed", (e) => this._page.frameManager.webSocketClosed(e.requestId)),
365
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Network.webSocketFrameError", (e) => this._page.frameManager.webSocketError(e.requestId, e.errorMessage))
366
+ ];
383
367
  }
384
368
  async _updateState(method, params) {
385
- await this._forAllSessions(session => session.send(method, params).then());
369
+ await this._forAllSessions((session) => session.send(method, params).then());
386
370
  }
387
371
  async _forAllSessions(callback) {
388
- const sessions = [this._session];
389
- // If the state changes during provisional load, push it to the provisional page
390
- // as well to always be in sync with the backend.
391
- if (this._provisionalPage) sessions.push(this._provisionalPage._session);
392
- await Promise.all(sessions.map(session => callback(session).catch(e => {})));
372
+ const sessions = [
373
+ this._session
374
+ ];
375
+ if (this._provisionalPage)
376
+ sessions.push(this._provisionalPage._session);
377
+ await Promise.all(sessions.map((session) => callback(session).catch((e) => {
378
+ })));
393
379
  }
394
380
  _onWillCheckNavigationPolicy(frameId) {
395
- // It may happen that new policy check occurs while there is an ongoing
396
- // provisional load, in this case it should be safe to ignore it as it will
397
- // either:
398
- // - end up canceled, e.g. ctrl+click opening link in new tab, having no effect
399
- // on this page
400
- // - start new provisional load which we will miss in our signal trackers but
401
- // we certainly won't hang waiting for it to finish and there is high chance
402
- // that the current provisional page will commit navigation canceling the new
403
- // one.
404
- if (this._provisionalPage) return;
405
- this._page._frameManager.frameRequestedNavigation(frameId);
381
+ if (this._provisionalPage)
382
+ return;
383
+ this._page.frameManager.frameRequestedNavigation(frameId);
406
384
  }
407
385
  _onDidCheckNavigationPolicy(frameId, cancel) {
408
- if (!cancel) return;
409
- // This is a cross-process navigation that is canceled in the original page and continues in
410
- // the provisional page. Bail out as we are tracking it.
411
- if (this._provisionalPage) return;
412
- this._page._frameManager.frameAbortedNavigation(frameId, 'Navigation canceled by policy check');
386
+ if (!cancel)
387
+ return;
388
+ if (this._provisionalPage)
389
+ return;
390
+ this._page.frameManager.frameAbortedNavigation(frameId, "Navigation canceled by policy check");
413
391
  }
414
392
  _onFrameScheduledNavigation(frameId, delay, targetIsCurrentFrame) {
415
- if (targetIsCurrentFrame) this._page._frameManager.frameRequestedNavigation(frameId);
393
+ if (targetIsCurrentFrame)
394
+ this._page.frameManager.frameRequestedNavigation(frameId);
416
395
  }
417
396
  _handleFrameTree(frameTree) {
418
397
  this._onFrameAttached(frameTree.frame.id, frameTree.frame.parentId || null);
419
398
  this._onFrameNavigated(frameTree.frame, true);
420
- this._page._frameManager.frameLifecycleEvent(frameTree.frame.id, 'domcontentloaded');
421
- this._page._frameManager.frameLifecycleEvent(frameTree.frame.id, 'load');
422
- if (!frameTree.childFrames) return;
423
- for (const child of frameTree.childFrames) this._handleFrameTree(child);
399
+ this._page.frameManager.frameLifecycleEvent(frameTree.frame.id, "domcontentloaded");
400
+ this._page.frameManager.frameLifecycleEvent(frameTree.frame.id, "load");
401
+ if (!frameTree.childFrames)
402
+ return;
403
+ for (const child of frameTree.childFrames)
404
+ this._handleFrameTree(child);
424
405
  }
425
406
  _onFrameAttached(frameId, parentFrameId) {
426
- return this._page._frameManager.frameAttached(frameId, parentFrameId);
407
+ return this._page.frameManager.frameAttached(frameId, parentFrameId);
427
408
  }
428
409
  _onFrameNavigated(framePayload, initial) {
429
- const frame = this._page._frameManager.frame(framePayload.id);
430
- (0, _utils.assert)(frame);
410
+ const frame = this._page.frameManager.frame(framePayload.id);
411
+ (0, import_utils.assert)(frame);
431
412
  this._removeContextsForFrame(frame, true);
432
- if (!framePayload.parentId) this._workers.clear();
433
- this._page._frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url, framePayload.name || '', framePayload.loaderId, initial);
434
- if (!initial) this._firstNonInitialNavigationCommittedFulfill();
413
+ if (!framePayload.parentId)
414
+ this._workers.clear();
415
+ this._page.frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url, framePayload.name || "", framePayload.loaderId, initial);
416
+ if (!initial)
417
+ this._firstNonInitialNavigationCommittedFulfill();
435
418
  }
436
419
  _onFrameNavigatedWithinDocument(frameId, url) {
437
- this._page._frameManager.frameCommittedSameDocumentNavigation(frameId, url);
420
+ this._page.frameManager.frameCommittedSameDocumentNavigation(frameId, url);
438
421
  }
439
422
  _onFrameDetached(frameId) {
440
- this._page._frameManager.frameDetached(frameId);
423
+ this._page.frameManager.frameDetached(frameId);
441
424
  }
442
425
  _removeContextsForFrame(frame, notifyFrame) {
443
426
  for (const [contextId, context] of this._contextIdToContext) {
444
427
  if (context.frame === frame) {
445
428
  this._contextIdToContext.delete(contextId);
446
- if (notifyFrame) frame._contextDestroyed(context);
429
+ if (notifyFrame)
430
+ frame._contextDestroyed(context);
447
431
  }
448
432
  }
449
433
  }
450
434
  _onExecutionContextCreated(contextPayload) {
451
- if (this._contextIdToContext.has(contextPayload.id)) return;
452
- const frame = this._page._frameManager.frame(contextPayload.frameId);
453
- if (!frame) return;
454
- const delegate = new _wkExecutionContext.WKExecutionContext(this._session, contextPayload.id);
455
- let worldName;
456
- if (contextPayload.type === 'normal') worldName = 'main';else if (contextPayload.type === 'user' && contextPayload.name === UTILITY_WORLD_NAME) worldName = 'utility';else return;
435
+ if (this._contextIdToContext.has(contextPayload.id))
436
+ return;
437
+ const frame = this._page.frameManager.frame(contextPayload.frameId);
438
+ if (!frame)
439
+ return;
440
+ const delegate = new import_wkExecutionContext.WKExecutionContext(this._session, contextPayload.id);
441
+ let worldName = null;
442
+ if (contextPayload.type === "normal")
443
+ worldName = "main";
444
+ else if (contextPayload.type === "user" && contextPayload.name === UTILITY_WORLD_NAME)
445
+ worldName = "utility";
457
446
  const context = new dom.FrameExecutionContext(delegate, frame, worldName);
458
- if (worldName) frame._contextCreated(worldName, context);
447
+ if (worldName)
448
+ frame._contextCreated(worldName, context);
459
449
  this._contextIdToContext.set(contextPayload.id, context);
460
450
  }
461
451
  async _onBindingCalled(contextId, argument) {
462
452
  const pageOrError = await this._page.waitForInitializedOrError();
463
453
  if (!(pageOrError instanceof Error)) {
464
454
  const context = this._contextIdToContext.get(contextId);
465
- if (context) await this._page._onBindingCalled(argument, context);
455
+ if (context)
456
+ await this._page.onBindingCalled(argument, context);
466
457
  }
467
458
  }
468
459
  async navigateFrame(frame, url, referrer) {
469
- if (this._pageProxySession.isDisposed()) throw new _errors.TargetClosedError();
460
+ if (this._pageProxySession.isDisposed())
461
+ throw new import_errors.TargetClosedError();
470
462
  const pageProxyId = this._pageProxySession.sessionId;
471
- const result = await this._pageProxySession.connection.browserSession.send('Playwright.navigate', {
472
- url,
473
- pageProxyId,
474
- frameId: frame._id,
475
- referrer
476
- });
477
- return {
478
- newDocumentId: result.loaderId
479
- };
463
+ const result = await this._pageProxySession.connection.browserSession.send("Playwright.navigate", { url, pageProxyId, frameId: frame._id, referrer });
464
+ return { newDocumentId: result.loaderId };
480
465
  }
481
466
  _onConsoleMessage(event) {
482
- // Note: do no introduce await in this function, otherwise we lose the ordering.
483
- // For example, frame.setContent relies on this.
484
- const {
485
- type,
486
- level,
487
- text,
488
- parameters,
489
- url,
490
- line: lineNumber,
491
- column: columnNumber,
492
- source
493
- } = event.message;
494
- if (level === 'error' && source === 'javascript') {
495
- const {
496
- name,
497
- message
498
- } = (0, _stackTrace.splitErrorMessage)(text);
467
+ const { type, level, text, parameters, url, line: lineNumber, column: columnNumber, source } = event.message;
468
+ if (level === "error" && source === "javascript") {
469
+ const { name, message } = (0, import_stackTrace.splitErrorMessage)(text);
499
470
  let stack;
500
471
  if (event.message.stackTrace) {
501
- stack = text + '\n' + event.message.stackTrace.callFrames.map(callFrame => {
502
- return ` at ${callFrame.functionName || 'unknown'} (${callFrame.url}:${callFrame.lineNumber}:${callFrame.columnNumber})`;
503
- }).join('\n');
472
+ stack = text + "\n" + event.message.stackTrace.callFrames.map((callFrame) => {
473
+ return ` at ${callFrame.functionName || "unknown"} (${callFrame.url}:${callFrame.lineNumber}:${callFrame.columnNumber})`;
474
+ }).join("\n");
504
475
  } else {
505
- stack = '';
476
+ stack = "";
506
477
  }
507
478
  this._lastConsoleMessage = null;
508
479
  const error = new Error(message);
509
480
  error.stack = stack;
510
481
  error.name = name;
511
- this._page.emitOnContextOnceInitialized(_browserContext.BrowserContext.Events.PageError, error, this._page);
482
+ this._page.emitOnContextOnceInitialized(import_browserContext.BrowserContext.Events.PageError, error, this._page);
512
483
  return;
513
484
  }
514
- let derivedType = type || '';
515
- if (type === 'log') derivedType = level;else if (type === 'timing') derivedType = 'timeEnd';
485
+ let derivedType = type || "";
486
+ if (type === "log")
487
+ derivedType = level;
488
+ else if (type === "timing")
489
+ derivedType = "timeEnd";
516
490
  const handles = [];
517
491
  for (const p of parameters || []) {
518
492
  let context;
@@ -520,11 +494,11 @@ class WKPage {
520
494
  const objectId = JSON.parse(p.objectId);
521
495
  context = this._contextIdToContext.get(objectId.injectedScriptId);
522
496
  } else {
523
- // Pick any context if the parameter is a value.
524
- context = [...this._contextIdToContext.values()].find(c => c.frame === this._page.mainFrame());
497
+ context = [...this._contextIdToContext.values()].find((c) => c.frame === this._page.mainFrame());
525
498
  }
526
- if (!context) return;
527
- handles.push((0, _wkExecutionContext.createHandle)(context, p));
499
+ if (!context)
500
+ return;
501
+ handles.push((0, import_wkExecutionContext.createHandle)(context, p));
528
502
  }
529
503
  this._lastConsoleMessage = {
530
504
  derivedType,
@@ -532,14 +506,12 @@ class WKPage {
532
506
  handles,
533
507
  count: 0,
534
508
  location: {
535
- url: url || '',
509
+ url: url || "",
536
510
  lineNumber: (lineNumber || 1) - 1,
537
511
  columnNumber: (columnNumber || 1) - 1
538
512
  }
539
513
  };
540
- this._onConsoleRepeatCountUpdated({
541
- count: 1
542
- });
514
+ this._onConsoleRepeatCountUpdated({ count: 1 });
543
515
  }
544
516
  _onConsoleRepeatCountUpdated(event) {
545
517
  if (this._lastConsoleMessage) {
@@ -550,109 +522,105 @@ class WKPage {
550
522
  count,
551
523
  location
552
524
  } = this._lastConsoleMessage;
553
- for (let i = count; i < event.count; ++i) this._page._addConsoleMessage(derivedType, handles, location, handles.length ? undefined : text);
525
+ for (let i = count; i < event.count; ++i)
526
+ this._page.addConsoleMessage(derivedType, handles, location, handles.length ? void 0 : text);
554
527
  this._lastConsoleMessage.count = event.count;
555
528
  }
556
529
  }
557
530
  _onDialog(event) {
558
- this._page.emitOnContext(_browserContext.BrowserContext.Events.Dialog, new dialog.Dialog(this._page, event.type, event.message, async (accept, promptText) => {
559
- // TODO: this should actually be a RDP event that notifies about a cancelled navigation attempt.
560
- if (event.type === 'beforeunload' && !accept) this._page._frameManager.frameAbortedNavigation(this._page.mainFrame()._id, 'navigation cancelled by beforeunload dialog');
561
- await this._pageProxySession.send('Dialog.handleJavaScriptDialog', {
562
- accept,
563
- promptText
564
- });
565
- }, event.defaultPrompt));
531
+ this._page.browserContext.dialogManager.dialogDidOpen(new dialog.Dialog(
532
+ this._page,
533
+ event.type,
534
+ event.message,
535
+ async (accept, promptText) => {
536
+ if (event.type === "beforeunload" && !accept)
537
+ this._page.frameManager.frameAbortedNavigation(this._page.mainFrame()._id, "navigation cancelled by beforeunload dialog");
538
+ await this._pageProxySession.send("Dialog.handleJavaScriptDialog", { accept, promptText });
539
+ },
540
+ event.defaultPrompt
541
+ ));
566
542
  }
567
543
  async _onFileChooserOpened(event) {
568
544
  let handle;
569
545
  try {
570
- const context = await this._page._frameManager.frame(event.frameId)._mainContext();
571
- handle = (0, _wkExecutionContext.createHandle)(context, event.element).asElement();
546
+ const context = await this._page.frameManager.frame(event.frameId)._mainContext();
547
+ handle = (0, import_wkExecutionContext.createHandle)(context, event.element).asElement();
572
548
  } catch (e) {
573
- // During async processing, frame/context may go away. We should not throw.
574
549
  return;
575
550
  }
576
551
  await this._page._onFileChooserOpened(handle);
577
552
  }
578
553
  static async _setEmulateMedia(session, mediaType, colorScheme, reducedMotion, forcedColors, contrast) {
579
554
  const promises = [];
580
- promises.push(session.send('Page.setEmulatedMedia', {
581
- media: mediaType === 'no-override' ? '' : mediaType
582
- }));
583
- let appearance = undefined;
555
+ promises.push(session.send("Page.setEmulatedMedia", { media: mediaType === "no-override" ? "" : mediaType }));
556
+ let appearance = void 0;
584
557
  switch (colorScheme) {
585
- case 'light':
586
- appearance = 'Light';
558
+ case "light":
559
+ appearance = "Light";
587
560
  break;
588
- case 'dark':
589
- appearance = 'Dark';
561
+ case "dark":
562
+ appearance = "Dark";
590
563
  break;
591
- case 'no-override':
592
- appearance = undefined;
564
+ case "no-override":
565
+ appearance = void 0;
593
566
  break;
594
567
  }
595
- promises.push(session.send('Page.overrideUserPreference', {
596
- name: 'PrefersColorScheme',
597
- value: appearance
598
- }));
599
- let reducedMotionWk = undefined;
568
+ promises.push(session.send("Page.overrideUserPreference", { name: "PrefersColorScheme", value: appearance }));
569
+ let reducedMotionWk = void 0;
600
570
  switch (reducedMotion) {
601
- case 'reduce':
602
- reducedMotionWk = 'Reduce';
571
+ case "reduce":
572
+ reducedMotionWk = "Reduce";
603
573
  break;
604
- case 'no-preference':
605
- reducedMotionWk = 'NoPreference';
574
+ case "no-preference":
575
+ reducedMotionWk = "NoPreference";
606
576
  break;
607
- case 'no-override':
608
- reducedMotionWk = undefined;
577
+ case "no-override":
578
+ reducedMotionWk = void 0;
609
579
  break;
610
580
  }
611
- promises.push(session.send('Page.overrideUserPreference', {
612
- name: 'PrefersReducedMotion',
613
- value: reducedMotionWk
614
- }));
615
- let forcedColorsWk = undefined;
581
+ promises.push(session.send("Page.overrideUserPreference", { name: "PrefersReducedMotion", value: reducedMotionWk }));
582
+ let forcedColorsWk = void 0;
616
583
  switch (forcedColors) {
617
- case 'active':
618
- forcedColorsWk = 'Active';
584
+ case "active":
585
+ forcedColorsWk = "Active";
619
586
  break;
620
- case 'none':
621
- forcedColorsWk = 'None';
587
+ case "none":
588
+ forcedColorsWk = "None";
622
589
  break;
623
- case 'no-override':
624
- forcedColorsWk = undefined;
590
+ case "no-override":
591
+ forcedColorsWk = void 0;
625
592
  break;
626
593
  }
627
- promises.push(session.send('Page.setForcedColors', {
628
- forcedColors: forcedColorsWk
629
- }));
630
- let contrastWk = undefined;
594
+ promises.push(session.send("Page.setForcedColors", { forcedColors: forcedColorsWk }));
595
+ let contrastWk = void 0;
631
596
  switch (contrast) {
632
- case 'more':
633
- contrastWk = 'More';
597
+ case "more":
598
+ contrastWk = "More";
634
599
  break;
635
- case 'no-preference':
636
- contrastWk = 'NoPreference';
600
+ case "no-preference":
601
+ contrastWk = "NoPreference";
637
602
  break;
638
- case 'no-override':
639
- contrastWk = undefined;
603
+ case "no-override":
604
+ contrastWk = void 0;
640
605
  break;
641
606
  }
642
- promises.push(session.send('Page.overrideUserPreference', {
643
- name: 'PrefersContrast',
644
- value: contrastWk
645
- }));
607
+ promises.push(session.send("Page.overrideUserPreference", { name: "PrefersContrast", value: contrastWk }));
646
608
  await Promise.all(promises);
647
609
  }
648
610
  async updateExtraHTTPHeaders() {
649
- await this._updateState('Network.setExtraHTTPHeaders', {
650
- headers: (0, _headers.headersArrayToObject)(this._calculateExtraHTTPHeaders(), false /* lowerCase */)
651
- });
611
+ await this._updateState("Network.setExtraHTTPHeaders", { headers: (0, import_headers.headersArrayToObject)(
612
+ this._calculateExtraHTTPHeaders(),
613
+ false
614
+ /* lowerCase */
615
+ ) });
652
616
  }
653
617
  _calculateExtraHTTPHeaders() {
654
618
  const locale = this._browserContext._options.locale;
655
- const headers = network.mergeHeaders([this._browserContext._options.extraHTTPHeaders, this._page.extraHTTPHeaders(), locale ? network.singleHeader('Accept-Language', locale) : undefined]);
619
+ const headers = network.mergeHeaders([
620
+ this._browserContext._options.extraHTTPHeaders,
621
+ this._page.extraHTTPHeaders(),
622
+ locale ? network.singleHeader("Accept-Language", locale) : void 0
623
+ ]);
656
624
  return headers;
657
625
  }
658
626
  async updateEmulateMedia() {
@@ -661,144 +629,145 @@ class WKPage {
661
629
  const reducedMotion = emulatedMedia.reducedMotion;
662
630
  const forcedColors = emulatedMedia.forcedColors;
663
631
  const contrast = emulatedMedia.contrast;
664
- await this._forAllSessions(session => WKPage._setEmulateMedia(session, emulatedMedia.media, colorScheme, reducedMotion, forcedColors, contrast));
632
+ await this._forAllSessions((session) => WKPage._setEmulateMedia(session, emulatedMedia.media, colorScheme, reducedMotion, forcedColors, contrast));
665
633
  }
666
634
  async updateEmulatedViewportSize() {
667
- this._browserContext._validateEmulatedViewport(this._page.viewportSize());
635
+ this._browserContext._validateEmulatedViewport(this._page.emulatedSize()?.viewport);
668
636
  await this._updateViewport();
669
637
  }
670
638
  async updateUserAgent() {
671
639
  const contextOptions = this._browserContext._options;
672
- this._updateState('Page.overrideUserAgent', {
673
- value: contextOptions.userAgent
674
- });
640
+ this._updateState("Page.overrideUserAgent", { value: contextOptions.userAgent });
675
641
  }
676
642
  async bringToFront() {
677
- this._pageProxySession.send('Target.activate', {
643
+ this._pageProxySession.send("Target.activate", {
678
644
  targetId: this._session.sessionId
679
645
  });
680
646
  }
681
647
  async _updateViewport() {
682
648
  const options = this._browserContext._options;
683
- const deviceSize = this._page.emulatedSize();
684
- if (deviceSize === null) return;
685
- const viewportSize = deviceSize.viewport;
686
- const screenSize = deviceSize.screen;
687
- const promises = [this._pageProxySession.send('Emulation.setDeviceMetricsOverride', {
688
- width: viewportSize.width,
689
- height: viewportSize.height,
690
- fixedLayout: !!options.isMobile,
691
- deviceScaleFactor: options.deviceScaleFactor || 1
692
- }), this._session.send('Page.setScreenSizeOverride', {
693
- width: screenSize.width,
694
- height: screenSize.height
695
- })];
649
+ const emulatedSize = this._page.emulatedSize();
650
+ if (!emulatedSize)
651
+ return;
652
+ const viewportSize = emulatedSize.viewport;
653
+ const screenSize = emulatedSize.screen;
654
+ const promises = [
655
+ this._pageProxySession.send("Emulation.setDeviceMetricsOverride", {
656
+ width: viewportSize.width,
657
+ height: viewportSize.height,
658
+ fixedLayout: !!options.isMobile,
659
+ deviceScaleFactor: options.deviceScaleFactor || 1
660
+ }),
661
+ this._session.send("Page.setScreenSizeOverride", {
662
+ width: screenSize.width,
663
+ height: screenSize.height
664
+ })
665
+ ];
696
666
  if (options.isMobile) {
697
667
  const angle = viewportSize.width > viewportSize.height ? 90 : 0;
698
- promises.push(this._pageProxySession.send('Emulation.setOrientationOverride', {
699
- angle
700
- }));
668
+ promises.push(this._pageProxySession.send("Emulation.setOrientationOverride", { angle }));
701
669
  }
702
670
  await Promise.all(promises);
703
671
  }
704
672
  async updateRequestInterception() {
705
673
  const enabled = this._page.needsRequestInterception();
706
- await Promise.all([this._updateState('Network.setInterceptionEnabled', {
707
- enabled
708
- }), this._updateState('Network.setResourceCachingDisabled', {
709
- disabled: enabled
710
- }), this._updateState('Network.addInterception', {
711
- url: '.*',
712
- stage: 'request',
713
- isRegex: true
714
- })]);
674
+ await Promise.all([
675
+ this._updateState("Network.setInterceptionEnabled", { enabled }),
676
+ this._updateState("Network.setResourceCachingDisabled", { disabled: enabled }),
677
+ this._updateState("Network.addInterception", { url: ".*", stage: "request", isRegex: true })
678
+ ]);
715
679
  }
716
680
  async updateOffline() {
717
- await this._updateState('Network.setEmulateOfflineState', {
718
- offline: !!this._browserContext._options.offline
719
- });
681
+ await this._updateState("Network.setEmulateOfflineState", { offline: !!this._browserContext._options.offline });
720
682
  }
721
683
  async updateHttpCredentials() {
722
- const credentials = this._browserContext._options.httpCredentials || {
723
- username: '',
724
- password: '',
725
- origin: ''
726
- };
727
- await this._pageProxySession.send('Emulation.setAuthCredentials', {
728
- username: credentials.username,
729
- password: credentials.password,
730
- origin: credentials.origin
731
- });
684
+ const credentials = this._browserContext._options.httpCredentials || { username: "", password: "", origin: "" };
685
+ await this._pageProxySession.send("Emulation.setAuthCredentials", { username: credentials.username, password: credentials.password, origin: credentials.origin });
732
686
  }
733
687
  async updateFileChooserInterception() {
734
688
  const enabled = this._page.fileChooserIntercepted();
735
- await this._session.send('Page.setInterceptFileChooserDialog', {
736
- enabled
737
- }).catch(() => {}); // target can be closed.
689
+ await this._session.send("Page.setInterceptFileChooserDialog", { enabled }).catch(() => {
690
+ });
738
691
  }
739
692
  async reload() {
740
- await this._session.send('Page.reload');
693
+ await this._session.send("Page.reload");
741
694
  }
742
695
  goBack() {
743
- return this._session.send('Page.goBack').then(() => true).catch(error => {
744
- if (error instanceof Error && error.message.includes(`Protocol error (Page.goBack): Failed to go`)) return false;
696
+ return this._session.send("Page.goBack").then(() => true).catch((error) => {
697
+ if (error instanceof Error && error.message.includes(`Protocol error (Page.goBack): Failed to go`))
698
+ return false;
745
699
  throw error;
746
700
  });
747
701
  }
748
702
  goForward() {
749
- return this._session.send('Page.goForward').then(() => true).catch(error => {
750
- if (error instanceof Error && error.message.includes(`Protocol error (Page.goForward): Failed to go`)) return false;
703
+ return this._session.send("Page.goForward").then(() => true).catch((error) => {
704
+ if (error instanceof Error && error.message.includes(`Protocol error (Page.goForward): Failed to go`))
705
+ return false;
751
706
  throw error;
752
707
  });
753
708
  }
754
709
  async requestGC() {
755
- await this._session.send('Heap.gc');
710
+ await this._session.send("Heap.gc");
756
711
  }
757
712
  async addInitScript(initScript) {
758
713
  await this._updateBootstrapScript();
759
714
  }
760
- async removeNonInternalInitScripts() {
715
+ async removeInitScripts(initScripts) {
761
716
  await this._updateBootstrapScript();
762
717
  }
718
+ async exposePlaywrightBinding() {
719
+ await this._updateState("Runtime.addBinding", { name: import_page.PageBinding.kBindingName });
720
+ }
763
721
  _calculateBootstrapScript() {
764
722
  const scripts = [];
765
- if (!this._page.context()._options.isMobile) {
766
- scripts.push('delete window.orientation');
767
- scripts.push('delete window.ondevicemotion');
768
- scripts.push('delete window.ondeviceorientation');
723
+ if (!this._page.browserContext._options.isMobile) {
724
+ scripts.push("delete window.orientation");
725
+ scripts.push("delete window.ondevicemotion");
726
+ scripts.push("delete window.ondeviceorientation");
769
727
  }
770
728
  scripts.push('if (!window.safari) window.safari = { pushNotification: { toString() { return "[object SafariRemoteNotification]"; } } };');
771
- scripts.push('if (!window.GestureEvent) window.GestureEvent = function GestureEvent() {};');
772
- scripts.push(...this._page.allInitScripts().map(script => script.source));
773
- return scripts.join(';\n');
729
+ scripts.push("if (!window.GestureEvent) window.GestureEvent = function GestureEvent() {};");
730
+ scripts.push(this._publicKeyCredentialScript());
731
+ scripts.push(...this._page.allInitScripts().map((script) => script.source));
732
+ return scripts.join(";\n");
733
+ }
734
+ _publicKeyCredentialScript() {
735
+ function polyfill() {
736
+ window.PublicKeyCredential ??= {
737
+ async getClientCapabilities() {
738
+ return {};
739
+ },
740
+ async isConditionalMediationAvailable() {
741
+ return false;
742
+ },
743
+ async isUserVerifyingPlatformAuthenticatorAvailable() {
744
+ return false;
745
+ }
746
+ };
747
+ }
748
+ return `(${polyfill.toString()})();`;
774
749
  }
775
750
  async _updateBootstrapScript() {
776
- await this._updateState('Page.setBootstrapScript', {
777
- source: this._calculateBootstrapScript()
778
- });
751
+ await this._updateState("Page.setBootstrapScript", { source: this._calculateBootstrapScript() });
779
752
  }
780
753
  async closePage(runBeforeUnload) {
781
754
  await this._stopVideo();
782
- await this._pageProxySession.sendMayFail('Target.close', {
755
+ await this._pageProxySession.sendMayFail("Target.close", {
783
756
  targetId: this._session.sessionId,
784
757
  runBeforeUnload
785
758
  });
786
759
  }
787
760
  async setBackgroundColor(color) {
788
- await this._session.send('Page.setDefaultBackgroundColorOverride', {
789
- color
790
- });
761
+ await this._session.send("Page.setDefaultBackgroundColorOverride", { color });
791
762
  }
792
763
  _toolbarHeight() {
793
- var _this$_page$_browserC;
794
- if ((_this$_page$_browserC = this._page._browserContext._browser) !== null && _this$_page$_browserC !== void 0 && _this$_page$_browserC.options.headful) return _hostPlatform.hostPlatform === 'mac10.15' ? 55 : 59;
764
+ if (this._page.browserContext._browser?.options.headful)
765
+ return import_hostPlatform.hostPlatform === "mac10.15" ? 55 : 59;
795
766
  return 0;
796
767
  }
797
768
  async _startVideo(options) {
798
- (0, _utils.assert)(!this._recordingVideoFile);
799
- const {
800
- screencastId
801
- } = await this._pageProxySession.send('Screencast.startVideo', {
769
+ (0, import_utils.assert)(!this._recordingVideoFile);
770
+ const { screencastId } = await this._pageProxySession.send("Screencast.startVideo", {
802
771
  file: options.outputFile,
803
772
  width: options.width,
804
773
  height: options.height,
@@ -808,49 +777,51 @@ class WKPage {
808
777
  this._browserContext._browser._videoStarted(this._browserContext, screencastId, options.outputFile, this._page.waitForInitializedOrError());
809
778
  }
810
779
  async _stopVideo() {
811
- if (!this._recordingVideoFile) return;
812
- await this._pageProxySession.sendMayFail('Screencast.stopVideo');
780
+ if (!this._recordingVideoFile)
781
+ return;
782
+ await this._pageProxySession.sendMayFail("Screencast.stopVideo");
813
783
  this._recordingVideoFile = null;
814
784
  }
815
785
  validateScreenshotDimension(side, omitDeviceScaleFactor) {
816
- // Cairo based implementations (Linux and Windows) have hard limit of 32767
817
- // (see https://github.com/microsoft/playwright/issues/16727).
818
- if (process.platform === 'darwin') return;
819
- if (!omitDeviceScaleFactor && this._page._browserContext._options.deviceScaleFactor) side = Math.ceil(side * this._page._browserContext._options.deviceScaleFactor);
820
- if (side > 32767) throw new Error('Cannot take screenshot larger than 32767 pixels on any dimension');
786
+ if (process.platform === "darwin")
787
+ return;
788
+ if (!omitDeviceScaleFactor && this._page.browserContext._options.deviceScaleFactor)
789
+ side = Math.ceil(side * this._page.browserContext._options.deviceScaleFactor);
790
+ if (side > 32767)
791
+ throw new Error("Cannot take screenshot larger than 32767 pixels on any dimension");
821
792
  }
822
793
  async takeScreenshot(progress, format, documentRect, viewportRect, quality, fitsViewport, scale) {
823
794
  const rect = documentRect || viewportRect;
824
- const omitDeviceScaleFactor = scale === 'css';
795
+ const omitDeviceScaleFactor = scale === "css";
825
796
  this.validateScreenshotDimension(rect.width, omitDeviceScaleFactor);
826
797
  this.validateScreenshotDimension(rect.height, omitDeviceScaleFactor);
827
- const result = await this._session.send('Page.snapshotRect', {
828
- ...rect,
829
- coordinateSystem: documentRect ? 'Page' : 'Viewport',
830
- omitDeviceScaleFactor
831
- });
832
- const prefix = 'data:image/png;base64,';
833
- let buffer = Buffer.from(result.dataURL.substr(prefix.length), 'base64');
834
- if (format === 'jpeg') buffer = _utilsBundle.jpegjs.encode(_utilsBundle.PNG.sync.read(buffer), quality).data;
798
+ const result = await progress.race(this._session.send("Page.snapshotRect", { ...rect, coordinateSystem: documentRect ? "Page" : "Viewport", omitDeviceScaleFactor }));
799
+ const prefix = "data:image/png;base64,";
800
+ let buffer = Buffer.from(result.dataURL.substr(prefix.length), "base64");
801
+ if (format === "jpeg")
802
+ buffer = import_utilsBundle.jpegjs.encode(import_utilsBundle.PNG.sync.read(buffer), quality).data;
835
803
  return buffer;
836
804
  }
837
805
  async getContentFrame(handle) {
838
- const nodeInfo = await this._session.send('DOM.describeNode', {
806
+ const nodeInfo = await this._session.send("DOM.describeNode", {
839
807
  objectId: handle._objectId
840
808
  });
841
- if (!nodeInfo.contentFrameId) return null;
842
- return this._page._frameManager.frame(nodeInfo.contentFrameId);
809
+ if (!nodeInfo.contentFrameId)
810
+ return null;
811
+ return this._page.frameManager.frame(nodeInfo.contentFrameId);
843
812
  }
844
813
  async getOwnerFrame(handle) {
845
- if (!handle._objectId) return null;
846
- const nodeInfo = await this._session.send('DOM.describeNode', {
814
+ if (!handle._objectId)
815
+ return null;
816
+ const nodeInfo = await this._session.send("DOM.describeNode", {
847
817
  objectId: handle._objectId
848
818
  });
849
819
  return nodeInfo.ownerFrameId || null;
850
820
  }
851
821
  async getBoundingBox(handle) {
852
822
  const quads = await this.getContentQuads(handle);
853
- if (!quads || !quads.length) return null;
823
+ if (!quads || !quads.length)
824
+ return null;
854
825
  let minX = Infinity;
855
826
  let maxX = -Infinity;
856
827
  let minY = Infinity;
@@ -863,141 +834,101 @@ class WKPage {
863
834
  maxY = Math.max(maxY, point.y);
864
835
  }
865
836
  }
866
- return {
867
- x: minX,
868
- y: minY,
869
- width: maxX - minX,
870
- height: maxY - minY
871
- };
837
+ return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };
872
838
  }
873
839
  async scrollRectIntoViewIfNeeded(handle, rect) {
874
- return await this._session.send('DOM.scrollIntoViewIfNeeded', {
840
+ return await this._session.send("DOM.scrollIntoViewIfNeeded", {
875
841
  objectId: handle._objectId,
876
842
  rect
877
- }).then(() => 'done').catch(e => {
878
- if (e instanceof Error && e.message.includes('Node does not have a layout object')) return 'error:notvisible';
879
- if (e instanceof Error && e.message.includes('Node is detached from document')) return 'error:notconnected';
843
+ }).then(() => "done").catch((e) => {
844
+ if (e instanceof Error && e.message.includes("Node does not have a layout object"))
845
+ return "error:notvisible";
846
+ if (e instanceof Error && e.message.includes("Node is detached from document"))
847
+ return "error:notconnected";
880
848
  throw e;
881
849
  });
882
850
  }
883
851
  async setScreencastOptions(options) {
884
852
  if (options) {
885
- const so = {
886
- ...options,
887
- toolbarHeight: this._toolbarHeight()
888
- };
889
- const {
890
- generation
891
- } = await this._pageProxySession.send('Screencast.startScreencast', so);
853
+ const so = { ...options, toolbarHeight: this._toolbarHeight() };
854
+ const { generation } = await this._pageProxySession.send("Screencast.startScreencast", so);
892
855
  this._screencastGeneration = generation;
893
856
  } else {
894
- await this._pageProxySession.send('Screencast.stopScreencast');
857
+ await this._pageProxySession.send("Screencast.stopScreencast");
895
858
  }
896
859
  }
897
860
  _onScreencastFrame(event) {
898
861
  const generation = this._screencastGeneration;
899
862
  this._page.throttleScreencastFrameAck(() => {
900
- this._pageProxySession.send('Screencast.screencastFrameAck', {
901
- generation
902
- }).catch(e => _debugLogger.debugLogger.log('error', e));
863
+ this._pageProxySession.send("Screencast.screencastFrameAck", { generation }).catch((e) => import_debugLogger.debugLogger.log("error", e));
903
864
  });
904
- const buffer = Buffer.from(event.data, 'base64');
905
- this._page.emit(_page.Page.Events.ScreencastFrame, {
865
+ const buffer = Buffer.from(event.data, "base64");
866
+ this._page.emit(import_page.Page.Events.ScreencastFrame, {
906
867
  buffer,
907
868
  width: event.deviceWidth,
908
869
  height: event.deviceHeight
909
870
  });
910
871
  }
911
872
  rafCountForStablePosition() {
912
- return process.platform === 'win32' ? 5 : 1;
873
+ return process.platform === "win32" ? 5 : 1;
913
874
  }
914
875
  async getContentQuads(handle) {
915
- const result = await this._session.sendMayFail('DOM.getContentQuads', {
876
+ const result = await this._session.sendMayFail("DOM.getContentQuads", {
916
877
  objectId: handle._objectId
917
878
  });
918
- if (!result) return null;
919
- return result.quads.map(quad => [{
920
- x: quad[0],
921
- y: quad[1]
922
- }, {
923
- x: quad[2],
924
- y: quad[3]
925
- }, {
926
- x: quad[4],
927
- y: quad[5]
928
- }, {
929
- x: quad[6],
930
- y: quad[7]
931
- }]);
879
+ if (!result)
880
+ return null;
881
+ return result.quads.map((quad) => [
882
+ { x: quad[0], y: quad[1] },
883
+ { x: quad[2], y: quad[3] },
884
+ { x: quad[4], y: quad[5] },
885
+ { x: quad[6], y: quad[7] }
886
+ ]);
932
887
  }
933
888
  async setInputFilePaths(handle, paths) {
934
889
  const pageProxyId = this._pageProxySession.sessionId;
935
890
  const objectId = handle._objectId;
936
- await Promise.all([this._pageProxySession.connection.browserSession.send('Playwright.grantFileReadAccess', {
937
- pageProxyId,
938
- paths
939
- }), this._session.send('DOM.setInputFiles', {
940
- objectId,
941
- paths
942
- })]);
891
+ await Promise.all([
892
+ this._pageProxySession.connection.browserSession.send("Playwright.grantFileReadAccess", { pageProxyId, paths }),
893
+ this._session.send("DOM.setInputFiles", { objectId, paths })
894
+ ]);
943
895
  }
944
896
  async adoptElementHandle(handle, to) {
945
- const result = await this._session.sendMayFail('DOM.resolveNode', {
897
+ const result = await this._session.sendMayFail("DOM.resolveNode", {
946
898
  objectId: handle._objectId,
947
899
  executionContextId: to.delegate._contextId
948
900
  });
949
- if (!result || result.object.subtype === 'null') throw new Error(dom.kUnableToAdoptErrorMessage);
950
- return (0, _wkExecutionContext.createHandle)(to, result.object);
901
+ if (!result || result.object.subtype === "null")
902
+ throw new Error(dom.kUnableToAdoptErrorMessage);
903
+ return (0, import_wkExecutionContext.createHandle)(to, result.object);
951
904
  }
952
905
  async getAccessibilityTree(needle) {
953
- return (0, _wkAccessibility.getAccessibilityTree)(this._session, needle);
906
+ return (0, import_wkAccessibility.getAccessibilityTree)(this._session, needle);
907
+ }
908
+ async inputActionEpilogue() {
909
+ }
910
+ async resetForReuse(progress) {
954
911
  }
955
- async inputActionEpilogue() {}
956
- async resetForReuse() {}
957
912
  async getFrameElement(frame) {
958
913
  const parent = frame.parentFrame();
959
- if (!parent) throw new Error('Frame has been detached.');
914
+ if (!parent)
915
+ throw new Error("Frame has been detached.");
960
916
  const context = await parent._mainContext();
961
- const result = await this._session.send('DOM.resolveNode', {
917
+ const result = await this._session.send("DOM.resolveNode", {
962
918
  frameId: frame._id,
963
919
  executionContextId: context.delegate._contextId
964
920
  });
965
- if (!result || result.object.subtype === 'null') throw new Error('Frame has been detached.');
966
- return (0, _wkExecutionContext.createHandle)(context, result.object);
921
+ if (!result || result.object.subtype === "null")
922
+ throw new Error("Frame has been detached.");
923
+ return (0, import_wkExecutionContext.createHandle)(context, result.object);
967
924
  }
968
925
  _maybeCancelCoopNavigationRequest(provisionalPage) {
969
926
  const navigationRequest = provisionalPage.coopNavigationRequest();
970
927
  for (const [requestId, request] of this._requestIdToRequest) {
971
928
  if (request.request === navigationRequest) {
972
- // Make sure the request completes if the provisional navigation is canceled.
973
929
  this._onLoadingFailed(provisionalPage._session, {
974
- requestId: requestId,
975
- errorText: 'Provisiolal navigation canceled.',
976
- timestamp: request._timestamp,
977
- canceled: true
978
- });
979
- return;
980
- }
981
- }
982
- }
983
- _adoptRequestFromNewProcess(navigationRequest, newSession, newRequestId) {
984
- for (const [requestId, request] of this._requestIdToRequest) {
985
- if (request.request === navigationRequest) {
986
- this._requestIdToRequest.delete(requestId);
987
- request.adoptRequestFromNewProcess(newSession, newRequestId);
988
- this._requestIdToRequest.set(newRequestId, request);
989
- return;
990
- }
991
- }
992
- }
993
- _maybeCancelCoopNavigationRequest(provisionalPage) {
994
- const navigationRequest = provisionalPage.coopNavigationRequest();
995
- for (const [requestId, request] of this._requestIdToRequest) {
996
- if (request.request === navigationRequest) {
997
- // Make sure the request completes if the provisional navigation is canceled.
998
- this._onLoadingFailed(provisionalPage._session, {
999
- requestId: requestId,
1000
- errorText: 'Provisiolal navigation canceled.',
930
+ requestId,
931
+ errorText: "Provisiolal navigation canceled.",
1001
932
  timestamp: request._timestamp,
1002
933
  canceled: true
1003
934
  });
@@ -1016,39 +947,37 @@ class WKPage {
1016
947
  }
1017
948
  }
1018
949
  _onRequestWillBeSent(session, event) {
1019
- if (event.request.url.startsWith('data:')) return;
1020
-
1021
- // We do not support intercepting redirects.
1022
- if (this._page.needsRequestInterception() && !event.redirectResponse) this._requestIdToRequestWillBeSentEvent.set(event.requestId, event);else this._onRequest(session, event, false);
950
+ if (event.request.url.startsWith("data:"))
951
+ return;
952
+ if (event.request.url.startsWith("about:"))
953
+ return;
954
+ if (this._page.needsRequestInterception() && !event.redirectResponse)
955
+ this._requestIdToRequestWillBeSentEvent.set(event.requestId, event);
956
+ else
957
+ this._onRequest(session, event, false);
1023
958
  }
1024
959
  _onRequest(session, event, intercepted) {
1025
960
  let redirectedFrom = null;
1026
961
  if (event.redirectResponse) {
1027
- const request = this._requestIdToRequest.get(event.requestId);
1028
- // If we connect late to the target, we could have missed the requestWillBeSent event.
1029
- if (request) {
1030
- this._handleRequestRedirect(request, event.requestId, event.redirectResponse, event.timestamp);
1031
- redirectedFrom = request;
962
+ const request2 = this._requestIdToRequest.get(event.requestId);
963
+ if (request2) {
964
+ this._handleRequestRedirect(request2, event.requestId, event.redirectResponse, event.timestamp);
965
+ redirectedFrom = request2;
1032
966
  }
1033
967
  }
1034
- const frame = redirectedFrom ? redirectedFrom.request.frame() : this._page._frameManager.frame(event.frameId);
1035
- // sometimes we get stray network events for detached frames
1036
- // TODO(einbinder) why?
1037
- if (!frame) return;
1038
-
1039
- // TODO(einbinder) this will fail if we are an XHR document request
1040
- const isNavigationRequest = event.type === 'Document';
1041
- const documentId = isNavigationRequest ? event.loaderId : undefined;
1042
- const request = new _wkInterceptableRequest.WKInterceptableRequest(session, frame, event, redirectedFrom, documentId);
968
+ const frame = redirectedFrom ? redirectedFrom.request.frame() : this._page.frameManager.frame(event.frameId);
969
+ if (!frame)
970
+ return;
971
+ const isNavigationRequest = event.type === "Document";
972
+ const documentId = isNavigationRequest ? event.loaderId : void 0;
973
+ const request = new import_wkInterceptableRequest.WKInterceptableRequest(session, frame, event, redirectedFrom, documentId);
1043
974
  let route;
1044
975
  if (intercepted) {
1045
- route = new _wkInterceptableRequest.WKRouteImpl(session, event.requestId);
1046
- // There is no point in waiting for the raw headers in Network.responseReceived when intercepting.
1047
- // Use provisional headers as raw headers, so that client can call allHeaders() from the route handler.
976
+ route = new import_wkInterceptableRequest.WKRouteImpl(session, event.requestId);
1048
977
  request.request.setRawRequestHeaders(null);
1049
978
  }
1050
979
  this._requestIdToRequest.set(event.requestId, request);
1051
- this._page._frameManager.requestStarted(request.request, route);
980
+ this._page.frameManager.requestStarted(request.request, route);
1052
981
  }
1053
982
  _handleRequestRedirect(request, requestId, responsePayload, timestamp) {
1054
983
  const response = request.createResponse(responsePayload);
@@ -1056,19 +985,15 @@ class WKPage {
1056
985
  response._serverAddrFinished();
1057
986
  response.setResponseHeadersSize(null);
1058
987
  response.setEncodedBodySize(null);
1059
- response._requestFinished(responsePayload.timing ? _helper.helper.secondsToRoundishMillis(timestamp - request._timestamp) : -1);
988
+ response._requestFinished(responsePayload.timing ? import_helper.helper.secondsToRoundishMillis(timestamp - request._timestamp) : -1);
1060
989
  this._requestIdToRequest.delete(requestId);
1061
- this._page._frameManager.requestReceivedResponse(response);
1062
- this._page._frameManager.reportRequestFinished(request.request, response);
990
+ this._page.frameManager.requestReceivedResponse(response);
991
+ this._page.frameManager.reportRequestFinished(request.request, response);
1063
992
  }
1064
993
  _onRequestIntercepted(session, event) {
1065
994
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(event.requestId);
1066
995
  if (!requestWillBeSentEvent) {
1067
- // Intercepted, although we do not intend to allow interception.
1068
- // Just continue.
1069
- session.sendMayFail('Network.interceptWithRequest', {
1070
- requestId: event.requestId
1071
- });
996
+ session.sendMayFail("Network.interceptWithRequest", { requestId: event.requestId });
1072
997
  return;
1073
998
  }
1074
999
  this._requestIdToRequestWillBeSentEvent.delete(event.requestId);
@@ -1078,156 +1003,132 @@ class WKPage {
1078
1003
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(event.requestId);
1079
1004
  if (requestWillBeSentEvent) {
1080
1005
  this._requestIdToRequestWillBeSentEvent.delete(event.requestId);
1081
- // We received a response, so the request won't be intercepted (e.g. it was handled by a
1082
- // service worker and we don't intercept service workers).
1083
1006
  this._onRequest(session, requestWillBeSentEvent, false);
1084
1007
  }
1085
1008
  const request = this._requestIdToRequest.get(event.requestId);
1086
- // FileUpload sends a response without a matching request.
1087
- if (!request) return;
1009
+ if (!request)
1010
+ return;
1088
1011
  this._requestIdToResponseReceivedPayloadEvent.set(event.requestId, event);
1089
1012
  const response = request.createResponse(event.response);
1090
- this._page._frameManager.requestReceivedResponse(response);
1013
+ this._page.frameManager.requestReceivedResponse(response);
1091
1014
  if (response.status() === 204 && request.request.isNavigationRequest()) {
1092
1015
  this._onLoadingFailed(session, {
1093
1016
  requestId: event.requestId,
1094
- errorText: 'Aborted: 204 No Content',
1017
+ errorText: "Aborted: 204 No Content",
1095
1018
  timestamp: event.timestamp
1096
1019
  });
1097
1020
  }
1098
1021
  }
1099
1022
  _onLoadingFinished(event) {
1100
1023
  const request = this._requestIdToRequest.get(event.requestId);
1101
- // For certain requestIds we never receive requestWillBeSent event.
1102
- // @see https://crbug.com/750469
1103
- if (!request) return;
1104
-
1105
- // Under certain conditions we never get the Network.responseReceived
1106
- // event from protocol. @see https://crbug.com/883475
1024
+ if (!request)
1025
+ return;
1107
1026
  const response = request.request._existingResponse();
1108
1027
  if (response) {
1109
- var _event$metrics, _event$metrics2, _responseReceivedPayl, _responseReceivedPayl2, _responseReceivedPayl3, _event$metrics3, _event$metrics$respon, _event$metrics4, _event$metrics$respon2, _event$metrics5;
1110
1028
  const responseReceivedPayload = this._requestIdToResponseReceivedPayloadEvent.get(event.requestId);
1111
- response._serverAddrFinished(parseRemoteAddress(event === null || event === void 0 || (_event$metrics = event.metrics) === null || _event$metrics === void 0 ? void 0 : _event$metrics.remoteAddress));
1029
+ response._serverAddrFinished(parseRemoteAddress(event?.metrics?.remoteAddress));
1112
1030
  response._securityDetailsFinished({
1113
- protocol: isLoadedSecurely(response.url(), response.timing()) ? (_event$metrics2 = event.metrics) === null || _event$metrics2 === void 0 || (_event$metrics2 = _event$metrics2.securityConnection) === null || _event$metrics2 === void 0 ? void 0 : _event$metrics2.protocol : undefined,
1114
- subjectName: responseReceivedPayload === null || responseReceivedPayload === void 0 || (_responseReceivedPayl = responseReceivedPayload.response.security) === null || _responseReceivedPayl === void 0 || (_responseReceivedPayl = _responseReceivedPayl.certificate) === null || _responseReceivedPayl === void 0 ? void 0 : _responseReceivedPayl.subject,
1115
- validFrom: responseReceivedPayload === null || responseReceivedPayload === void 0 || (_responseReceivedPayl2 = responseReceivedPayload.response.security) === null || _responseReceivedPayl2 === void 0 || (_responseReceivedPayl2 = _responseReceivedPayl2.certificate) === null || _responseReceivedPayl2 === void 0 ? void 0 : _responseReceivedPayl2.validFrom,
1116
- validTo: responseReceivedPayload === null || responseReceivedPayload === void 0 || (_responseReceivedPayl3 = responseReceivedPayload.response.security) === null || _responseReceivedPayl3 === void 0 || (_responseReceivedPayl3 = _responseReceivedPayl3.certificate) === null || _responseReceivedPayl3 === void 0 ? void 0 : _responseReceivedPayl3.validUntil
1031
+ protocol: isLoadedSecurely(response.url(), response.timing()) ? event.metrics?.securityConnection?.protocol : void 0,
1032
+ subjectName: responseReceivedPayload?.response.security?.certificate?.subject,
1033
+ validFrom: responseReceivedPayload?.response.security?.certificate?.validFrom,
1034
+ validTo: responseReceivedPayload?.response.security?.certificate?.validUntil
1117
1035
  });
1118
- if ((_event$metrics3 = event.metrics) !== null && _event$metrics3 !== void 0 && _event$metrics3.protocol) response._setHttpVersion(event.metrics.protocol);
1119
- response.setEncodedBodySize((_event$metrics$respon = (_event$metrics4 = event.metrics) === null || _event$metrics4 === void 0 ? void 0 : _event$metrics4.responseBodyBytesReceived) !== null && _event$metrics$respon !== void 0 ? _event$metrics$respon : null);
1120
- response.setResponseHeadersSize((_event$metrics$respon2 = (_event$metrics5 = event.metrics) === null || _event$metrics5 === void 0 ? void 0 : _event$metrics5.responseHeaderBytesReceived) !== null && _event$metrics$respon2 !== void 0 ? _event$metrics$respon2 : null);
1121
- response._requestFinished(_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
1036
+ if (event.metrics?.protocol)
1037
+ response._setHttpVersion(event.metrics.protocol);
1038
+ response.setEncodedBodySize(event.metrics?.responseBodyBytesReceived ?? null);
1039
+ response.setResponseHeadersSize(event.metrics?.responseHeaderBytesReceived ?? null);
1040
+ response._requestFinished(import_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
1122
1041
  } else {
1123
- // Use provisional headers if we didn't have the response with raw headers.
1124
1042
  request.request.setRawRequestHeaders(null);
1125
1043
  }
1126
1044
  this._requestIdToResponseReceivedPayloadEvent.delete(event.requestId);
1127
1045
  this._requestIdToRequest.delete(event.requestId);
1128
- this._page._frameManager.reportRequestFinished(request.request, response);
1046
+ this._page.frameManager.reportRequestFinished(request.request, response);
1129
1047
  }
1130
1048
  _onLoadingFailed(session, event) {
1131
1049
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(event.requestId);
1132
1050
  if (requestWillBeSentEvent) {
1133
1051
  this._requestIdToRequestWillBeSentEvent.delete(event.requestId);
1134
- // If loading failed, the request won't be intercepted (e.g. it was handled by a
1135
- // service worker and we don't intercept service workers).
1136
1052
  this._onRequest(session, requestWillBeSentEvent, false);
1137
1053
  }
1138
1054
  const request = this._requestIdToRequest.get(event.requestId);
1139
- // For certain requestIds we never receive requestWillBeSent event.
1140
- // @see https://crbug.com/750469
1141
- if (!request) return;
1055
+ if (!request)
1056
+ return;
1142
1057
  const response = request.request._existingResponse();
1143
1058
  if (response) {
1144
1059
  response._serverAddrFinished();
1145
1060
  response._securityDetailsFinished();
1146
1061
  response.setResponseHeadersSize(null);
1147
1062
  response.setEncodedBodySize(null);
1148
- response._requestFinished(_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
1063
+ response._requestFinished(import_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
1149
1064
  } else {
1150
- // Use provisional headers if we didn't have the response with raw headers.
1151
1065
  request.request.setRawRequestHeaders(null);
1152
1066
  }
1153
1067
  this._requestIdToRequest.delete(event.requestId);
1154
1068
  request.request._setFailureText(event.errorText);
1155
- this._page._frameManager.requestFailed(request.request, event.errorText.includes('cancelled'));
1069
+ this._page.frameManager.requestFailed(request.request, event.errorText.includes("cancelled"));
1156
1070
  }
1157
1071
  async _grantPermissions(origin, permissions) {
1158
- const webPermissionToProtocol = new Map([['geolocation', 'geolocation'], ['notifications', 'notifications'], ['clipboard-read', 'clipboard-read']]);
1159
- const filtered = permissions.map(permission => {
1072
+ const webPermissionToProtocol = /* @__PURE__ */ new Map([
1073
+ ["geolocation", "geolocation"],
1074
+ ["notifications", "notifications"],
1075
+ ["clipboard-read", "clipboard-read"]
1076
+ ]);
1077
+ const filtered = permissions.map((permission) => {
1160
1078
  const protocolPermission = webPermissionToProtocol.get(permission);
1161
- if (!protocolPermission) throw new Error('Unknown permission: ' + permission);
1079
+ if (!protocolPermission)
1080
+ throw new Error("Unknown permission: " + permission);
1162
1081
  return protocolPermission;
1163
1082
  });
1164
- await this._pageProxySession.send('Emulation.grantPermissions', {
1165
- origin,
1166
- permissions: filtered
1167
- });
1083
+ await this._pageProxySession.send("Emulation.grantPermissions", { origin, permissions: filtered });
1168
1084
  }
1169
1085
  async _clearPermissions() {
1170
- await this._pageProxySession.send('Emulation.resetPermissions', {});
1086
+ await this._pageProxySession.send("Emulation.resetPermissions", {});
1171
1087
  }
1172
1088
  shouldToggleStyleSheetToSyncAnimations() {
1173
1089
  return true;
1174
1090
  }
1175
1091
  }
1176
-
1177
- /**
1178
- * WebKit Remote Addresses look like:
1179
- *
1180
- * macOS:
1181
- * ::1.8911
1182
- * 2606:2800:220:1:248:1893:25c8:1946.443
1183
- * 127.0.0.1:8000
1184
- *
1185
- * ubuntu:
1186
- * ::1:8907
1187
- * 127.0.0.1:8000
1188
- *
1189
- * NB: They look IPv4 and IPv6's with ports but use an alternative notation.
1190
- */
1191
- exports.WKPage = WKPage;
1192
1092
  function parseRemoteAddress(value) {
1193
- if (!value) return;
1093
+ if (!value)
1094
+ return;
1194
1095
  try {
1195
- const colon = value.lastIndexOf(':');
1196
- const dot = value.lastIndexOf('.');
1096
+ const colon = value.lastIndexOf(":");
1097
+ const dot = value.lastIndexOf(".");
1197
1098
  if (dot < 0) {
1198
- // IPv6ish:port
1199
1099
  return {
1200
1100
  ipAddress: `[${value.slice(0, colon)}]`,
1201
1101
  port: +value.slice(colon + 1)
1202
1102
  };
1203
1103
  }
1204
1104
  if (colon > dot) {
1205
- // IPv4:port
1206
- const [address, port] = value.split(':');
1105
+ const [address, port] = value.split(":");
1207
1106
  return {
1208
1107
  ipAddress: address,
1209
1108
  port: +port
1210
1109
  };
1211
1110
  } else {
1212
- // IPv6ish.port
1213
- const [address, port] = value.split('.');
1111
+ const [address, port] = value.split(".");
1214
1112
  return {
1215
1113
  ipAddress: `[${address}]`,
1216
1114
  port: +port
1217
1115
  };
1218
1116
  }
1219
- } catch (_) {}
1117
+ } catch (_) {
1118
+ }
1220
1119
  }
1221
-
1222
- /**
1223
- * Adapted from Source/WebInspectorUI/UserInterface/Models/Resource.js in
1224
- * WebKit codebase.
1225
- */
1226
1120
  function isLoadedSecurely(url, timing) {
1227
1121
  try {
1228
1122
  const u = new URL(url);
1229
- if (u.protocol !== 'https:' && u.protocol !== 'wss:' && u.protocol !== 'sftp:') return false;
1230
- if (timing.secureConnectionStart === -1 && timing.connectStart !== -1) return false;
1123
+ if (u.protocol !== "https:" && u.protocol !== "wss:" && u.protocol !== "sftp:")
1124
+ return false;
1125
+ if (timing.secureConnectionStart === -1 && timing.connectStart !== -1)
1126
+ return false;
1231
1127
  return true;
1232
- } catch (_) {}
1233
- }
1128
+ } catch (_) {
1129
+ }
1130
+ }
1131
+ // Annotate the CommonJS export names for ESM import in node:
1132
+ 0 && (module.exports = {
1133
+ WKPage
1134
+ });