@checkly/playwright-core 1.51.17-beta.2 → 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 -35
  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-B9YMkrwa.js +0 -24
  345. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  348. package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
  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-gU1OOCQO.js +0 -24
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +0 -1
  353. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +0 -235
  354. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +0 -25
  355. package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
  356. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +0 -1
  359. package/lib/vite/traceViewer/embedded.DpNPH6mk.js +0 -2
  360. package/lib/vite/traceViewer/embedded.html +0 -18
  361. package/lib/vite/traceViewer/embedded.mLhjB5IF.css +0 -1
  362. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  363. package/lib/vite/traceViewer/index.CuE3SYGw.js +0 -2
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +0 -1
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.BD-uZJs7.js +0 -2
  368. package/lib/vite/traceViewer/recorder.html +0 -17
  369. package/lib/vite/traceViewer/recorder.tn0RQdqM.css +0 -0
  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.BatfzHMG.css +0 -1
  373. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +0 -5
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +0 -1
  376. package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
@@ -1,60 +1,59 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var network_exports = {};
20
+ __export(network_exports, {
21
+ RawHeaders: () => RawHeaders,
22
+ Request: () => Request,
23
+ Response: () => Response,
24
+ Route: () => Route,
25
+ RouteHandler: () => RouteHandler,
26
+ WebSocket: () => WebSocket,
27
+ WebSocketRoute: () => WebSocketRoute,
28
+ WebSocketRouteHandler: () => WebSocketRouteHandler,
29
+ validateHeaders: () => validateHeaders
5
30
  });
6
- exports.WebSocketRouteHandler = exports.WebSocketRoute = exports.WebSocket = exports.RouteHandler = exports.Route = exports.Response = exports.Request = exports.RawHeaders = void 0;
7
- exports.validateHeaders = validateHeaders;
8
- var _channelOwner = require("./channelOwner");
9
- var _errors = require("./errors");
10
- var _events = require("./events");
11
- var _fetch = require("./fetch");
12
- var _frame = require("./frame");
13
- var _waiter = require("./waiter");
14
- var _worker = require("./worker");
15
- var _assert = require("../utils/isomorphic/assert");
16
- var _headers = require("../utils/isomorphic/headers");
17
- var _urlMatch = require("../utils/isomorphic/urlMatch");
18
- var _manualPromise = require("../utils/isomorphic/manualPromise");
19
- var _multimap = require("../utils/isomorphic/multimap");
20
- var _rtti = require("../utils/isomorphic/rtti");
21
- var _stackTrace = require("../utils/isomorphic/stackTrace");
22
- var _mimeType = require("../utils/isomorphic/mimeType");
23
- /**
24
- * Copyright (c) Microsoft Corporation.
25
- *
26
- * Licensed under the Apache License, Version 2.0 (the "License");
27
- * you may not use this file except in compliance with the License.
28
- * You may obtain a copy of the License at
29
- *
30
- * http://www.apache.org/licenses/LICENSE-2.0
31
- *
32
- * Unless required by applicable law or agreed to in writing, software
33
- * distributed under the License is distributed on an "AS IS" BASIS,
34
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
35
- * See the License for the specific language governing permissions and
36
- * limitations under the License.
37
- */
38
-
39
- class Request extends _channelOwner.ChannelOwner {
40
- static from(request) {
41
- return request._object;
42
- }
43
- static fromNullable(request) {
44
- return request ? Request.from(request) : null;
45
- }
31
+ module.exports = __toCommonJS(network_exports);
32
+ var import_channelOwner = require("./channelOwner");
33
+ var import_errors = require("./errors");
34
+ var import_events = require("./events");
35
+ var import_fetch = require("./fetch");
36
+ var import_frame = require("./frame");
37
+ var import_waiter = require("./waiter");
38
+ var import_worker = require("./worker");
39
+ var import_assert = require("../utils/isomorphic/assert");
40
+ var import_headers = require("../utils/isomorphic/headers");
41
+ var import_urlMatch = require("../utils/isomorphic/urlMatch");
42
+ var import_manualPromise = require("../utils/isomorphic/manualPromise");
43
+ var import_multimap = require("../utils/isomorphic/multimap");
44
+ var import_rtti = require("../utils/isomorphic/rtti");
45
+ var import_stackTrace = require("../utils/isomorphic/stackTrace");
46
+ var import_mimeType = require("../utils/isomorphic/mimeType");
47
+ class Request extends import_channelOwner.ChannelOwner {
46
48
  constructor(parent, type, guid, initializer) {
47
49
  super(parent, type, guid, initializer);
48
50
  this._redirectedFrom = null;
49
51
  this._redirectedTo = null;
50
52
  this._failureText = null;
51
- this._provisionalHeaders = void 0;
52
- this._actualHeadersPromise = void 0;
53
- this._timing = void 0;
54
53
  this._fallbackOverrides = {};
55
- this.markAsInternalType();
56
54
  this._redirectedFrom = Request.fromNullable(initializer.redirectedFrom);
57
- if (this._redirectedFrom) this._redirectedFrom._redirectedTo = this;
55
+ if (this._redirectedFrom)
56
+ this._redirectedFrom._redirectedTo = this;
58
57
  this._provisionalHeaders = new RawHeaders(initializer.headers);
59
58
  this._timing = {
60
59
  startTime: 0,
@@ -68,6 +67,12 @@ class Request extends _channelOwner.ChannelOwner {
68
67
  responseEnd: -1
69
68
  };
70
69
  }
70
+ static from(request) {
71
+ return request._object;
72
+ }
73
+ static fromNullable(request) {
74
+ return request ? Request.from(request) : null;
75
+ }
71
76
  url() {
72
77
  return this._fallbackOverrides.url || this._initializer.url;
73
78
  }
@@ -78,42 +83,44 @@ class Request extends _channelOwner.ChannelOwner {
78
83
  return this._fallbackOverrides.method || this._initializer.method;
79
84
  }
80
85
  postData() {
81
- var _ref;
82
- return ((_ref = this._fallbackOverrides.postDataBuffer || this._initializer.postData) === null || _ref === void 0 ? void 0 : _ref.toString('utf-8')) || null;
86
+ return (this._fallbackOverrides.postDataBuffer || this._initializer.postData)?.toString("utf-8") || null;
83
87
  }
84
88
  postDataBuffer() {
85
89
  return this._fallbackOverrides.postDataBuffer || this._initializer.postData || null;
86
90
  }
87
91
  postDataJSON() {
88
92
  const postData = this.postData();
89
- if (!postData) return null;
90
- const contentType = this.headers()['content-type'];
91
- if (contentType !== null && contentType !== void 0 && contentType.includes('application/x-www-form-urlencoded')) {
93
+ if (!postData)
94
+ return null;
95
+ const contentType = this.headers()["content-type"];
96
+ if (contentType?.includes("application/x-www-form-urlencoded")) {
92
97
  const entries = {};
93
98
  const parsed = new URLSearchParams(postData);
94
- for (const [k, v] of parsed.entries()) entries[k] = v;
99
+ for (const [k, v] of parsed.entries())
100
+ entries[k] = v;
95
101
  return entries;
96
102
  }
97
103
  try {
98
104
  return JSON.parse(postData);
99
105
  } catch (e) {
100
- throw new Error('POST data is not a valid JSON object: ' + postData);
106
+ throw new Error("POST data is not a valid JSON object: " + postData);
101
107
  }
102
108
  }
103
-
104
109
  /**
105
110
  * @deprecated
106
111
  */
107
112
  headers() {
108
- if (this._fallbackOverrides.headers) return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers).headers();
113
+ if (this._fallbackOverrides.headers)
114
+ return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers).headers();
109
115
  return this._provisionalHeaders.headers();
110
116
  }
111
117
  async _actualHeaders() {
112
- if (this._fallbackOverrides.headers) return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers);
118
+ if (this._fallbackOverrides.headers)
119
+ return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers);
113
120
  if (!this._actualHeadersPromise) {
114
121
  this._actualHeadersPromise = this._wrapApiCall(async () => {
115
122
  return new RawHeaders((await this._channel.rawRequestHeaders()).headers);
116
- });
123
+ }, { internal: true });
117
124
  }
