rebrowser-playwright-core 1.49.0 → 1.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  2. package/bin/reinstall_msedge_beta_linux.sh +6 -0
  3. package/bin/reinstall_msedge_dev_linux.sh +6 -0
  4. package/bin/reinstall_msedge_stable_linux.sh +6 -0
  5. package/browsers.json +28 -13
  6. package/index.js +0 -1
  7. package/lib/androidServerImpl.js +42 -48
  8. package/lib/browserServerImpl.js +60 -64
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +314 -354
  11. package/lib/cli/programWithTestStub.js +51 -44
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +146 -254
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -39
  16. package/lib/client/browser.js +59 -68
  17. package/lib/client/browserContext.js +302 -322
  18. package/lib/client/browserType.js +95 -143
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +109 -139
  21. package/lib/client/clientHelper.js +49 -42
  22. package/lib/client/clientInstrumentation.js +40 -35
  23. package/lib/client/clientStackTrace.js +69 -0
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +203 -218
  26. package/lib/client/consoleMessage.js +33 -33
  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 +74 -76
  31. package/lib/client/elementHandle.js +126 -163
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +127 -127
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +154 -178
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +34 -0
  38. package/lib/client/frame.js +189 -307
  39. package/lib/client/harRouter.js +44 -56
  40. package/lib/client/input.js +40 -69
  41. package/lib/client/jsHandle.js +55 -71
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +53 -28
  44. package/lib/client/locator.js +144 -230
  45. package/lib/client/network.js +285 -301
  46. package/lib/client/page.js +273 -312
  47. package/lib/client/platform.js +74 -0
  48. package/lib/client/playwright.js +62 -57
  49. package/lib/client/selectors.js +51 -43
  50. package/lib/client/stream.js +30 -45
  51. package/lib/client/timeoutSettings.js +75 -0
  52. package/lib/client/tracing.js +49 -82
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +71 -91
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +111 -0
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +28 -43
  60. package/lib/generated/clockSource.js +26 -5
  61. package/lib/generated/consoleApiSource.js +26 -5
  62. package/lib/generated/injectedScriptSource.js +26 -5
  63. package/lib/generated/pollingRecorderSource.js +26 -5
  64. package/lib/generated/utilityScriptSource.js +26 -5
  65. package/lib/generated/webSocketMockSource.js +375 -4
  66. package/lib/inProcessFactory.js +53 -48
  67. package/lib/inprocess.js +2 -19
  68. package/lib/outofprocess.js +53 -42
  69. package/lib/protocol/debug.js +209 -25
  70. package/lib/protocol/serializers.js +153 -134
  71. package/lib/protocol/validator.js +2712 -2667
  72. package/lib/protocol/validatorPrimitives.js +115 -75
  73. package/lib/remote/playwrightConnection.js +144 -152
  74. package/lib/remote/playwrightServer.js +106 -77
  75. package/lib/server/accessibility.js +44 -37
  76. package/lib/server/android/android.js +216 -206
  77. package/lib/server/android/backendAdb.js +89 -82
  78. package/lib/server/artifact.js +78 -55
  79. package/lib/server/bidi/bidiBrowser.js +227 -158
  80. package/lib/server/bidi/bidiChromium.js +106 -78
  81. package/lib/server/bidi/bidiConnection.js +66 -83
  82. package/lib/server/bidi/bidiExecutionContext.js +161 -97
  83. package/lib/server/bidi/bidiFirefox.js +76 -68
  84. package/lib/server/bidi/bidiInput.js +90 -102
  85. package/lib/server/bidi/bidiNetworkManager.js +141 -159
  86. package/lib/server/bidi/bidiOverCdp.js +57 -58
  87. package/lib/server/bidi/bidiPage.js +262 -261
  88. package/lib/server/bidi/bidiPdf.js +52 -86
  89. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  90. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  91. package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
  92. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  93. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  94. package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
  95. package/lib/server/browser.js +76 -84
  96. package/lib/server/browserContext.js +343 -360
  97. package/lib/server/browserType.js +169 -181
  98. package/lib/server/callLog.js +82 -0
  99. package/lib/server/chromium/chromium.js +212 -190
  100. package/lib/server/chromium/chromiumSwitches.js +99 -44
  101. package/lib/server/chromium/crAccessibility.js +157 -131
  102. package/lib/server/chromium/crBrowser.js +262 -280
  103. package/lib/server/chromium/crConnection.js +121 -178
  104. package/lib/server/chromium/crCoverage.js +113 -127
  105. package/lib/server/chromium/crDevTools.js +64 -55
  106. package/lib/server/chromium/crDragDrop.js +62 -79
  107. package/lib/server/chromium/crExecutionContext.js +100 -91
  108. package/lib/server/chromium/crInput.js +101 -88
  109. package/lib/server/chromium/crNetworkManager.js +269 -370
  110. package/lib/server/chromium/crPage.js +509 -595
  111. package/lib/server/chromium/crPdf.js +54 -86
  112. package/lib/server/chromium/crProtocolHelper.js +92 -80
  113. package/lib/server/chromium/crServiceWorker.js +85 -69
  114. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  115. package/lib/server/chromium/protocol.d.js +16 -0
  116. package/lib/server/chromium/videoRecorder.js +65 -99
  117. package/lib/server/clock.js +58 -46
  118. package/lib/server/codegen/csharp.js +191 -156
  119. package/lib/server/codegen/java.js +163 -125
  120. package/lib/server/codegen/javascript.js +166 -143
  121. package/lib/server/codegen/jsonl.js +33 -29
  122. package/lib/server/codegen/language.js +75 -52
  123. package/lib/server/codegen/languages.js +65 -27
  124. package/lib/server/codegen/python.js +141 -125
  125. package/lib/server/codegen/types.js +15 -4
  126. package/lib/server/console.js +28 -32
  127. package/lib/server/cookieStore.js +105 -86
  128. package/lib/server/debugController.js +102 -154
  129. package/lib/server/debugger.js +82 -78
  130. package/lib/server/deviceDescriptors.js +37 -24
  131. package/lib/server/deviceDescriptorsSource.json +131 -131
  132. package/lib/server/dialog.js +36 -35
  133. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  134. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  135. package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
  136. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  137. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  138. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  139. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
  140. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  141. package/lib/server/dispatchers/dispatcher.js +180 -229
  142. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  143. package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
  144. package/lib/server/dispatchers/frameDispatcher.js +93 -162
  145. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  146. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  147. package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
  148. package/lib/server/dispatchers/networkDispatchers.js +92 -109
  149. package/lib/server/dispatchers/pageDispatcher.js +130 -169
  150. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  151. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  152. package/lib/server/dispatchers/streamDispatcher.js +42 -44
  153. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  154. package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
  155. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
  156. package/lib/server/dom.js +424 -443
  157. package/lib/server/download.js +45 -35
  158. package/lib/server/electron/electron.js +156 -175
  159. package/lib/server/electron/loader.js +8 -36
  160. package/lib/server/errors.js +47 -46
  161. package/lib/server/fetch.js +302 -331
  162. package/lib/server/fileChooser.js +25 -24
  163. package/lib/server/fileUploadUtils.js +66 -57
  164. package/lib/server/firefox/ffAccessibility.js +153 -131
  165. package/lib/server/firefox/ffBrowser.js +218 -274
  166. package/lib/server/firefox/ffConnection.js +63 -84
  167. package/lib/server/firefox/ffExecutionContext.js +103 -77
  168. package/lib/server/firefox/ffInput.js +72 -63
  169. package/lib/server/firefox/ffNetworkManager.js +131 -110
  170. package/lib/server/firefox/ffPage.js +244 -302
  171. package/lib/server/firefox/firefox.js +76 -69
  172. package/lib/server/firefox/protocol.d.js +16 -0
  173. package/lib/server/formData.js +107 -35
  174. package/lib/server/frameSelectors.js +77 -111
  175. package/lib/server/frames.js +719 -855
  176. package/lib/server/har/harRecorder.js +85 -77
  177. package/lib/server/har/harTracer.js +288 -224
  178. package/lib/server/harBackend.js +157 -0
  179. package/lib/server/helper.js +56 -59
  180. package/lib/server/index.js +59 -106
  181. package/lib/server/input.js +136 -166
  182. package/lib/server/instrumentation.js +49 -44
  183. package/lib/server/javascript.js +157 -151
  184. package/lib/server/launchApp.js +92 -73
  185. package/lib/server/localUtils.js +211 -0
  186. package/lib/server/macEditingCommands.js +141 -137
  187. package/lib/server/network.js +263 -297
  188. package/lib/server/page.js +353 -432
  189. package/lib/server/pageBinding.js +88 -0
  190. package/lib/server/pipeTransport.js +49 -45
  191. package/lib/server/playwright.js +60 -67
  192. package/lib/server/progress.js +56 -51
  193. package/lib/server/protocolError.js +34 -31
  194. package/lib/server/recorder/chat.js +161 -0
  195. package/lib/server/recorder/contextRecorder.js +135 -148
  196. package/lib/server/recorder/recorderApp.js +129 -132
  197. package/lib/server/recorder/recorderCollection.js +57 -57
  198. package/lib/server/recorder/recorderFrontend.js +15 -4
  199. package/lib/server/recorder/recorderRunner.js +80 -100
  200. package/lib/server/recorder/recorderUtils.js +59 -72
  201. package/lib/server/recorder/throttledFile.js +42 -31
  202. package/lib/server/recorder.js +186 -190
  203. package/lib/server/registry/browserFetcher.js +107 -100
  204. package/lib/server/registry/dependencies.js +247 -198
  205. package/lib/server/registry/index.js +928 -709
  206. package/lib/server/registry/nativeDeps.js +1073 -461
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +166 -182
  209. package/lib/server/selectors.js +85 -46
  210. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  211. package/lib/server/socksInterceptor.js +62 -67
  212. package/lib/server/storageScript.js +154 -0
  213. package/lib/server/timeoutSettings.js +89 -0
  214. package/lib/server/trace/recorder/snapshotter.js +70 -88
  215. package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
  216. package/lib/server/trace/recorder/tracing.js +324 -327
  217. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  218. package/lib/server/trace/viewer/traceViewer.js +172 -137
  219. package/lib/server/transport.js +125 -133
  220. package/lib/server/types.js +26 -22
  221. package/lib/server/usKeyboardLayout.js +135 -545
  222. package/lib/server/utils/ascii.js +44 -0
  223. package/lib/server/utils/comparators.js +161 -0
  224. package/lib/server/utils/crypto.js +216 -0
  225. package/lib/server/utils/debug.js +47 -0
  226. package/lib/server/utils/debugLogger.js +114 -0
  227. package/lib/server/utils/env.js +68 -0
  228. package/lib/server/utils/eventsHelper.js +39 -0
  229. package/lib/server/utils/expectUtils.js +38 -0
  230. package/lib/server/utils/fileUtils.js +191 -0
  231. package/lib/server/utils/happyEyeballs.js +207 -0
  232. package/lib/server/utils/hostPlatform.js +109 -0
  233. package/lib/server/utils/httpServer.js +218 -0
  234. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  235. package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
  236. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  237. package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
  238. package/lib/server/utils/linuxUtils.js +71 -0
  239. package/lib/server/utils/network.js +217 -0
  240. package/lib/server/utils/nodePlatform.js +148 -0
  241. package/lib/server/utils/pipeTransport.js +84 -0
  242. package/lib/server/utils/processLauncher.js +238 -0
  243. package/lib/server/utils/profiler.js +65 -0
  244. package/lib/server/utils/socksProxy.js +511 -0
  245. package/lib/server/utils/spawnAsync.js +41 -0
  246. package/lib/server/utils/task.js +51 -0
  247. package/lib/server/utils/userAgent.js +98 -0
  248. package/lib/server/utils/wsServer.js +132 -0
  249. package/lib/server/utils/zipFile.js +74 -0
  250. package/lib/server/utils/zones.js +57 -0
  251. package/lib/server/webkit/protocol.d.js +16 -0
  252. package/lib/server/webkit/webkit.js +76 -63
  253. package/lib/server/webkit/wkAccessibility.js +161 -118
  254. package/lib/server/webkit/wkBrowser.js +163 -180
  255. package/lib/server/webkit/wkConnection.js +59 -83
  256. package/lib/server/webkit/wkExecutionContext.js +96 -73
  257. package/lib/server/webkit/wkInput.js +87 -75
  258. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  259. package/lib/server/webkit/wkPage.js +536 -645
  260. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  261. package/lib/server/webkit/wkWorkers.js +77 -77
  262. package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
  263. package/lib/utils/isomorphic/assert.js +31 -0
  264. package/lib/utils/isomorphic/builtins.js +90 -0
  265. package/lib/utils/isomorphic/colors.js +72 -0
  266. package/lib/utils/isomorphic/cssParser.js +123 -127
  267. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  268. package/lib/utils/isomorphic/headers.js +53 -0
  269. package/lib/utils/isomorphic/locatorGenerators.js +344 -349
  270. package/lib/utils/isomorphic/locatorParser.js +103 -106
  271. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  272. package/lib/utils/isomorphic/manualPromise.js +115 -0
  273. package/lib/utils/isomorphic/mimeType.js +453 -22
  274. package/lib/utils/isomorphic/multimap.js +81 -0
  275. package/lib/utils/isomorphic/rtti.js +43 -0
  276. package/lib/utils/isomorphic/selectorParser.js +183 -193
  277. package/lib/utils/isomorphic/semaphore.js +54 -0
  278. package/lib/utils/isomorphic/stackTrace.js +158 -0
  279. package/lib/utils/isomorphic/stringUtils.js +113 -106
  280. package/lib/utils/isomorphic/time.js +44 -0
  281. package/lib/utils/isomorphic/timeoutRunner.js +67 -0
  282. package/lib/utils/isomorphic/traceUtils.js +52 -32
  283. package/lib/utils/isomorphic/types.js +16 -0
  284. package/lib/utils/isomorphic/urlMatch.js +114 -71
  285. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  286. package/lib/utils.js +101 -0
  287. package/lib/utilsBundle.js +101 -76
  288. package/lib/utilsBundleImpl/index.js +114 -116
  289. package/lib/vite/htmlReport/index.html +26 -20
  290. package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
  291. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  292. package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
  293. package/lib/vite/recorder/index.html +2 -2
  294. package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
  295. package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
  296. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  297. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
  298. package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
  299. package/lib/vite/traceViewer/index.html +4 -7
  300. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  301. package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
  302. package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
  303. package/lib/vite/traceViewer/uiMode.html +4 -7
  304. package/lib/zipBundle.js +32 -23
  305. package/lib/zipBundleImpl.js +4 -4
  306. package/package.json +7 -7
  307. package/types/protocol.d.ts +819 -127
  308. package/types/types.d.ts +196 -75
  309. package/bin/PrintDeps.exe +0 -0
  310. package/bin/README.md +0 -2
  311. package/lib/common/socksProxy.js +0 -569
  312. package/lib/common/timeoutSettings.js +0 -73
  313. package/lib/common/types.js +0 -5
  314. package/lib/image_tools/colorUtils.js +0 -98
  315. package/lib/image_tools/imageChannel.js +0 -70
  316. package/lib/protocol/transport.js +0 -82
  317. package/lib/server/ariaSnapshot.js +0 -33
  318. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
  319. package/lib/server/recorder/recorderInTraceViewer.js +0 -144
  320. package/lib/utils/ascii.js +0 -31
  321. package/lib/utils/comparators.js +0 -153
  322. package/lib/utils/crypto.js +0 -171
  323. package/lib/utils/debug.js +0 -46
  324. package/lib/utils/debugLogger.js +0 -91
  325. package/lib/utils/env.js +0 -49
  326. package/lib/utils/eventsHelper.js +0 -38
  327. package/lib/utils/expectUtils.js +0 -33
  328. package/lib/utils/fileUtils.js +0 -205
  329. package/lib/utils/happy-eyeballs.js +0 -194
  330. package/lib/utils/headers.js +0 -52
  331. package/lib/utils/hostPlatform.js +0 -139
  332. package/lib/utils/httpServer.js +0 -237
  333. package/lib/utils/index.js +0 -368
  334. package/lib/utils/isomorphic/recorderUtils.js +0 -227
  335. package/lib/utils/linuxUtils.js +0 -78
  336. package/lib/utils/manualPromise.js +0 -109
  337. package/lib/utils/multimap.js +0 -75
  338. package/lib/utils/network.js +0 -160
  339. package/lib/utils/processLauncher.js +0 -248
  340. package/lib/utils/profiler.js +0 -53
  341. package/lib/utils/rtti.js +0 -44
  342. package/lib/utils/semaphore.js +0 -51
  343. package/lib/utils/sequence.js +0 -64
  344. package/lib/utils/spawnAsync.js +0 -45
  345. package/lib/utils/stackTrace.js +0 -134
  346. package/lib/utils/task.js +0 -58
  347. package/lib/utils/time.js +0 -37
  348. package/lib/utils/timeoutRunner.js +0 -66
  349. package/lib/utils/traceUtils.js +0 -44
  350. package/lib/utils/userAgent.js +0 -105
  351. package/lib/utils/wsServer.js +0 -127
  352. package/lib/utils/zipFile.js +0 -75
  353. package/lib/utils/zones.js +0 -71
  354. package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
  355. package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
  356. package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
  357. package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
  358. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  359. package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
  360. package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
  363. package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
  364. package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
  365. package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  366. package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
  367. package/lib/vite/traceViewer/recorder.html +0 -17
  368. package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
  369. package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
  370. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  371. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  372. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  373. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -1,57 +1,60 @@
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 _url = require("url");
9
- var _channelOwner = require("./channelOwner");
10
- var _frame = require("./frame");
11
- var _worker = require("./worker");
12
- var _fs = _interopRequireDefault(require("fs"));
13
- var _utilsBundle = require("../utilsBundle");
14
- var _utils = require("../utils");
15
- var _manualPromise = require("../utils/manualPromise");
16
- var _events = require("./events");
17
- var _waiter = require("./waiter");
18
- var _fetch = require("./fetch");
19
- var _errors = require("./errors");
20
- let _Symbol$asyncDispose;
21
- /**
22
- * Copyright (c) Microsoft Corporation.
23
- *
24
- * Licensed under the Apache License, Version 2.0 (the "License");
25
- * you may not use this file except in compliance with the License.
26
- * You may obtain a copy of the License at
27
- *
28
- * http://www.apache.org/licenses/LICENSE-2.0
29
- *
30
- * Unless required by applicable law or agreed to in writing, software
31
- * distributed under the License is distributed on an "AS IS" BASIS,
32
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
33
- * See the License for the specific language governing permissions and
34
- * limitations under the License.
35
- */
36
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
- class Request extends _channelOwner.ChannelOwner {
38
- static from(request) {
39
- return request._object;
40
- }
41
- static fromNullable(request) {
42
- return request ? Request.from(request) : null;
43
- }
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 {
44
48
  constructor(parent, type, guid, initializer) {
45
49
  super(parent, type, guid, initializer);
46
50
  this._redirectedFrom = null;
47
51
  this._redirectedTo = null;
48
52
  this._failureText = null;
49
- this._provisionalHeaders = void 0;
50
- this._actualHeadersPromise = void 0;
51
- this._timing = void 0;
52
53
  this._fallbackOverrides = {};
54
+ this.markAsInternalType();
53
55
  this._redirectedFrom = Request.fromNullable(initializer.redirectedFrom);
54
- if (this._redirectedFrom) this._redirectedFrom._redirectedTo = this;
56
+ if (this._redirectedFrom)
57
+ this._redirectedFrom._redirectedTo = this;
55
58
  this._provisionalHeaders = new RawHeaders(initializer.headers);
56
59
  this._timing = {
57
60
  startTime: 0,
@@ -65,6 +68,12 @@ class Request extends _channelOwner.ChannelOwner {
65
68
  responseEnd: -1
66
69
  };
67
70
  }
71
+ static from(request) {
72
+ return request._object;
73
+ }
74
+ static fromNullable(request) {
75
+ return request ? Request.from(request) : null;
76
+ }
68
77
  url() {
69
78
  return this._fallbackOverrides.url || this._initializer.url;
70
79
  }
@@ -75,38 +84,40 @@ class Request extends _channelOwner.ChannelOwner {
75
84
  return this._fallbackOverrides.method || this._initializer.method;
76
85
  }
77
86
  postData() {
78
- var _ref;
79
- return ((_ref = this._fallbackOverrides.postDataBuffer || this._initializer.postData) === null || _ref === void 0 ? void 0 : _ref.toString('utf-8')) || null;
87
+ return (this._fallbackOverrides.postDataBuffer || this._initializer.postData)?.toString("utf-8") || null;
80
88
  }
81
89
  postDataBuffer() {
82
90
  return this._fallbackOverrides.postDataBuffer || this._initializer.postData || null;
83
91
  }
84
92
  postDataJSON() {
85
93
  const postData = this.postData();
86
- if (!postData) return null;
87
- const contentType = this.headers()['content-type'];
88
- if (contentType !== null && contentType !== void 0 && contentType.includes('application/x-www-form-urlencoded')) {
94
+ if (!postData)
95
+ return null;
96
+ const contentType = this.headers()["content-type"];
97
+ if (contentType?.includes("application/x-www-form-urlencoded")) {
89
98
  const entries = {};
90
- const parsed = new _url.URLSearchParams(postData);
91
- for (const [k, v] of parsed.entries()) entries[k] = v;
99
+ const parsed = new URLSearchParams(postData);
100
+ for (const [k, v] of parsed.entries())
101
+ entries[k] = v;
92
102
  return entries;
93
103
  }
94
104
  try {
95
105
  return JSON.parse(postData);
96
106
  } catch (e) {
97
- throw new Error('POST data is not a valid JSON object: ' + postData);
107
+ throw new Error("POST data is not a valid JSON object: " + postData);
98
108
  }
99
109
  }
100
-
101
110
  /**
102
111
  * @deprecated
103
112
  */
104
113
  headers() {
105
- if (this._fallbackOverrides.headers) return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers).headers();
114
+ if (this._fallbackOverrides.headers)
115
+ return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers).headers();
106
116
  return this._provisionalHeaders.headers();
107
117
  }
108
118
  async _actualHeaders() {
109
- if (this._fallbackOverrides.headers) return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers);
119
+ if (this._fallbackOverrides.headers)
120
+ return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers);
110
121
  if (!this._actualHeadersPromise) {
111
122
  this._actualHeadersPromise = this._wrapApiCall(async () => {
112
123
  return new RawHeaders((await this._channel.rawRequestHeaders()).headers);
@@ -133,21 +144,24 @@ class Request extends _channelOwner.ChannelOwner {
133
144
  }
134
145
  frame() {
135
146
  if (!this._initializer.frame) {
136
- (0, _utils.assert)(this.serviceWorker());
137
- throw new Error('Service Worker requests do not have an associated frame.');
147
+ (0, import_assert.assert)(this.serviceWorker());
148
+ throw new Error("Service Worker requests do not have an associated frame.");
138
149
  }
139
- const frame = _frame.Frame.from(this._initializer.frame);
150
+ const frame = import_frame.Frame.from(this._initializer.frame);
140
151
  if (!frame._page) {
141
- 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'));
152
+ throw new Error([
153
+ "Frame for this navigation request is not available, because the request",
154
+ "was issued before the frame is created. You can check whether the request",
155
+ "is a navigation request by calling isNavigationRequest() method."
156
+ ].join("\n"));
142
157
  }
143
158
  return frame;
144
159
  }
145
160
  _safePage() {
146
- var _Frame$fromNullable;
147
- return ((_Frame$fromNullable = _frame.Frame.fromNullable(this._initializer.frame)) === null || _Frame$fromNullable === void 0 ? void 0 : _Frame$fromNullable._page) || null;
161
+ return import_frame.Frame.fromNullable(this._initializer.frame)?._page || null;
148
162
  }
149
163
  serviceWorker() {
150
- return this._initializer.serviceWorker ? _worker.Worker.from(this._initializer.serviceWorker) : null;
164
+ return this._initializer.serviceWorker ? import_worker.Worker.from(this._initializer.serviceWorker) : null;
151
165
  }
152
166
  isNavigationRequest() {
153
167
  return this._initializer.isNavigationRequest;
@@ -159,7 +173,8 @@ class Request extends _channelOwner.ChannelOwner {
159
173
  return this._redirectedTo;
160
174
  }
161
175
  failure() {
162
- if (this._failureText === null) return null;
176
+ if (this._failureText === null)
177
+ return null;
163
178
  return {
164
179
  errorText: this._failureText
165
180
  };
@@ -169,53 +184,57 @@ class Request extends _channelOwner.ChannelOwner {
169
184
  }
170
185
  async sizes() {
171
186
  const response = await this.response();
172
- if (!response) throw new Error('Unable to fetch sizes for failed request');
187
+ if (!response)
188
+ throw new Error("Unable to fetch sizes for failed request");
173
189
  return (await response._channel.sizes()).sizes;
174
190
  }
175
191
  _setResponseEndTiming(responseEndTiming) {
176
192
  this._timing.responseEnd = responseEndTiming;
177
- if (this._timing.responseStart === -1) this._timing.responseStart = responseEndTiming;
193
+ if (this._timing.responseStart === -1)
194
+ this._timing.responseStart = responseEndTiming;
178
195
  }
179
196
  _finalRequest() {
180
197
  return this._redirectedTo ? this._redirectedTo._finalRequest() : this;
181
198
  }
182
199
  _applyFallbackOverrides(overrides) {
183
- if (overrides.url) this._fallbackOverrides.url = overrides.url;
184
- if (overrides.method) this._fallbackOverrides.method = overrides.method;
185
- if (overrides.headers) this._fallbackOverrides.headers = overrides.headers;
186
- if ((0, _utils.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');
200
+ if (overrides.url)
201
+ this._fallbackOverrides.url = overrides.url;
202
+ if (overrides.method)
203
+ this._fallbackOverrides.method = overrides.method;
204
+ if (overrides.headers)
205
+ this._fallbackOverrides.headers = overrides.headers;
206
+ if ((0, import_rtti.isString)(overrides.postData))
207
+ this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, "utf-8");
208
+ else if (overrides.postData instanceof Buffer)
209
+ this._fallbackOverrides.postDataBuffer = overrides.postData;
210
+ else if (overrides.postData)
211
+ this._fallbackOverrides.postDataBuffer = Buffer.from(JSON.stringify(overrides.postData), "utf-8");
187
212
  }
188
213
  _fallbackOverridesForContinue() {
189
214
  return this._fallbackOverrides;
190
215
  }
191
216
  _targetClosedScope() {
192
- var _this$serviceWorker, _this$_safePage;
193
- 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();
217
+ return this.serviceWorker()?._closedScope || this._safePage()?._closedOrCrashedScope || new import_manualPromise.LongStandingScope();
194
218
  }
195
219
  }
196
- exports.Request = Request;
197
- class Route extends _channelOwner.ChannelOwner {
198
- static from(route) {
199
- return route._object;
200
- }
220
+ class Route extends import_channelOwner.ChannelOwner {
201
221
  constructor(parent, type, guid, initializer) {
202
222
  super(parent, type, guid, initializer);
203
223
  this._handlingPromise = null;
204
- this._context = void 0;
205
224
  this._didThrow = false;
206
225
  this.markAsInternalType();
207
226
  }
227
+ static from(route) {
228
+ return route._object;
229
+ }
208
230
  request() {
209
231
  return Request.from(this._initializer.request);
210
232
  }
211
233
  async _raceWithTargetClose(promise) {
212
- // When page closes or crashes, we catch any potential rejects from this Route.
213
- // Note that page could be missing when routing popup's initial request that
214
- // does not have a Page initialized just yet.
215
234
  return await this.request()._targetClosedScope().safeRace(promise);
216
235
  }
217
236
  async _startHandling() {
218
- this._handlingPromise = new _manualPromise.ManualPromise();
237
+ this._handlingPromise = new import_manualPromise.ManualPromise();
219
238
  return await this._handlingPromise;
220
239
  }
221
240
  async fallback(options = {}) {
@@ -225,25 +244,17 @@ class Route extends _channelOwner.ChannelOwner {
225
244
  }
226
245
  async abort(errorCode) {
227
246
  await this._handleRoute(async () => {
228
- await this._raceWithTargetClose(this._channel.abort({
229
- errorCode
230
- }));
247
+ await this._raceWithTargetClose(this._channel.abort({ errorCode }));
231
248
  });
232
249
  }
233
250
  async _redirectNavigationRequest(url) {
234
251
  await this._handleRoute(async () => {
235
- await this._raceWithTargetClose(this._channel.redirectNavigationRequest({
236
- url
237
- }));
252
+ await this._raceWithTargetClose(this._channel.redirectNavigationRequest({ url }));
238
253
  });
239
254
  }
240
255
  async fetch(options = {}) {
241
256
  return await this._wrapApiCall(async () => {
242
- return await this._context.request._innerFetch({
243
- request: this.request(),
244
- data: options.postData,
245
- ...options
246
- });
257
+ return await this._context.request._innerFetch({ request: this.request(), data: options.postData, ...options });
247
258
  });
248
259
  }
249
260
  async fulfill(options = {}) {
@@ -265,45 +276,50 @@ class Route extends _channelOwner.ChannelOwner {
265
276
  }
266
277
  async _innerFulfill(options = {}) {
267
278
  let fetchResponseUid;
268
- let {
269
- status: statusOption,
270
- headers: headersOption,
271
- body
272
- } = options;
273
- if (options.json !== undefined) {
274
- (0, _utils.assert)(options.body === undefined, 'Can specify either body or json parameters');
279
+ let { status: statusOption, headers: headersOption, body } = options;
280
+ if (options.json !== void 0) {
281
+ (0, import_assert.assert)(options.body === void 0, "Can specify either body or json parameters");
275
282
  body = JSON.stringify(options.json);
276
283
  }
277
- if (options.response instanceof _fetch.APIResponse) {
278
- var _statusOption, _headersOption;
279
- (_statusOption = statusOption) !== null && _statusOption !== void 0 ? _statusOption : statusOption = options.response.status();
280
- (_headersOption = headersOption) !== null && _headersOption !== void 0 ? _headersOption : headersOption = options.response.headers();
281
- if (body === undefined && options.path === undefined) {
282
- if (options.response._request._connection === this._connection) fetchResponseUid = options.response._fetchUid();else body = await options.response.body();
284
+ if (options.response instanceof import_fetch.APIResponse) {
285
+ statusOption ??= options.response.status();
286
+ headersOption ??= options.response.headers();
287
+ if (body === void 0 && options.path === void 0) {
288
+ if (options.response._request._connection === this._connection)
289
+ fetchResponseUid = options.response._fetchUid();
290
+ else
291
+ body = await options.response.body();
283
292
  }
284
293
  }
285
294
  let isBase64 = false;
286
295
  let length = 0;
287
296
  if (options.path) {
288
- const buffer = await _fs.default.promises.readFile(options.path);
289
- body = buffer.toString('base64');
297
+ const buffer = await this._platform.fs().promises.readFile(options.path);
298
+ body = buffer.toString("base64");
290
299
  isBase64 = true;
291
300
  length = buffer.length;
292
- } else if ((0, _utils.isString)(body)) {
301
+ } else if ((0, import_rtti.isString)(body)) {
293
302
  isBase64 = false;
294
303
  length = Buffer.byteLength(body);
295
304
  } else if (body) {
296
305
  length = body.length;
297
- body = body.toString('base64');
306
+ body = body.toString("base64");
298
307
  isBase64 = true;
299
308
  }
300
309
  const headers = {};
301
- for (const header of Object.keys(headersOption || {})) headers[header.toLowerCase()] = String(headersOption[header]);
302
- 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'] = _utilsBundle.mime.getType(options.path) || 'application/octet-stream';
303
- if (length && !('content-length' in headers)) headers['content-length'] = String(length);
310
+ for (const header of Object.keys(headersOption || {}))
311
+ headers[header.toLowerCase()] = String(headersOption[header]);
312
+ if (options.contentType)
313
+ headers["content-type"] = String(options.contentType);
314
+ else if (options.json)
315
+ headers["content-type"] = "application/json";
316
+ else if (options.path)
317
+ headers["content-type"] = (0, import_mimeType.getMimeTypeForPath)(options.path) || "application/octet-stream";
318
+ if (length && !("content-length" in headers))
319
+ headers["content-length"] = String(length);
304
320
  await this._raceWithTargetClose(this._channel.fulfill({
305
321
  status: statusOption || 200,
306
- headers: (0, _utils.headersObjectToArray)(headers),
322
+ headers: (0, import_headers.headersObjectToArray)(headers),
307
323
  body,
308
324
  isBase64,
309
325
  fetchResponseUid
@@ -312,11 +328,15 @@ class Route extends _channelOwner.ChannelOwner {
312
328
  async continue(options = {}) {
313
329
  await this._handleRoute(async () => {
314
330
  this.request()._applyFallbackOverrides(options);
315
- await this._innerContinue(false /* isFallback */);
331
+ await this._innerContinue(
332
+ false
333
+ /* isFallback */
334
+ );
316
335
  });
317
336
  }
318
337
  _checkNotHandled() {
319
- if (!this._handlingPromise) throw new Error('Route is already handled!');
338
+ if (!this._handlingPromise)
339
+ throw new Error("Route is already handled!");
320
340
  }
321
341
  _reportHandled(done) {
322
342
  const chain = this._handlingPromise;
@@ -328,32 +348,22 @@ class Route extends _channelOwner.ChannelOwner {
328
348
  return await this._raceWithTargetClose(this._channel.continue({
329
349
  url: options.url,
330
350
  method: options.method,
331
- headers: options.headers ? (0, _utils.headersObjectToArray)(options.headers) : undefined,
351
+ headers: options.headers ? (0, import_headers.headersObjectToArray)(options.headers) : void 0,
332
352
  postData: options.postDataBuffer,
333
353
  isFallback
334
354
  }));
335
355
  }
336
356
  }
337
- exports.Route = Route;
338
- _Symbol$asyncDispose = Symbol.asyncDispose;
339
- class WebSocketRoute extends _channelOwner.ChannelOwner {
340
- static from(route) {
341
- return route._object;
342
- }
357
+ class WebSocketRoute extends import_channelOwner.ChannelOwner {
343
358
  constructor(parent, type, guid, initializer) {
344
359
  super(parent, type, guid, initializer);
345
- this._onPageMessage = void 0;
346
- this._onPageClose = void 0;
347
- this._onServerMessage = void 0;
348
- this._onServerClose = void 0;
349
- this._server = void 0;
350
360
  this._connected = false;
351
361
  this.markAsInternalType();
352
362
  this._server = {
353
- onMessage: handler => {
363
+ onMessage: (handler) => {
354
364
  this._onServerMessage = handler;
355
365
  },
356
- onClose: handler => {
366
+ onClose: (handler) => {
357
367
  this._onServerClose = handler;
358
368
  },
359
369
  connectToServer: () => {
@@ -363,88 +373,75 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
363
373
  return this._initializer.url;
364
374
  },
365
375
  close: async (options = {}) => {
366
- await this._channel.closeServer({
367
- ...options,
368
- wasClean: true
369
- }).catch(() => {});
376
+ await this._channel.closeServer({ ...options, wasClean: true }).catch(() => {
377
+ });
370
378
  },
371
- send: message => {
372
- if ((0, _utils.isString)(message)) this._channel.sendToServer({
373
- message,
374
- isBase64: false
375
- }).catch(() => {});else this._channel.sendToServer({
376
- message: message.toString('base64'),
377
- isBase64: true
378
- }).catch(() => {});
379
+ send: (message) => {
380
+ if ((0, import_rtti.isString)(message))
381
+ this._channel.sendToServer({ message, isBase64: false }).catch(() => {
382
+ });
383
+ else
384
+ this._channel.sendToServer({ message: message.toString("base64"), isBase64: true }).catch(() => {
385
+ });
379
386
  },
380
387
  async [Symbol.asyncDispose]() {
381
388
  await this.close();
382
389
  }
383
390
  };
384
- this._channel.on('messageFromPage', ({
385
- message,
386
- isBase64
387
- }) => {
388
- if (this._onPageMessage) this._onPageMessage(isBase64 ? Buffer.from(message, 'base64') : message);else if (this._connected) this._channel.sendToServer({
389
- message,
390
- isBase64
391
- }).catch(() => {});
391
+ this._channel.on("messageFromPage", ({ message, isBase64 }) => {
392
+ if (this._onPageMessage)
393
+ this._onPageMessage(isBase64 ? Buffer.from(message, "base64") : message);
394
+ else if (this._connected)
395
+ this._channel.sendToServer({ message, isBase64 }).catch(() => {
396
+ });
392
397
  });
393
- this._channel.on('messageFromServer', ({
394
- message,
395
- isBase64
396
- }) => {
397
- if (this._onServerMessage) this._onServerMessage(isBase64 ? Buffer.from(message, 'base64') : message);else this._channel.sendToPage({
398
- message,
399
- isBase64
400
- }).catch(() => {});
398
+ this._channel.on("messageFromServer", ({ message, isBase64 }) => {
399
+ if (this._onServerMessage)
400
+ this._onServerMessage(isBase64 ? Buffer.from(message, "base64") : message);
401
+ else
402
+ this._channel.sendToPage({ message, isBase64 }).catch(() => {
403
+ });
401
404
  });
402
- this._channel.on('closePage', ({
403
- code,
404
- reason,
405
- wasClean
406
- }) => {
407
- if (this._onPageClose) this._onPageClose(code, reason);else this._channel.closeServer({
408
- code,
409
- reason,
410
- wasClean
411
- }).catch(() => {});
405
+ this._channel.on("closePage", ({ code, reason, wasClean }) => {
406
+ if (this._onPageClose)
407
+ this._onPageClose(code, reason);
408
+ else
409
+ this._channel.closeServer({ code, reason, wasClean }).catch(() => {
410
+ });
412
411
  });
413
- this._channel.on('closeServer', ({
414
- code,
415
- reason,
416
- wasClean
417
- }) => {
418
- if (this._onServerClose) this._onServerClose(code, reason);else this._channel.closePage({
419
- code,
420
- reason,
421
- wasClean
422
- }).catch(() => {});
412
+ this._channel.on("closeServer", ({ code, reason, wasClean }) => {
413
+ if (this._onServerClose)
414
+ this._onServerClose(code, reason);
415
+ else
416
+ this._channel.closePage({ code, reason, wasClean }).catch(() => {
417
+ });
423
418
  });
424
419
  }
420
+ static from(route) {
421
+ return route._object;
422
+ }
425
423
  url() {
426
424
  return this._initializer.url;
427
425
  }
428
426
  async close(options = {}) {
429
- await this._channel.closePage({
430
- ...options,
431
- wasClean: true
432
- }).catch(() => {});
427
+ await this._channel.closePage({ ...options, wasClean: true }).catch(() => {
428
+ });
433
429
  }
434
430
  connectToServer() {
435
- if (this._connected) throw new Error('Already connected to the server');
431
+ if (this._connected)
432
+ throw new Error("Already connected to the server");
436
433
  this._connected = true;
437
- this._channel.connect().catch(() => {});
434
+ this._channel.connect().catch(() => {
435
+ });
438
436
  return this._server;
439
437
  }
440
438
  send(message) {
441
- if ((0, _utils.isString)(message)) this._channel.sendToPage({
442
- message,
443
- isBase64: false
444
- }).catch(() => {});else this._channel.sendToPage({
445
- message: message.toString('base64'),
446
- isBase64: true
447
- }).catch(() => {});
439
+ if ((0, import_rtti.isString)(message))
440
+ this._channel.sendToPage({ message, isBase64: false }).catch(() => {
441
+ });
442
+ else
443
+ this._channel.sendToPage({ message: message.toString("base64"), isBase64: true }).catch(() => {
444
+ });
448
445
  }
449
446
  onMessage(handler) {
450
447
  this._onPageMessage = handler;
@@ -452,21 +449,17 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
452
449
  onClose(handler) {
453
450
  this._onPageClose = handler;
454
451
  }
455
- async [_Symbol$asyncDispose]() {
452
+ async [Symbol.asyncDispose]() {
456
453
  await this.close();
457
454
  }
458
455
  async _afterHandle() {
459
- if (this._connected) return;
460
- // Ensure that websocket is "open" and can send messages without an actual server connection.
456
+ if (this._connected)
457
+ return;
461
458
  await this._channel.ensureOpened();
462
459
  }
463
460
  }
464
- exports.WebSocketRoute = WebSocketRoute;
465
461
  class WebSocketRouteHandler {
466
462
  constructor(baseURL, url, handler) {
467
- this._baseURL = void 0;
468
- this.url = void 0;
469
- this.handler = void 0;
470
463
  this._baseURL = baseURL;
471
464
  this.url = url;
472
465
  this.handler = handler;
@@ -475,20 +468,19 @@ class WebSocketRouteHandler {
475
468
  const patterns = [];
476
469
  let all = false;
477
470
  for (const handler of handlers) {
478
- if ((0, _utils.isString)(handler.url)) patterns.push({
479
- glob: handler.url
480
- });else if ((0, _utils.isRegExp)(handler.url)) patterns.push({
481
- regexSource: handler.url.source,
482
- regexFlags: handler.url.flags
483
- });else all = true;
471
+ if ((0, import_rtti.isString)(handler.url))
472
+ patterns.push({ glob: handler.url });
473
+ else if ((0, import_rtti.isRegExp)(handler.url))
474
+ patterns.push({ regexSource: handler.url.source, regexFlags: handler.url.flags });
475
+ else
476
+ all = true;
484
477
  }
485
- if (all) return [{
486
- glob: '**/*'
487
- }];
478
+ if (all)
479
+ return [{ glob: "**/*" }];
488
480
  return patterns;
489
481
  }
490
482
  matches(wsURL) {
491
- return (0, _utils.urlMatches)(this._baseURL, wsURL, this.url);
483
+ return (0, import_urlMatch.urlMatches)(this._baseURL, wsURL, this.url, true);
492
484
  }
493
485
  async handle(webSocketRoute) {
494
486
  const handler = this.handler;
@@ -496,29 +488,25 @@ class WebSocketRouteHandler {
496
488
  await webSocketRoute._afterHandle();
497
489
  }
498
490
  }
499
- exports.WebSocketRouteHandler = WebSocketRouteHandler;
500
- class Response extends _channelOwner.ChannelOwner {
501
- static from(response) {
502
- return response._object;
503
- }
504
- static fromNullable(response) {
505
- return response ? Response.from(response) : null;
506
- }
491
+ class Response extends import_channelOwner.ChannelOwner {
507
492
  constructor(parent, type, guid, initializer) {
508
493
  super(parent, type, guid, initializer);
509
- this._provisionalHeaders = void 0;
510
- this._actualHeadersPromise = void 0;
511
- this._request = void 0;
512
- this._finishedPromise = new _manualPromise.ManualPromise();
494
+ this._finishedPromise = new import_manualPromise.ManualPromise();
495
+ this.markAsInternalType();
513
496
  this._provisionalHeaders = new RawHeaders(initializer.headers);
514
497
  this._request = Request.from(this._initializer.request);
515
498
  Object.assign(this._request._timing, this._initializer.timing);
516
499
  }
500
+ static from(response) {
501
+ return response._object;
502
+ }
503
+ static fromNullable(response) {
504
+ return response ? Response.from(response) : null;
505
+ }
517
506
  url() {
518
507
  return this._initializer.url;
519
508
  }
520
509
  ok() {
521
- // Status 0 is for file:// URLs
522
510
  return this._initializer.status === 0 || this._initializer.status >= 200 && this._initializer.status <= 299;
523
511
  }
524
512
  status() {
@@ -530,7 +518,6 @@ class Response extends _channelOwner.ChannelOwner {
530
518
  fromServiceWorker() {
531
519
  return this._initializer.fromServiceWorker;
532
520
  }
533
-
534
521
  /**
535
522
  * @deprecated
536
523
  */
@@ -565,7 +552,7 @@ class Response extends _channelOwner.ChannelOwner {
565
552
  }
566
553
  async text() {
567
554
  const content = await this.body();
568
- return content.toString('utf8');
555
+ return content.toString("utf8");
569
556
  }
570
557
  async json() {
571
558
  const content = await this.text();
@@ -584,37 +571,30 @@ class Response extends _channelOwner.ChannelOwner {
584
571
  return (await this._channel.securityDetails()).value || null;
585
572
  }
586
573
  }
587
- exports.Response = Response;
588
- class WebSocket extends _channelOwner.ChannelOwner {
574
+ class WebSocket extends import_channelOwner.ChannelOwner {
589
575
  static from(webSocket) {
590
576
  return webSocket._object;
591
577
  }
592
578
  constructor(parent, type, guid, initializer) {
593
579
  super(parent, type, guid, initializer);
594
- this._page = void 0;
595
- this._isClosed = void 0;
596
580
  this._isClosed = false;
597
581
  this._page = parent;
598
- this._channel.on('frameSent', event => {
599
- if (event.opcode === 1) this.emit(_events.Events.WebSocket.FrameSent, {
600
- payload: event.data
601
- });else if (event.opcode === 2) this.emit(_events.Events.WebSocket.FrameSent, {
602
- payload: Buffer.from(event.data, 'base64')
603
- });
582
+ this._channel.on("frameSent", (event) => {
583
+ if (event.opcode === 1)
584
+ this.emit(import_events.Events.WebSocket.FrameSent, { payload: event.data });
585
+ else if (event.opcode === 2)
586
+ this.emit(import_events.Events.WebSocket.FrameSent, { payload: Buffer.from(event.data, "base64") });
604
587
  });
605
- this._channel.on('frameReceived', event => {
606
- if (event.opcode === 1) this.emit(_events.Events.WebSocket.FrameReceived, {
607
- payload: event.data
608
- });else if (event.opcode === 2) this.emit(_events.Events.WebSocket.FrameReceived, {
609
- payload: Buffer.from(event.data, 'base64')
610
- });
588
+ this._channel.on("frameReceived", (event) => {
589
+ if (event.opcode === 1)
590
+ this.emit(import_events.Events.WebSocket.FrameReceived, { payload: event.data });
591
+ else if (event.opcode === 2)
592
+ this.emit(import_events.Events.WebSocket.FrameReceived, { payload: Buffer.from(event.data, "base64") });
611
593
  });
612
- this._channel.on('socketError', ({
613
- error
614
- }) => this.emit(_events.Events.WebSocket.Error, error));
615
- this._channel.on('close', () => {
594
+ this._channel.on("socketError", ({ error }) => this.emit(import_events.Events.WebSocket.Error, error));
595
+ this._channel.on("close", () => {
616
596
  this._isClosed = true;
617
- this.emit(_events.Events.WebSocket.Close, this);
597
+ this.emit(import_events.Events.WebSocket.Close, this);
618
598
  });
619
599
  }
620
600
  url() {
@@ -625,79 +605,72 @@ class WebSocket extends _channelOwner.ChannelOwner {
625
605
  }
626
606
  async waitForEvent(event, optionsOrPredicate = {}) {
627
607
  return await this._wrapApiCall(async () => {
628
- const timeout = this._page._timeoutSettings.timeout(typeof optionsOrPredicate === 'function' ? {} : optionsOrPredicate);
629
- const predicate = typeof optionsOrPredicate === 'function' ? optionsOrPredicate : optionsOrPredicate.predicate;
630
- const waiter = _waiter.Waiter.createForEvent(this, event);
608
+ const timeout = this._page._timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
609
+ const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
610
+ const waiter = import_waiter.Waiter.createForEvent(this, event);
631
611
  waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
632
- if (event !== _events.Events.WebSocket.Error) waiter.rejectOnEvent(this, _events.Events.WebSocket.Error, new Error('Socket error'));
633
- if (event !== _events.Events.WebSocket.Close) waiter.rejectOnEvent(this, _events.Events.WebSocket.Close, new Error('Socket closed'));
634
- waiter.rejectOnEvent(this._page, _events.Events.Page.Close, () => this._page._closeErrorWithReason());
612
+ if (event !== import_events.Events.WebSocket.Error)
613
+ waiter.rejectOnEvent(this, import_events.Events.WebSocket.Error, new Error("Socket error"));
614
+ if (event !== import_events.Events.WebSocket.Close)
615
+ waiter.rejectOnEvent(this, import_events.Events.WebSocket.Close, new Error("Socket closed"));
616
+ waiter.rejectOnEvent(this._page, import_events.Events.Page.Close, () => this._page._closeErrorWithReason());
635
617
  const result = await waiter.waitForEvent(this, event, predicate);
636
618
  waiter.dispose();
637
619
  return result;
638
620
  });
639
621
  }
640
622
  }
641
- exports.WebSocket = WebSocket;
642
623
  function validateHeaders(headers) {
643
624
  for (const key of Object.keys(headers)) {
644
625
  const value = headers[key];
645
- if (!Object.is(value, undefined) && !(0, _utils.isString)(value)) throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
626
+ if (!Object.is(value, void 0) && !(0, import_rtti.isString)(value))
627
+ throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
646
628
  }
647
629
  }
648
630
  class RouteHandler {
649
- constructor(baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
631
+ constructor(platform, baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
650
632
  this.handledCount = 0;
651
- this._baseURL = void 0;
652
- this._times = void 0;
653
- this.url = void 0;
654
- this.handler = void 0;
655
633
  this._ignoreException = false;
656
- this._activeInvocations = new Set();
657
- this._svedZone = void 0;
634
+ this._activeInvocations = /* @__PURE__ */ new Set();
658
635
  this._baseURL = baseURL;
659
636
  this._times = times;
660
637
  this.url = url;
661
638
  this.handler = handler;
662
- this._svedZone = _utils.zones.currentZone();
639
+ this._savedZone = platform.zones.current().pop();
663
640
  }
664
641
  static prepareInterceptionPatterns(handlers) {
665
642
  const patterns = [];
666
643
  let all = false;
667
644
  for (const handler of handlers) {
668
- if ((0, _utils.isString)(handler.url)) patterns.push({
669
- glob: handler.url
670
- });else if ((0, _utils.isRegExp)(handler.url)) patterns.push({
671
- regexSource: handler.url.source,
672
- regexFlags: handler.url.flags
673
- });else all = true;
645
+ if ((0, import_rtti.isString)(handler.url))
646
+ patterns.push({ glob: handler.url });
647
+ else if ((0, import_rtti.isRegExp)(handler.url))
648
+ patterns.push({ regexSource: handler.url.source, regexFlags: handler.url.flags });
649
+ else
650
+ all = true;
674
651
  }
675
- if (all) return [{
676
- glob: '**/*'
677
- }];
652
+ if (all)
653
+ return [{ glob: "**/*" }];
678
654
  return patterns;
679
655
  }
680
656
  matches(requestURL) {
681
- return (0, _utils.urlMatches)(this._baseURL, requestURL, this.url);
657
+ return (0, import_urlMatch.urlMatches)(this._baseURL, requestURL, this.url);
682
658
  }
683
659
  async handle(route) {
684
- return await this._svedZone.run(async () => this._handleImpl(route));
660
+ return await this._savedZone.run(async () => this._handleImpl(route));
685
661
  }
686
662
  async _handleImpl(route) {
687
- const handlerInvocation = {
688
- complete: new _manualPromise.ManualPromise(),
689
- route
690
- };
663
+ const handlerInvocation = { complete: new import_manualPromise.ManualPromise(), route };
691
664
  this._activeInvocations.add(handlerInvocation);
692
665
  try {
693
666
  return await this._handleInternal(route);
694
667
  } catch (e) {
695
- // If the handler was stopped (without waiting for completion), we ignore all exceptions.
696
- if (this._ignoreException) return false;
697
- if ((0, _errors.isTargetClosedError)(e)) {
698
- // We are failing in the handler because the target close closed.
699
- // Give user a hint!
700
- (0, _utils.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.`);
668
+ if (this._ignoreException)
669
+ return false;
670
+ if ((0, import_errors.isTargetClosedError)(e)) {
671
+ (0, import_stackTrace.rewriteErrorMessage)(e, `"${e.message}" while running route callback.
672
+ Consider awaiting \`await page.unrouteAll({ behavior: 'ignoreErrors' })\`
673
+ before the end of the test to ignore remaining routes in flight.`);
701
674
  }
702
675
  throw e;
703
676
  } finally {
@@ -706,16 +679,13 @@ class RouteHandler {
706
679
  }
707
680
  }
708
681
  async stop(behavior) {
709
- // When a handler is manually unrouted or its page/context is closed we either
710
- // - wait for the current handler invocations to finish
711
- // - or do not wait, if the user opted out of it, but swallow all exceptions
712
- // that happen after the unroute/close.
713
- if (behavior === 'ignoreErrors') {
682
+ if (behavior === "ignoreErrors") {
714
683
  this._ignoreException = true;
715
684
  } else {
716
685
  const promises = [];
717
686
  for (const activation of this._activeInvocations) {
718
- if (!activation.route._didThrow) promises.push(activation.complete);
687
+ if (!activation.route._didThrow)
688
+ promises.push(activation.complete);
719
689
  }
720
690
  await Promise.all(promises);
721
691
  }
@@ -723,45 +693,59 @@ class RouteHandler {
723
693
  async _handleInternal(route) {
724
694
  ++this.handledCount;
725
695
  const handledPromise = route._startHandling();
726
- // Extract handler into a variable to avoid [RouteHandler.handler] in the stack.
727
696
  const handler = this.handler;
728
- const [handled] = await Promise.all([handledPromise, handler(route, route.request())]);
697
+ const [handled] = await Promise.all([
698
+ handledPromise,
699
+ handler(route, route.request())
700
+ ]);
729
701
  return handled;
730
702
  }
731
703
  willExpire() {
732
704
  return this.handledCount + 1 >= this._times;
733
705
  }
734
706
  }
735
- exports.RouteHandler = RouteHandler;
736
707
  class RawHeaders {
708
+ constructor(headers) {
709
+ this._headersMap = new import_multimap.MultiMap();
710
+ this._headersArray = headers;
711
+ for (const header of headers)
712
+ this._headersMap.set(header.name.toLowerCase(), header.value);
713
+ }
737
714
  static _fromHeadersObjectLossy(headers) {
738
715
  const headersArray = Object.entries(headers).map(([name, value]) => ({
739
716
  name,
740
717
  value
741
- })).filter(header => header.value !== undefined);
718
+ })).filter((header) => header.value !== void 0);
742
719
  return new RawHeaders(headersArray);
743
720
  }
744
- constructor(headers) {
745
- this._headersArray = void 0;
746
- this._headersMap = new _utils.MultiMap();
747
- this._headersArray = headers;
748
- for (const header of headers) this._headersMap.set(header.name.toLowerCase(), header.value);
749
- }
750
721
  get(name) {
751
722
  const values = this.getAll(name);
752
- if (!values || !values.length) return null;
753
- return values.join(name.toLowerCase() === 'set-cookie' ? '\n' : ', ');
723
+ if (!values || !values.length)
724
+ return null;
725
+ return values.join(name.toLowerCase() === "set-cookie" ? "\n" : ", ");
754
726
  }
755
727
  getAll(name) {
756
728
  return [...this._headersMap.get(name.toLowerCase())];
757
729
  }
758
730
  headers() {
759
731
  const result = {};
760
- for (const name of this._headersMap.keys()) result[name] = this.get(name);
732
+ for (const name of this._headersMap.keys())
733
+ result[name] = this.get(name);
761
734
  return result;
762
735
  }
763
736
  headersArray() {
764
737
  return this._headersArray;
765
738
  }
766
739
  }
767
- exports.RawHeaders = RawHeaders;
740
+ // Annotate the CommonJS export names for ESM import in node:
741
+ 0 && (module.exports = {
742
+ RawHeaders,
743
+ Request,
744
+ Response,
745
+ Route,
746
+ RouteHandler,
747
+ WebSocket,
748
+ WebSocketRoute,
749
+ WebSocketRouteHandler,
750
+ validateHeaders
751
+ });