118
125
  return await this._actualHeadersPromise;
119
126
  }
@@ -130,27 +137,28 @@ class Request extends _channelOwner.ChannelOwner {
130
137
  return Response.fromNullable((await this._channel.response()).response);
131
138
  }
132
139
  async _internalResponse() {
133
- return await this._wrapApiCall(async () => {
134
- return Response.fromNullable((await this._channel.response()).response);
135
- }, true);
140
+ return Response.fromNullable((await this._channel.response()).response);
136
141
  }
137
142
  frame() {
138
143
  if (!this._initializer.frame) {
139
- (0, _assert.assert)(this.serviceWorker());
140
- throw new Error('Service Worker requests do not have an associated frame.');
144
+ (0, import_assert.assert)(this.serviceWorker());
145
+ throw new Error("Service Worker requests do not have an associated frame.");
141
146
  }
142
- const frame = _frame.Frame.from(this._initializer.frame);
147
+ const frame = import_frame.Frame.from(this._initializer.frame);
143
148
  if (!frame._page) {
144
- throw new Error(['Frame for this navigation request is not available, because the request', 'was issued before the frame is created. You can check whether the request', 'is a navigation request by calling isNavigationRequest() method.'].join('\n'));
149
+ throw new Error([
150
+ "Frame for this navigation request is not available, because the request",
151
+ "was issued before the frame is created. You can check whether the request",
152
+ "is a navigation request by calling isNavigationRequest() method."
153
+ ].join("\n"));
145
154
  }
146
155
  return frame;
147
156
  }
148
157
  _safePage() {
149
- var _Frame$fromNullable;
150
- return ((_Frame$fromNullable = _frame.Frame.fromNullable(this._initializer.frame)) === null || _Frame$fromNullable === void 0 ? void 0 : _Frame$fromNullable._page) || null;
158
+ return import_frame.Frame.fromNullable(this._initializer.frame)?._page || null;
151
159
  }
152
160
  serviceWorker() {
153
- return this._initializer.serviceWorker ? _worker.Worker.from(this._initializer.serviceWorker) : null;
161
+ return this._initializer.serviceWorker ? import_worker.Worker.from(this._initializer.serviceWorker) : null;
154
162
  }
155
163
  isNavigationRequest() {
156
164
  return this._initializer.isNavigationRequest;
@@ -162,7 +170,8 @@ class Request extends _channelOwner.ChannelOwner {
162
170
  return this._redirectedTo;
163
171
  }
164
172
  failure() {
165
- if (this._failureText === null) return null;
173
+ if (this._failureText === null)
174
+ return null;
166
175
  return {
167
176
  errorText: this._failureText
168
177
  };
@@ -172,53 +181,56 @@ class Request extends _channelOwner.ChannelOwner {
172
181
  }
173
182
  async sizes() {
174
183
  const response = await this.response();
175
- if (!response) throw new Error('Unable to fetch sizes for failed request');
184
+ if (!response)
185
+ throw new Error("Unable to fetch sizes for failed request");
176
186
  return (await response._channel.sizes()).sizes;
177
187
  }
178
188
  _setResponseEndTiming(responseEndTiming) {
179
189
  this._timing.responseEnd = responseEndTiming;
180
- if (this._timing.responseStart === -1) this._timing.responseStart = responseEndTiming;
190
+ if (this._timing.responseStart === -1)
191
+ this._timing.responseStart = responseEndTiming;
181
192
  }
182
193
  _finalRequest() {
183
194
  return this._redirectedTo ? this._redirectedTo._finalRequest() : this;
184
195
  }
185
196
  _applyFallbackOverrides(overrides) {
186
- if (overrides.url) this._fallbackOverrides.url = overrides.url;
187
- if (overrides.method) this._fallbackOverrides.method = overrides.method;
188
- if (overrides.headers) this._fallbackOverrides.headers = overrides.headers;
189
- if ((0, _rtti.isString)(overrides.postData)) this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, 'utf-8');else if (overrides.postData instanceof Buffer) this._fallbackOverrides.postDataBuffer = overrides.postData;else if (overrides.postData) this._fallbackOverrides.postDataBuffer = Buffer.from(JSON.stringify(overrides.postData), 'utf-8');
197
+ if (overrides.url)
198
+ this._fallbackOverrides.url = overrides.url;
199
+ if (overrides.method)
200
+ this._fallbackOverrides.method = overrides.method;
201
+ if (overrides.headers)
202
+ this._fallbackOverrides.headers = overrides.headers;
203
+ if ((0, import_rtti.isString)(overrides.postData))
204
+ this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, "utf-8");
205
+ else if (overrides.postData instanceof Buffer)
206
+ this._fallbackOverrides.postDataBuffer = overrides.postData;
207
+ else if (overrides.postData)
208
+ this._fallbackOverrides.postDataBuffer = Buffer.from(JSON.stringify(overrides.postData), "utf-8");
190
209
  }
191
210
  _fallbackOverridesForContinue() {
192
211
  return this._fallbackOverrides;
193
212
  }
194
213
  _targetClosedScope() {
195
- var _this$serviceWorker, _this$_safePage;
196
- return ((_this$serviceWorker = this.serviceWorker()) === null || _this$serviceWorker === void 0 ? void 0 : _this$serviceWorker._closedScope) || ((_this$_safePage = this._safePage()) === null || _this$_safePage === void 0 ? void 0 : _this$_safePage._closedOrCrashedScope) || new _manualPromise.LongStandingScope();
214
+ return this.serviceWorker()?._closedScope || this._safePage()?._closedOrCrashedScope || new import_manualPromise.LongStandingScope();
197
215
  }
198
216
  }
199
- exports.Request = Request;
200
- class Route extends _channelOwner.ChannelOwner {
201
- static from(route) {
202
- return route._object;
203
- }
217
+ class Route extends import_channelOwner.ChannelOwner {
204
218
  constructor(parent, type, guid, initializer) {
205
219
  super(parent, type, guid, initializer);
206
220
  this._handlingPromise = null;
207
- this._context = void 0;
208
221
  this._didThrow = false;
209
- this.markAsInternalType();
222
+ }
223
+ static from(route) {
224
+ return route._object;
210
225
  }
211
226
  request() {
212
227
  return Request.from(this._initializer.request);
213
228
  }
214
229
  async _raceWithTargetClose(promise) {
215
- // When page closes or crashes, we catch any potential rejects from this Route.
216
- // Note that page could be missing when routing popup's initial request that
217
- // does not have a Page initialized just yet.
218
230
  return await this.request()._targetClosedScope().safeRace(promise);
219
231
  }
220
232
  async _startHandling() {
221
- this._handlingPromise = new _manualPromise.ManualPromise();
233
+ this._handlingPromise = new import_manualPromise.ManualPromise();
222
234
  return await this._handlingPromise;
223
235
  }
224
236
  async fallback(options = {}) {
@@ -228,32 +240,22 @@ class Route extends _channelOwner.ChannelOwner {
228
240
  }
229
241
  async abort(errorCode) {
230
242
  await this._handleRoute(async () => {
231
- await this._raceWithTargetClose(this._channel.abort({
232
- errorCode
233
- }));
243
+ await this._raceWithTargetClose(this._channel.abort({ errorCode }));
234
244
  });
235
245
  }
236
246
  async _redirectNavigationRequest(url) {
237
247
  await this._handleRoute(async () => {
238
- await this._raceWithTargetClose(this._channel.redirectNavigationRequest({
239
- url
240
- }));
248
+ await this._raceWithTargetClose(this._channel.redirectNavigationRequest({ url }));
241
249
  });
242
250
  }
243
251
  async fetch(options = {}) {
244
252
  return await this._wrapApiCall(async () => {
245
- return await this._context.request._innerFetch({
246
- request: this.request(),
247
- data: options.postData,
248
- ...options
249
- });
253
+ return await this._context.request._innerFetch({ request: this.request(), data: options.postData, ...options });
250
254
  });
251
255
  }
252
256
  async fulfill(options = {}) {
253
257
  await this._handleRoute(async () => {
254
- await this._wrapApiCall(async () => {
255
- await this._innerFulfill(options);
256
- });
258
+ await this._innerFulfill(options);
257
259
  });
258
260
  }
259
261
  async _handleRoute(callback) {
@@ -268,44 +270,50 @@ class Route extends _channelOwner.ChannelOwner {
268
270
  }
269
271
  async _innerFulfill(options = {}) {
270
272
  let fetchResponseUid;
271
- let {
272
- status: statusOption,
273
- headers: headersOption,
274
- body
275
- } = options;
276
- if (options.json !== undefined) {
277
- (0, _assert.assert)(options.body === undefined, 'Can specify either body or json parameters');
273
+ let { status: statusOption, headers: headersOption, body } = options;
274
+ if (options.json !== void 0) {
275
+ (0, import_assert.assert)(options.body === void 0, "Can specify either body or json parameters");
278
276
  body = JSON.stringify(options.json);
279
277
  }
280
- if (options.response instanceof _fetch.APIResponse) {
281
- statusOption !== null && statusOption !== void 0 ? statusOption : statusOption = options.response.status();
282
- headersOption !== null && headersOption !== void 0 ? headersOption : headersOption = options.response.headers();
283
- if (body === undefined && options.path === undefined) {
284
- if (options.response._request._connection === this._connection) fetchResponseUid = options.response._fetchUid();else body = await options.response.body();
278
+ if (options.response instanceof import_fetch.APIResponse) {
279
+ statusOption ??= options.response.status();
280
+ headersOption ??= options.response.headers();
281
+ if (body === void 0 && options.path === void 0) {
282
+ if (options.response._request._connection === this._connection)
283
+ fetchResponseUid = options.response._fetchUid();
284
+ else
285
+ body = await options.response.body();
285
286
  }
286
287
  }
287
288
  let isBase64 = false;
288
289
  let length = 0;
289
290
  if (options.path) {
290
291
  const buffer = await this._platform.fs().promises.readFile(options.path);
291
- body = buffer.toString('base64');
292
+ body = buffer.toString("base64");
292
293
  isBase64 = true;
293
294
  length = buffer.length;
294
- } else if ((0, _rtti.isString)(body)) {
295
+ } else if ((0, import_rtti.isString)(body)) {
295
296
  isBase64 = false;
296
297
  length = Buffer.byteLength(body);
297
298
  } else if (body) {
298
299
  length = body.length;
299
- body = body.toString('base64');
300
+ body = body.toString("base64");
300
301
  isBase64 = true;
301
302
  }
302
303
  const headers = {};
303
- for (const header of Object.keys(headersOption || {})) headers[header.toLowerCase()] = String(headersOption[header]);
304
- if (options.contentType) headers['content-type'] = String(options.contentType);else if (options.json) headers['content-type'] = 'application/json';else if (options.path) headers['content-type'] = (0, _mimeType.getMimeTypeForPath)(options.path) || 'application/octet-stream';
305
- if (length && !('content-length' in headers)) headers['content-length'] = String(length);
304
+ for (const header of Object.keys(headersOption || {}))
305
+ headers[header.toLowerCase()] = String(headersOption[header]);
306
+ if (options.contentType)
307
+ headers["content-type"] = String(options.contentType);
308
+ else if (options.json)
309
+ headers["content-type"] = "application/json";
310
+ else if (options.path)
311
+ headers["content-type"] = (0, import_mimeType.getMimeTypeForPath)(options.path) || "application/octet-stream";
312
+ if (length && !("content-length" in headers))
313
+ headers["content-length"] = String(length);
306
314
  await this._raceWithTargetClose(this._channel.fulfill({
307
315
  status: statusOption || 200,
308
- headers: (0, _headers.headersObjectToArray)(headers),
316
+ headers: (0, import_headers.headersObjectToArray)(headers),
309
317
  body,
310
318
  isBase64,
311
319
  fetchResponseUid
@@ -314,11 +322,15 @@ class Route extends _channelOwner.ChannelOwner {
314
322
  async continue(options = {}) {
315
323
  await this._handleRoute(async () => {
316
324
  this.request()._applyFallbackOverrides(options);
317
- await this._innerContinue(false /* isFallback */);
325
+ await this._innerContinue(
326
+ false
327
+ /* isFallback */
328
+ );
318
329
  });
319
330
  }
320
331
  _checkNotHandled() {
321
- if (!this._handlingPromise) throw new Error('Route is already handled!');
332
+ if (!this._handlingPromise)
333
+ throw new Error("Route is already handled!");
322
334
  }
323
335
  _reportHandled(done) {
324
336
  const chain = this._handlingPromise;
@@ -330,31 +342,21 @@ class Route extends _channelOwner.ChannelOwner {
330
342
  return await this._raceWithTargetClose(this._channel.continue({
331
343
  url: options.url,
332
344
  method: options.method,
333
- headers: options.headers ? (0, _headers.headersObjectToArray)(options.headers) : undefined,
345
+ headers: options.headers ? (0, import_headers.headersObjectToArray)(options.headers) : void 0,
334
346
  postData: options.postDataBuffer,
335
347
  isFallback
336
348
  }));
337
349
  }
338
350
  }
339
- exports.Route = Route;
340
- class WebSocketRoute extends _channelOwner.ChannelOwner {
341
- static from(route) {
342
- return route._object;
343
- }
351
+ class WebSocketRoute extends import_channelOwner.ChannelOwner {
344
352
  constructor(parent, type, guid, initializer) {
345
353
  super(parent, type, guid, initializer);
346
- this._onPageMessage = void 0;
347
- this._onPageClose = void 0;
348
- this._onServerMessage = void 0;
349
- this._onServerClose = void 0;
350
- this._server = void 0;
351
354
  this._connected = false;
352
- this.markAsInternalType();
353
355
  this._server = {
354
- onMessage: handler => {
356
+ onMessage: (handler) => {
355
357
  this._onServerMessage = handler;
356
358
  },
357
- onClose: handler => {
359
+ onClose: (handler) => {
358
360
  this._onServerClose = handler;
359
361
  },
360
362
  connectToServer: () => {
@@ -364,88 +366,75 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
364
366
  return this._initializer.url;
365
367
  },
366
368
  close: async (options = {}) => {
367
- await this._channel.closeServer({
368
- ...options,
369
- wasClean: true
370
- }).catch(() => {});
369
+ await this._channel.closeServer({ ...options, wasClean: true }).catch(() => {
370
+ });
371
371
  },
372
- send: message => {
373
- if ((0, _rtti.isString)(message)) this._channel.sendToServer({
374
- message,
375
- isBase64: false
376
- }).catch(() => {});else this._channel.sendToServer({
377
- message: message.toString('base64'),
378
- isBase64: true
379
- }).catch(() => {});
372
+ send: (message) => {
373
+ if ((0, import_rtti.isString)(message))
374
+ this._channel.sendToServer({ message, isBase64: false }).catch(() => {
375
+ });
376
+ else
377
+ this._channel.sendToServer({ message: message.toString("base64"), isBase64: true }).catch(() => {
378
+ });
380
379
  },
381
380
  async [Symbol.asyncDispose]() {
382
381
  await this.close();
383
382
  }
384
383
  };
385
- this._channel.on('messageFromPage', ({
386
- message,
387
- isBase64
388
- }) => {
389
- if (this._onPageMessage) this._onPageMessage(isBase64 ? Buffer.from(message, 'base64') : message);else if (this._connected) this._channel.sendToServer({
390
- message,
391
- isBase64
392
- }).catch(() => {});
384
+ this._channel.on("messageFromPage", ({ message, isBase64 }) => {
385
+ if (this._onPageMessage)
386
+ this._onPageMessage(isBase64 ? Buffer.from(message, "base64") : message);
387
+ else if (this._connected)
388
+ this._channel.sendToServer({ message, isBase64 }).catch(() => {
389
+ });
393
390
  });
394
- this._channel.on('messageFromServer', ({
395
- message,
396
- isBase64
397
- }) => {
398
- if (this._onServerMessage) this._onServerMessage(isBase64 ? Buffer.from(message, 'base64') : message);else this._channel.sendToPage({
399
- message,
400
- isBase64
401
- }).catch(() => {});
391
+ this._channel.on("messageFromServer", ({ message, isBase64 }) => {
392
+ if (this._onServerMessage)
393
+ this._onServerMessage(isBase64 ? Buffer.from(message, "base64") : message);
394
+ else
395
+ this._channel.sendToPage({ message, isBase64 }).catch(() => {
396
+ });
402
397
  });
403
- this._channel.on('closePage', ({
404
- code,
405
- reason,
406
- wasClean
407
- }) => {
408
- if (this._onPageClose) this._onPageClose(code, reason);else this._channel.closeServer({
409
- code,
410
- reason,
411
- wasClean
412
- }).catch(() => {});
398
+ this._channel.on("closePage", ({ code, reason, wasClean }) => {
399
+ if (this._onPageClose)
400
+ this._onPageClose(code, reason);
401
+ else
402
+ this._channel.closeServer({ code, reason, wasClean }).catch(() => {
403
+ });
413
404
  });
414
- this._channel.on('closeServer', ({
415
- code,
416
- reason,
417
- wasClean
418
- }) => {
419
- if (this._onServerClose) this._onServerClose(code, reason);else this._channel.closePage({
420
- code,
421
- reason,
422
- wasClean
423
- }).catch(() => {});
405
+ this._channel.on("closeServer", ({ code, reason, wasClean }) => {
406
+ if (this._onServerClose)
407
+ this._onServerClose(code, reason);
408
+ else
409
+ this._channel.closePage({ code, reason, wasClean }).catch(() => {
410
+ });
424
411
  });
425
412
  }
413
+ static from(route) {
414
+ return route._object;
415
+ }
426
416
  url() {
427
417
  return this._initializer.url;
428
418
  }
429
419
  async close(options = {}) {
430
- await this._channel.closePage({
431
- ...options,
432
- wasClean: true
433
- }).catch(() => {});
420
+ await this._channel.closePage({ ...options, wasClean: true }).catch(() => {
421
+ });
434
422
  }
435
423
  connectToServer() {
436
- if (this._connected) throw new Error('Already connected to the server');
424
+ if (this._connected)
425
+ throw new Error("Already connected to the server");
437
426
  this._connected = true;
438
- this._channel.connect().catch(() => {});
427
+ this._channel.connect().catch(() => {
428
+ });
439
429
  return this._server;
440
430
  }
441
431
  send(message) {
442
- if ((0, _rtti.isString)(message)) this._channel.sendToPage({
443
- message,
444
- isBase64: false
445
- }).catch(() => {});else this._channel.sendToPage({
446
- message: message.toString('base64'),
447
- isBase64: true
448
- }).catch(() => {});
432
+ if ((0, import_rtti.isString)(message))
433
+ this._channel.sendToPage({ message, isBase64: false }).catch(() => {
434
+ });
435
+ else
436
+ this._channel.sendToPage({ message: message.toString("base64"), isBase64: true }).catch(() => {
437
+ });
449
438
  }
450
439
  onMessage(handler) {
451
440
  this._onPageMessage = handler;
@@ -457,17 +446,14 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
457
446
  await this.close();
458
447
  }
459
448
  async _afterHandle() {
460
- if (this._connected) return;
461
- // Ensure that websocket is "open" and can send messages without an actual server connection.
462
- await this._channel.ensureOpened();
449
+ if (this._connected)
450
+ return;
451
+ await this._channel.ensureOpened().catch(() => {
452
+ });
463
453
  }
464
454
  }
465
- exports.WebSocketRoute = WebSocketRoute;
466
455
  class WebSocketRouteHandler {
467
456
  constructor(baseURL, url, handler) {
468
- this._baseURL = void 0;
469
- this.url = void 0;
470
- this.handler = void 0;
471
457
  this._baseURL = baseURL;
472
458
  this.url = url;
473
459
  this.handler = handler;
@@ -476,20 +462,19 @@ class WebSocketRouteHandler {
476
462
  const patterns = [];
477
463
  let all = false;
478
464
  for (const handler of handlers) {
479
- if ((0, _rtti.isString)(handler.url)) patterns.push({
480
- glob: handler.url
481
- });else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
482
- regexSource: handler.url.source,
483
- regexFlags: handler.url.flags
484
- });else all = true;
465
+ if ((0, import_rtti.isString)(handler.url))
466
+ patterns.push({ glob: handler.url });
467
+ else if ((0, import_rtti.isRegExp)(handler.url))
468
+ patterns.push({ regexSource: handler.url.source, regexFlags: handler.url.flags });
469
+ else
470
+ all = true;
485
471
  }
486
- if (all) return [{
487
- glob: '**/*'
488
- }];
472
+ if (all)
473
+ return [{ glob: "**/*" }];
489
474
  return patterns;
490
475
  }
491
476
  matches(wsURL) {
492
- return (0, _urlMatch.urlMatches)(this._baseURL, wsURL, this.url);
477
+ return (0, import_urlMatch.urlMatches)(this._baseURL, wsURL, this.url, true);
493
478
  }
494
479
  async handle(webSocketRoute) {
495
480
  const handler = this.handler;
@@ -497,30 +482,24 @@ class WebSocketRouteHandler {
497
482
  await webSocketRoute._afterHandle();
498
483
  }
499
484
  }
500
- exports.WebSocketRouteHandler = WebSocketRouteHandler;
501
- class Response extends _channelOwner.ChannelOwner {
502
- static from(response) {
503
- return response._object;
504
- }
505
- static fromNullable(response) {
506
- return response ? Response.from(response) : null;
507
- }
485
+ class Response extends import_channelOwner.ChannelOwner {
508
486
  constructor(parent, type, guid, initializer) {
509
487
  super(parent, type, guid, initializer);
510
- this._provisionalHeaders = void 0;
511
- this._actualHeadersPromise = void 0;
512
- this._request = void 0;
513
- this._finishedPromise = new _manualPromise.ManualPromise();
514
- this.markAsInternalType();
488
+ this._finishedPromise = new import_manualPromise.ManualPromise();
515
489
  this._provisionalHeaders = new RawHeaders(initializer.headers);
516
490
  this._request = Request.from(this._initializer.request);
517
491
  Object.assign(this._request._timing, this._initializer.timing);
518
492
  }
493
+ static from(response) {
494
+ return response._object;
495
+ }
496
+ static fromNullable(response) {
497
+ return response ? Response.from(response) : null;
498
+ }
519
499
  url() {
520
500
  return this._initializer.url;
521
501
  }
522
502
  ok() {
523
- // Status 0 is for file:// URLs
524
503
  return this._initializer.status === 0 || this._initializer.status >= 200 && this._initializer.status <= 299;
525
504
  }
526
505
  status() {
@@ -532,7 +511,6 @@ class Response extends _channelOwner.ChannelOwner {
532
511
  fromServiceWorker() {
533
512
  return this._initializer.fromServiceWorker;
534
513
  }
535
-
536
514
  /**
537
515
  * @deprecated
538
516
  */
@@ -567,7 +545,7 @@ class Response extends _channelOwner.ChannelOwner {
567
545
  }
568
546
  async text() {
569
547
  const content = await this.body();
570
- return content.toString('utf8');
548
+ return content.toString("utf8");
571
549
  }
572
550
  async json() {
573
551
  const content = await this.text();
@@ -586,37 +564,30 @@ class Response extends _channelOwner.ChannelOwner {
586
564
  return (await this._channel.securityDetails()).value || null;
587
565
  }
588
566
  }
589
- exports.Response = Response;
590
- class WebSocket extends _channelOwner.ChannelOwner {
567
+ class WebSocket extends import_channelOwner.ChannelOwner {
591
568
  static from(webSocket) {
592
569
  return webSocket._object;
593
570
  }
594
571
  constructor(parent, type, guid, initializer) {
595
572
  super(parent, type, guid, initializer);
596
- this._page = void 0;
597
- this._isClosed = void 0;
598
573
  this._isClosed = false;
599
574
  this._page = parent;
600
- this._channel.on('frameSent', event => {
601
- if (event.opcode === 1) this.emit(_events.Events.WebSocket.FrameSent, {
602
- payload: event.data
603
- });else if (event.opcode === 2) this.emit(_events.Events.WebSocket.FrameSent, {
604
- payload: Buffer.from(event.data, 'base64')
605
- });
575
+ this._channel.on("frameSent", (event) => {
576
+ if (event.opcode === 1)
577
+ this.emit(import_events.Events.WebSocket.FrameSent, { payload: event.data });
578
+ else if (event.opcode === 2)
579
+ this.emit(import_events.Events.WebSocket.FrameSent, { payload: Buffer.from(event.data, "base64") });
606
580
  });
607
- this._channel.on('frameReceived', event => {
608
- if (event.opcode === 1) this.emit(_events.Events.WebSocket.FrameReceived, {
609
- payload: event.data
610
- });else if (event.opcode === 2) this.emit(_events.Events.WebSocket.FrameReceived, {
611
- payload: Buffer.from(event.data, 'base64')
612
- });
581
+ this._channel.on("frameReceived", (event) => {
582
+ if (event.opcode === 1)
583
+ this.emit(import_events.Events.WebSocket.FrameReceived, { payload: event.data });
584
+ else if (event.opcode === 2)
585
+ this.emit(import_events.Events.WebSocket.FrameReceived, { payload: Buffer.from(event.data, "base64") });
613
586
  });
614
- this._channel.on('socketError', ({
615
- error
616
- }) => this.emit(_events.Events.WebSocket.Error, error));
617
- this._channel.on('close', () => {
587
+ this._channel.on("socketError", ({ error }) => this.emit(import_events.Events.WebSocket.Error, error));
588
+ this._channel.on("close", () => {
618
589
  this._isClosed = true;
619
- this.emit(_events.Events.WebSocket.Close, this);
590
+ this.emit(import_events.Events.WebSocket.Close, this);
620
591
  });
621
592
  }
622
593
  url() {
@@ -627,36 +598,33 @@ class WebSocket extends _channelOwner.ChannelOwner {
627
598
  }
628
599
  async waitForEvent(event, optionsOrPredicate = {}) {
629
600
  return await this._wrapApiCall(async () => {
630
- const timeout = this._page._timeoutSettings.timeout(typeof optionsOrPredicate === 'function' ? {} : optionsOrPredicate);
631
- const predicate = typeof optionsOrPredicate === 'function' ? optionsOrPredicate : optionsOrPredicate.predicate;
632
- const waiter = _waiter.Waiter.createForEvent(this, event);
601
+ const timeout = this._page._timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
602
+ const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
603
+ const waiter = import_waiter.Waiter.createForEvent(this, event);
633
604
  waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
634
- if (event !== _events.Events.WebSocket.Error) waiter.rejectOnEvent(this, _events.Events.WebSocket.Error, new Error('Socket error'));
635
- if (event !== _events.Events.WebSocket.Close) waiter.rejectOnEvent(this, _events.Events.WebSocket.Close, new Error('Socket closed'));
636
- waiter.rejectOnEvent(this._page, _events.Events.Page.Close, () => this._page._closeErrorWithReason());
605
+ if (event !== import_events.Events.WebSocket.Error)
606
+ waiter.rejectOnEvent(this, import_events.Events.WebSocket.Error, new Error("Socket error"));
607
+ if (event !== import_events.Events.WebSocket.Close)
608
+ waiter.rejectOnEvent(this, import_events.Events.WebSocket.Close, new Error("Socket closed"));
609
+ waiter.rejectOnEvent(this._page, import_events.Events.Page.Close, () => this._page._closeErrorWithReason());
637
610
  const result = await waiter.waitForEvent(this, event, predicate);
638
611
  waiter.dispose();
639
612
  return result;
640
613
  });
641
614
  }
642
615
  }
643
- exports.WebSocket = WebSocket;
644
616
  function validateHeaders(headers) {
645
617
  for (const key of Object.keys(headers)) {
646
618
  const value = headers[key];
647
- if (!Object.is(value, undefined) && !(0, _rtti.isString)(value)) throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
619
+ if (!Object.is(value, void 0) && !(0, import_rtti.isString)(value))
620
+ throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
648
621
  }
649
622
  }
650
623
  class RouteHandler {
651
624
  constructor(platform, baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
652
625
  this.handledCount = 0;
653
- this._baseURL = void 0;
654
- this._times = void 0;
655
- this.url = void 0;
656
- this.handler = void 0;
657
626
  this._ignoreException = false;
658
- this._activeInvocations = new Set();
659
- this._savedZone = void 0;
627
+ this._activeInvocations = /* @__PURE__ */ new Set();
660
628
  this._baseURL = baseURL;
661
629
  this._times = times;
662
630
  this.url = url;
@@ -667,39 +635,35 @@ class RouteHandler {
667
635
  const patterns = [];
668
636
  let all = false;
669
637
  for (const handler of handlers) {
670
- if ((0, _rtti.isString)(handler.url)) patterns.push({
671
- glob: handler.url
672
- });else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
673
- regexSource: handler.url.source,
674
- regexFlags: handler.url.flags
675
- });else all = true;
638
+ if ((0, import_rtti.isString)(handler.url))
639
+ patterns.push({ glob: handler.url });
640
+ else if ((0, import_rtti.isRegExp)(handler.url))
641
+ patterns.push({ regexSource: handler.url.source, regexFlags: handler.url.flags });
642
+ else
643
+ all = true;
676
644
  }
677
- if (all) return [{
678
- glob: '**/*'
679
- }];
645
+ if (all)
646
+ return [{ glob: "**/*" }];
680
647
  return patterns;
681
648
  }
682
649
  matches(requestURL) {
683
- return (0, _urlMatch.urlMatches)(this._baseURL, requestURL, this.url);
650
+ return (0, import_urlMatch.urlMatches)(this._baseURL, requestURL, this.url);
684
651
  }
685
652
  async handle(route) {
686
653
  return await this._savedZone.run(async () => this._handleImpl(route));
687
654
  }
688
655
  async _handleImpl(route) {
689
- const handlerInvocation = {
690
- complete: new _manualPromise.ManualPromise(),
691
- route
692
- };
656
+ const handlerInvocation = { complete: new import_manualPromise.ManualPromise(), route };
693
657
  this._activeInvocations.add(handlerInvocation);
694
658
  try {
695
659
  return await this._handleInternal(route);
696
660
  } catch (e) {
697
- // If the handler was stopped (without waiting for completion), we ignore all exceptions.
698
- if (this._ignoreException) return false;
699
- if ((0, _errors.isTargetClosedError)(e)) {
700
- // We are failing in the handler because the target close closed.
701
- // Give user a hint!
702
- (0, _stackTrace.rewriteErrorMessage)(e, `"${e.message}" while running route callback.\nConsider awaiting \`await page.unrouteAll({ behavior: 'ignoreErrors' })\`\nbefore the end of the test to ignore remaining routes in flight.`);
661
+ if (this._ignoreException)
662
+ return false;
663
+ if ((0, import_errors.isTargetClosedError)(e)) {
664
+ (0, import_stackTrace.rewriteErrorMessage)(e, `"${e.message}" while running route callback.
665
+ Consider awaiting \`await page.unrouteAll({ behavior: 'ignoreErrors' })\`
666
+ before the end of the test to ignore remaining routes in flight.`);
703
667
  }
704
668
  throw e;
705
669
  } finally {
@@ -708,16 +672,13 @@ class RouteHandler {
708
672
  }
709
673
  }
710
674
  async stop(behavior) {
711
- // When a handler is manually unrouted or its page/context is closed we either
712
- // - wait for the current handler invocations to finish
713
- // - or do not wait, if the user opted out of it, but swallow all exceptions
714
- // that happen after the unroute/close.
715
- if (behavior === 'ignoreErrors') {
675
+ if (behavior === "ignoreErrors") {
716
676
  this._ignoreException = true;
717
677
  } else {
718
678
  const promises = [];
719
679
  for (const activation of this._activeInvocations) {
720
- if (!activation.route._didThrow) promises.push(activation.complete);
680
+ if (!activation.route._didThrow)
681
+ promises.push(activation.complete);
721
682
  }
722
683
  await Promise.all(promises);
723
684
  }
@@ -725,45 +686,59 @@ class RouteHandler {
725
686
  async _handleInternal(route) {
726
687
  ++this.handledCount;
727
688
  const handledPromise = route._startHandling();
728
- // Extract handler into a variable to avoid [RouteHandler.handler] in the stack.
729
689
  const handler = this.handler;
730
- const [handled] = await Promise.all([handledPromise, handler(route, route.request())]);
690
+ const [handled] = await Promise.all([
691
+ handledPromise,
692
+ handler(route, route.request())
693
+ ]);
731
694
  return handled;
732
695
  }
733
696
  willExpire() {
734
697
  return this.handledCount + 1 >= this._times;
735
698
  }
736
699
  }
737
- exports.RouteHandler = RouteHandler;
738
700
  class RawHeaders {
701
+ constructor(headers) {
702
+ this._headersMap = new import_multimap.MultiMap();
703
+ this._headersArray = headers;
704
+ for (const header of headers)
705
+ this._headersMap.set(header.name.toLowerCase(), header.value);
706
+ }
739
707
  static _fromHeadersObjectLossy(headers) {
740
708
  const headersArray = Object.entries(headers).map(([name, value]) => ({
741
709
  name,
742
710
  value
743
- })).filter(header => header.value !== undefined);
711
+ })).filter((header) => header.value !== void 0);
744
712
  return new RawHeaders(headersArray);
745
713
  }
746
- constructor(headers) {
747
- this._headersArray = void 0;
748
- this._headersMap = new _multimap.MultiMap();
749
- this._headersArray = headers;
750
- for (const header of headers) this._headersMap.set(header.name.toLowerCase(), header.value);
751
- }
752
714
  get(name) {
753
715
  const values = this.getAll(name);
754
- if (!values || !values.length) return null;
755
- return values.join(name.toLowerCase() === 'set-cookie' ? '\n' : ', ');
716
+ if (!values || !values.length)
717
+ return null;
718
+ return values.join(name.toLowerCase() === "set-cookie" ? "\n" : ", ");
756
719
  }
757
720
  getAll(name) {
758
721
  return [...this._headersMap.get(name.toLowerCase())];
759
722
  }
760
723
  headers() {
761
724
  const result = {};
762
- for (const name of this._headersMap.keys()) result[name] = this.get(name);
725
+ for (const name of this._headersMap.keys())
726
+ result[name] = this.get(name);
763
727
  return result;
764
728
  }
765
729
  headersArray() {
766
730
  return this._headersArray;
767
731
  }
768
732
  }
769
- exports.RawHeaders = RawHeaders;
733
+ // Annotate the CommonJS export names for ESM import in node:
734
+ 0 && (module.exports = {
735
+ RawHeaders,
736
+ Request,
737
+ Response,
738
+ Route,
739
+ RouteHandler,
740
+ WebSocket,
741
+ WebSocketRoute,
742
+ WebSocketRouteHandler,
743
+ validateHeaders
744
+ });