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,76 +1,114 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var crNetworkManager_exports = {};
30
+ __export(crNetworkManager_exports, {
31
+ CRNetworkManager: () => CRNetworkManager
5
32
  });
6
- exports.CRNetworkManager = void 0;
7
- var _helper = require("../helper");
8
- var _eventsHelper = require("../../utils/eventsHelper");
9
- var network = _interopRequireWildcard(require("../network"));
10
- var _utils = require("../../utils");
11
- var _protocolError = require("../protocolError");
12
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
- /**
15
- * Copyright 2017 Google Inc. All rights reserved.
16
- * Modifications copyright (c) Microsoft Corporation.
17
- *
18
- * Licensed under the Apache License, Version 2.0 (the "License");
19
- * you may not use this file except in compliance with the License.
20
- * You may obtain a copy of the License at
21
- *
22
- * http://www.apache.org/licenses/LICENSE-2.0
23
- *
24
- * Unless required by applicable law or agreed to in writing, software
25
- * distributed under the License is distributed on an "AS IS" BASIS,
26
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27
- * See the License for the specific language governing permissions and
28
- * limitations under the License.
29
- */
30
-
33
+ module.exports = __toCommonJS(crNetworkManager_exports);
34
+ var import_utils = require("../../utils");
35
+ var import_eventsHelper = require("../utils/eventsHelper");
36
+ var import_helper = require("../helper");
37
+ var network = __toESM(require("../network"));
38
+ var import_protocolError = require("../protocolError");
31
39
  class CRNetworkManager {
32
40
  constructor(page, serviceWorker) {
33
- this._page = void 0;
34
- this._serviceWorker = void 0;
35
- this._requestIdToRequest = new Map();
36
- this._requestIdToRequestWillBeSentEvent = new Map();
41
+ this._requestIdToRequest = /* @__PURE__ */ new Map();
42
+ this._requestIdToRequestWillBeSentEvent = /* @__PURE__ */ new Map();
37
43
  this._credentials = null;
38
- this._attemptedAuthentications = new Set();
44
+ this._attemptedAuthentications = /* @__PURE__ */ new Set();
39
45
  this._userRequestInterceptionEnabled = false;
40
46
  this._protocolRequestInterceptionEnabled = false;
41
47
  this._offline = false;
42
48
  this._extraHTTPHeaders = [];
43
- this._requestIdToRequestPausedEvent = new Map();
49
+ this._requestIdToRequestPausedEvent = /* @__PURE__ */ new Map();
44
50
  this._responseExtraInfoTracker = new ResponseExtraInfoTracker();
45
- this._sessions = new Map();
51
+ this._sessions = /* @__PURE__ */ new Map();
46
52
  this._page = page;
47
53
  this._serviceWorker = serviceWorker;
48
54
  }
49
55
  async addSession(session, workerFrame, isMain) {
50
- const sessionInfo = {
51
- session,
52
- isMain,
53
- workerFrame,
54
- eventListeners: []
55
- };
56
- sessionInfo.eventListeners = [_eventsHelper.eventsHelper.addEventListener(session, 'Fetch.requestPaused', this._onRequestPaused.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Fetch.authRequired', this._onAuthRequired.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.requestWillBeSent', this._onRequestWillBeSent.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.requestWillBeSentExtraInfo', this._onRequestWillBeSentExtraInfo.bind(this)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.requestServedFromCache', this._onRequestServedFromCache.bind(this)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.responseReceived', this._onResponseReceived.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.responseReceivedExtraInfo', this._onResponseReceivedExtraInfo.bind(this)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.loadingFinished', this._onLoadingFinished.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.loadingFailed', this._onLoadingFailed.bind(this, sessionInfo))];
56
+ const sessionInfo = { session, isMain, workerFrame, eventListeners: [] };
57
+ sessionInfo.eventListeners = [
58
+ import_eventsHelper.eventsHelper.addEventListener(session, "Fetch.requestPaused", this._onRequestPaused.bind(this, sessionInfo)),
59
+ import_eventsHelper.eventsHelper.addEventListener(session, "Fetch.authRequired", this._onAuthRequired.bind(this, sessionInfo)),
60
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.requestWillBeSent", this._onRequestWillBeSent.bind(this, sessionInfo)),
61
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.requestWillBeSentExtraInfo", this._onRequestWillBeSentExtraInfo.bind(this)),
62
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.requestServedFromCache", this._onRequestServedFromCache.bind(this)),
63
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.responseReceived", this._onResponseReceived.bind(this, sessionInfo)),
64
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.responseReceivedExtraInfo", this._onResponseReceivedExtraInfo.bind(this)),
65
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.loadingFinished", this._onLoadingFinished.bind(this, sessionInfo)),
66
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.loadingFailed", this._onLoadingFailed.bind(this, sessionInfo))
67
+ ];
57
68
  if (this._page) {
58
- sessionInfo.eventListeners.push(...[_eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketCreated', e => this._page._frameManager.onWebSocketCreated(e.requestId, e.url)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketWillSendHandshakeRequest', e => this._page._frameManager.onWebSocketRequest(e.requestId)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketHandshakeResponseReceived', e => this._page._frameManager.onWebSocketResponse(e.requestId, e.response.status, e.response.statusText)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketFrameSent', e => e.response.payloadData && this._page._frameManager.onWebSocketFrameSent(e.requestId, e.response.opcode, e.response.payloadData)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketFrameReceived', e => e.response.payloadData && this._page._frameManager.webSocketFrameReceived(e.requestId, e.response.opcode, e.response.payloadData)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketClosed', e => this._page._frameManager.webSocketClosed(e.requestId)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketFrameError', e => this._page._frameManager.webSocketError(e.requestId, e.errorMessage))]);
69
+ sessionInfo.eventListeners.push(...[
70
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketCreated", (e) => this._page._frameManager.onWebSocketCreated(e.requestId, e.url)),
71
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketWillSendHandshakeRequest", (e) => this._page._frameManager.onWebSocketRequest(e.requestId)),
72
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketHandshakeResponseReceived", (e) => this._page._frameManager.onWebSocketResponse(e.requestId, e.response.status, e.response.statusText)),
73
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketFrameSent", (e) => e.response.payloadData && this._page._frameManager.onWebSocketFrameSent(e.requestId, e.response.opcode, e.response.payloadData)),
74
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketFrameReceived", (e) => e.response.payloadData && this._page._frameManager.webSocketFrameReceived(e.requestId, e.response.opcode, e.response.payloadData)),
75
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketClosed", (e) => this._page._frameManager.webSocketClosed(e.requestId)),
76
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketFrameError", (e) => this._page._frameManager.webSocketError(e.requestId, e.errorMessage))
77
+ ]);
59
78
  }
60
79
  this._sessions.set(session, sessionInfo);
61
- await Promise.all([session.send('Network.enable'), this._updateProtocolRequestInterceptionForSession(sessionInfo, true /* initial */), this._setOfflineForSession(sessionInfo, true /* initial */), this._setExtraHTTPHeadersForSession(sessionInfo, true /* initial */)]);
80
+ await Promise.all([
81
+ session.send("Network.enable"),
82
+ this._updateProtocolRequestInterceptionForSession(
83
+ sessionInfo,
84
+ true
85
+ /* initial */
86
+ ),
87
+ this._setOfflineForSession(
88
+ sessionInfo,
89
+ true
90
+ /* initial */
91
+ ),
92
+ this._setExtraHTTPHeadersForSession(
93
+ sessionInfo,
94
+ true
95
+ /* initial */
96
+ )
97
+ ]);
62
98
  }
63
99
  removeSession(session) {
64
100
  const info = this._sessions.get(session);
65
- if (info) _eventsHelper.eventsHelper.removeEventListeners(info.eventListeners);
101
+ if (info)
102
+ import_eventsHelper.eventsHelper.removeEventListeners(info.eventListeners);
66
103
  this._sessions.delete(session);
67
104
  }
68
105
  async _forEachSession(cb) {
69
- await Promise.all([...this._sessions.values()].map(info => {
70
- if (info.isMain) return cb(info);
71
- return cb(info).catch(e => {
72
- // Broadcasting a message to the closed target should be a noop.
73
- if ((0, _protocolError.isSessionClosedError)(e)) return;
106
+ await Promise.all([...this._sessions.values()].map((info) => {
107
+ if (info.isMain)
108
+ return cb(info);
109
+ return cb(info).catch((e) => {
110
+ if ((0, import_protocolError.isSessionClosedError)(e))
111
+ return;
74
112
  throw e;
75
113
  });
76
114
  }));
@@ -80,15 +118,17 @@ class CRNetworkManager {
80
118
  await this._updateProtocolRequestInterception();
81
119
  }
82
120
  async setOffline(offline) {
83
- if (offline === this._offline) return;
121
+ if (offline === this._offline)
122
+ return;
84
123
  this._offline = offline;
85
- await this._forEachSession(info => this._setOfflineForSession(info));
124
+ await this._forEachSession((info) => this._setOfflineForSession(info));
86
125
  }
87
126
  async _setOfflineForSession(info, initial) {
88
- if (initial && !this._offline) return;
89
- // Workers are affected by the owner frame's Network.emulateNetworkConditions.
90
- if (info.workerFrame) return;
91
- await info.session.send('Network.emulateNetworkConditions', {
127
+ if (initial && !this._offline)
128
+ return;
129
+ if (info.workerFrame)
130
+ return;
131
+ await info.session.send("Network.emulateNetworkConditions", {
92
132
  offline: this._offline,
93
133
  // values of 0 remove any active throttling. crbug.com/456324#c9
94
134
  latency: 0,
@@ -102,67 +142,61 @@ class CRNetworkManager {
102
142
  }
103
143
  async _updateProtocolRequestInterception() {
104
144
  const enabled = this._userRequestInterceptionEnabled || !!this._credentials;
105
- if (enabled === this._protocolRequestInterceptionEnabled) return;
145
+ if (enabled === this._protocolRequestInterceptionEnabled)
146
+ return;
106
147
  this._protocolRequestInterceptionEnabled = enabled;
107
- await this._forEachSession(info => this._updateProtocolRequestInterceptionForSession(info));
148
+ await this._forEachSession((info) => this._updateProtocolRequestInterceptionForSession(info));
108
149
  }
109
150
  async _updateProtocolRequestInterceptionForSession(info, initial) {
110
151
  const enabled = this._protocolRequestInterceptionEnabled;
111
- if (initial && !enabled) return;
112
- const cachePromise = info.session.send('Network.setCacheDisabled', {
113
- cacheDisabled: enabled
114
- });
115
- let fetchPromise = Promise.resolve(undefined);
152
+ if (initial && !enabled)
153
+ return;
154
+ const cachePromise = info.session.send("Network.setCacheDisabled", { cacheDisabled: enabled });
155
+ let fetchPromise = Promise.resolve(void 0);
116
156
  if (!info.workerFrame) {
117
- if (enabled) fetchPromise = info.session.send('Fetch.enable', {
118
- handleAuthRequests: true,
119
- patterns: [{
120
- urlPattern: '*',
121
- requestStage: 'Request'
122
- }]
123
- });else fetchPromise = info.session.send('Fetch.disable');
157
+ if (enabled)
158
+ fetchPromise = info.session.send("Fetch.enable", { handleAuthRequests: true, patterns: [{ urlPattern: "*", requestStage: "Request" }] });
159
+ else
160
+ fetchPromise = info.session.send("Fetch.disable");
124
161
  }
125
162
  await Promise.all([cachePromise, fetchPromise]);
126
163
  }
127
164
  async setExtraHTTPHeaders(extraHTTPHeaders) {
128
- if (!this._extraHTTPHeaders.length && !extraHTTPHeaders.length) return;
165
+ if (!this._extraHTTPHeaders.length && !extraHTTPHeaders.length)
166
+ return;
129
167
  this._extraHTTPHeaders = extraHTTPHeaders;
130
- await this._forEachSession(info => this._setExtraHTTPHeadersForSession(info));
168
+ await this._forEachSession((info) => this._setExtraHTTPHeadersForSession(info));
131
169
  }
132
170
  async _setExtraHTTPHeadersForSession(info, initial) {
133
- if (initial && !this._extraHTTPHeaders.length) return;
134
- await info.session.send('Network.setExtraHTTPHeaders', {
135
- headers: (0, _utils.headersArrayToObject)(this._extraHTTPHeaders, false /* lowerCase */)
136
- });
171
+ if (initial && !this._extraHTTPHeaders.length)
172
+ return;
173
+ await info.session.send("Network.setExtraHTTPHeaders", { headers: (0, import_utils.headersArrayToObject)(
174
+ this._extraHTTPHeaders,
175
+ false
176
+ /* lowerCase */
177
+ ) });
137
178
  }
138
179
  async clearCache() {
139
- await this._forEachSession(async info => {
140
- // Sending 'Network.setCacheDisabled' with 'cacheDisabled = true' will clear the MemoryCache.
141
- await info.session.send('Network.setCacheDisabled', {
142
- cacheDisabled: true
143
- });
144
- if (!this._protocolRequestInterceptionEnabled) await info.session.send('Network.setCacheDisabled', {
145
- cacheDisabled: false
146
- });
147
- if (!info.workerFrame) await info.session.send('Network.clearBrowserCache');
180
+ await this._forEachSession(async (info) => {
181
+ await info.session.send("Network.setCacheDisabled", { cacheDisabled: true });
182
+ if (!this._protocolRequestInterceptionEnabled)
183
+ await info.session.send("Network.setCacheDisabled", { cacheDisabled: false });
184
+ if (!info.workerFrame)
185
+ await info.session.send("Network.clearBrowserCache");
148
186
  });
149
187
  }
150
188
  _onRequestWillBeSent(sessionInfo, event) {
151
- // Request interception doesn't happen for data URLs with Network Service.
152
- if (this._protocolRequestInterceptionEnabled && !event.request.url.startsWith('data:')) {
189
+ if (this._protocolRequestInterceptionEnabled && !event.request.url.startsWith("data:")) {
153
190
  const requestId = event.requestId;
154
191
  const requestPausedEvent = this._requestIdToRequestPausedEvent.get(requestId);
155
192
  if (requestPausedEvent) {
156
193
  this._onRequest(sessionInfo, event, requestPausedEvent.sessionInfo, requestPausedEvent.event);
157
194
  this._requestIdToRequestPausedEvent.delete(requestId);
158
195
  } else {
159
- this._requestIdToRequestWillBeSentEvent.set(event.requestId, {
160
- sessionInfo,
161
- event
162
- });
196
+ this._requestIdToRequestWillBeSentEvent.set(event.requestId, { sessionInfo, event });
163
197
  }
164
198
  } else {
165
- this._onRequest(sessionInfo, event, undefined, undefined);
199
+ this._onRequest(sessionInfo, event, void 0, void 0);
166
200
  }
167
201
  }
168
202
  _onRequestServedFromCache(event) {
@@ -172,157 +206,103 @@ class CRNetworkManager {
172
206
  this._responseExtraInfoTracker.requestWillBeSentExtraInfo(event);
173
207
  }
174
208
  _onAuthRequired(sessionInfo, event) {
175
- let response = 'Default';
209
+ let response = "Default";
176
210
  const shouldProvideCredentials = this._shouldProvideCredentials(event.request.url);
177
211
  if (this._attemptedAuthentications.has(event.requestId)) {
178
- response = 'CancelAuth';
212
+ response = "CancelAuth";
179
213
  } else if (shouldProvideCredentials) {
180
- response = 'ProvideCredentials';
214
+ response = "ProvideCredentials";
181
215
  this._attemptedAuthentications.add(event.requestId);
182
216
  }
183
- const {
184
- username,
185
- password
186
- } = shouldProvideCredentials && this._credentials ? this._credentials : {
187
- username: undefined,
188
- password: undefined
189
- };
190
- sessionInfo.session._sendMayFail('Fetch.continueWithAuth', {
217
+ const { username, password } = shouldProvideCredentials && this._credentials ? this._credentials : { username: void 0, password: void 0 };
218
+ sessionInfo.session._sendMayFail("Fetch.continueWithAuth", {
191
219
  requestId: event.requestId,
192
- authChallengeResponse: {
193
- response,
194
- username,
195
- password
196
- }
220
+ authChallengeResponse: { response, username, password }
197
221
  });
198
222
  }
199
223
  _shouldProvideCredentials(url) {
200
- if (!this._credentials) return false;
224
+ if (!this._credentials)
225
+ return false;
201
226
  return !this._credentials.origin || new URL(url).origin.toLowerCase() === this._credentials.origin.toLowerCase();
202
227
  }
203
228
  _onRequestPaused(sessionInfo, event) {
204
229
  if (!event.networkId) {
205
- // Fetch without networkId means that request was not recognized by inspector, and
206
- // it will never receive Network.requestWillBeSent. Continue the request to not affect it.
207
- sessionInfo.session._sendMayFail('Fetch.continueRequest', {
208
- requestId: event.requestId
209
- });
230
+ sessionInfo.session._sendMayFail("Fetch.continueRequest", { requestId: event.requestId });
210
231
  return;
211
232
  }
212
- if (event.request.url.startsWith('data:')) return;
233
+ if (event.request.url.startsWith("data:"))
234
+ return;
213
235
  const requestId = event.networkId;
214
236
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(requestId);
215
237
  if (requestWillBeSentEvent) {
216
238
  this._onRequest(requestWillBeSentEvent.sessionInfo, requestWillBeSentEvent.event, sessionInfo, event);
217
239
  this._requestIdToRequestWillBeSentEvent.delete(requestId);
218
240
  } else {
219
- var _existingRequest$_rou;
220
241
  const existingRequest = this._requestIdToRequest.get(requestId);
221
- const alreadyContinuedParams = existingRequest === null || existingRequest === void 0 || (_existingRequest$_rou = existingRequest._route) === null || _existingRequest$_rou === void 0 ? void 0 : _existingRequest$_rou._alreadyContinuedParams;
242
+ const alreadyContinuedParams = existingRequest?._route?._alreadyContinuedParams;
222
243
  if (alreadyContinuedParams && !event.redirectedRequestId) {
223
- // Sometimes Chromium network stack restarts the request internally.
224
- // For example, when no-cors request hits a "less public address space", it should be resent with cors.
225
- // There are some more examples here: https://source.chromium.org/chromium/chromium/src/+/main:services/network/url_loader.cc;l=1205-1234;drc=d5dd931e0ad3d9ffe74888ec62a3cc106efd7ea6
226
- // There are probably even more cases deep inside the network stack.
227
- //
228
- // Anyway, in this case, continue the request in the same way as before, and it should go through.
229
- //
230
- // Note: make sure not to prematurely continue the redirect, which shares the
231
- // `networkId` between the original request and the redirect.
232
- sessionInfo.session._sendMayFail('Fetch.continueRequest', {
244
+ sessionInfo.session._sendMayFail("Fetch.continueRequest", {
233
245
  ...alreadyContinuedParams,
234
246
  requestId: event.requestId
235
247
  });
236
248
  return;
237
249
  }
238
- this._requestIdToRequestPausedEvent.set(requestId, {
239
- sessionInfo,
240
- event
241
- });
250
+ this._requestIdToRequestPausedEvent.set(requestId, { sessionInfo, event });
242
251
  }
243
252
  }
244
253
  _onRequest(requestWillBeSentSessionInfo, requestWillBeSentEvent, requestPausedSessionInfo, requestPausedEvent) {
245
- var _this$_page, _this$_page2, _this$_page3;
246
- if (requestWillBeSentEvent.request.url.startsWith('data:')) return;
254
+ if (requestWillBeSentEvent.request.url.startsWith("data:"))
255
+ return;
247
256
  let redirectedFrom = null;
248
257
  if (requestWillBeSentEvent.redirectResponse) {
249
- const request = this._requestIdToRequest.get(requestWillBeSentEvent.requestId);
250
- // If we connect late to the target, we could have missed the requestWillBeSent event.
251
- if (request) {
252
- this._handleRequestRedirect(request, requestWillBeSentEvent.redirectResponse, requestWillBeSentEvent.timestamp, requestWillBeSentEvent.redirectHasExtraInfo);
253
- redirectedFrom = request;
258
+ const request2 = this._requestIdToRequest.get(requestWillBeSentEvent.requestId);
259
+ if (request2) {
260
+ this._handleRequestRedirect(request2, requestWillBeSentEvent.redirectResponse, requestWillBeSentEvent.timestamp, requestWillBeSentEvent.redirectHasExtraInfo);
261
+ redirectedFrom = request2;
254
262
  }
255
263
  }
256
- let frame = requestWillBeSentEvent.frameId ? (_this$_page = this._page) === null || _this$_page === void 0 ? void 0 : _this$_page._frameManager.frame(requestWillBeSentEvent.frameId) : requestWillBeSentSessionInfo.workerFrame;
257
- // Requests from workers lack frameId, because we receive Network.requestWillBeSent
258
- // on the worker target. However, we receive Fetch.requestPaused on the page target,
259
- // and lack workerFrame there. Luckily, Fetch.requestPaused provides a frameId.
260
- if (!frame && this._page && requestPausedEvent && requestPausedEvent.frameId) frame = this._page._frameManager.frame(requestPausedEvent.frameId);
261
-
262
- // Check if it's main resource request interception (targetId === main frame id).
263
- if (!frame && this._page && requestWillBeSentEvent.frameId === ((_this$_page2 = this._page) === null || _this$_page2 === void 0 ? void 0 : _this$_page2._delegate)._targetId) {
264
- // Main resource request for the page is being intercepted so the Frame is not created
265
- // yet. Precreate it here for the purposes of request interception. It will be updated
266
- // later as soon as the request continues and we receive frame tree from the page.
264
+ let frame = requestWillBeSentEvent.frameId ? this._page?._frameManager.frame(requestWillBeSentEvent.frameId) : requestWillBeSentSessionInfo.workerFrame;
265
+ if (!frame && this._page && requestPausedEvent && requestPausedEvent.frameId)
266
+ frame = this._page._frameManager.frame(requestPausedEvent.frameId);
267
+ if (!frame && this._page && requestWillBeSentEvent.frameId === (this._page?._delegate)._targetId) {
267
268
  frame = this._page._frameManager.frameAttached(requestWillBeSentEvent.frameId, null);
268
269
  }
269
-
270
- // CORS options preflight request is generated by the network stack. If interception is enabled,
271
- // we accept all CORS options, assuming that this was intended when setting route.
272
- //
273
- // Note: it would be better to match the URL against interception patterns.
274
- const isInterceptedOptionsPreflight = !!requestPausedEvent && requestPausedEvent.request.method === 'OPTIONS' && requestWillBeSentEvent.initiator.type === 'preflight';
270
+ const isInterceptedOptionsPreflight = !!requestPausedEvent && requestPausedEvent.request.method === "OPTIONS" && requestWillBeSentEvent.initiator.type === "preflight";
275
271
  if (isInterceptedOptionsPreflight && (this._page || this._serviceWorker).needsRequestInterception()) {
276
272
  const requestHeaders = requestPausedEvent.request.headers;
277
- const responseHeaders = [{
278
- name: 'Access-Control-Allow-Origin',
279
- value: requestHeaders['Origin'] || '*'
280
- }, {
281
- name: 'Access-Control-Allow-Methods',
282
- value: requestHeaders['Access-Control-Request-Method'] || 'GET, POST, OPTIONS, DELETE'
283
- }, {
284
- name: 'Access-Control-Allow-Credentials',
285
- value: 'true'
286
- }];
287
- if (requestHeaders['Access-Control-Request-Headers']) responseHeaders.push({
288
- name: 'Access-Control-Allow-Headers',
289
- value: requestHeaders['Access-Control-Request-Headers']
290
- });
291
- requestPausedSessionInfo.session._sendMayFail('Fetch.fulfillRequest', {
273
+ const responseHeaders = [
274
+ { name: "Access-Control-Allow-Origin", value: requestHeaders["Origin"] || "*" },
275
+ { name: "Access-Control-Allow-Methods", value: requestHeaders["Access-Control-Request-Method"] || "GET, POST, OPTIONS, DELETE" },
276
+ { name: "Access-Control-Allow-Credentials", value: "true" }
277
+ ];
278
+ if (requestHeaders["Access-Control-Request-Headers"])
279
+ responseHeaders.push({ name: "Access-Control-Allow-Headers", value: requestHeaders["Access-Control-Request-Headers"] });
280
+ requestPausedSessionInfo.session._sendMayFail("Fetch.fulfillRequest", {
292
281
  requestId: requestPausedEvent.requestId,
293
282
  responseCode: 204,
294
283
  responsePhrase: network.statusText(204),
295
284
  responseHeaders,
296
- body: ''
285
+ body: ""
297
286
  });
298
287
  return;
299
288
  }
300
-
301
- // Non-service-worker requests MUST have a frame—if they don't, we pretend there was no request
302
289
  if (!frame && !this._serviceWorker) {
303
- if (requestPausedEvent) requestPausedSessionInfo.session._sendMayFail('Fetch.continueRequest', {
304
- requestId: requestPausedEvent.requestId
305
- });
290
+ if (requestPausedEvent)
291
+ requestPausedSessionInfo.session._sendMayFail("Fetch.continueRequest", { requestId: requestPausedEvent.requestId });
306
292
  return;
307
293
  }
308
294
  let route = null;
309
295
  let headersOverride;
310
296
  if (requestPausedEvent) {
311
- // We do not support intercepting redirects.
312
297
  if (redirectedFrom || !this._userRequestInterceptionEnabled && this._protocolRequestInterceptionEnabled) {
313
- var _redirectedFrom;
314
- // Chromium does not preserve header overrides between redirects, so we have to do it ourselves.
315
- headersOverride = (_redirectedFrom = redirectedFrom) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._originalRequestRoute) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._alreadyContinuedParams) === null || _redirectedFrom === void 0 ? void 0 : _redirectedFrom.headers;
316
- requestPausedSessionInfo.session._sendMayFail('Fetch.continueRequest', {
317
- requestId: requestPausedEvent.requestId,
318
- headers: headersOverride
319
- });
298
+ headersOverride = redirectedFrom?._originalRequestRoute?._alreadyContinuedParams?.headers;
299
+ requestPausedSessionInfo.session._sendMayFail("Fetch.continueRequest", { requestId: requestPausedEvent.requestId, headers: headersOverride });
320
300
  } else {
321
301
  route = new RouteImpl(requestPausedSessionInfo.session, requestPausedEvent.requestId);
322
302
  }
323
303
  }
324
- const isNavigationRequest = requestWillBeSentEvent.requestId === requestWillBeSentEvent.loaderId && requestWillBeSentEvent.type === 'Document';
325
- const documentId = isNavigationRequest ? requestWillBeSentEvent.loaderId : undefined;
304
+ const isNavigationRequest = requestWillBeSentEvent.requestId === requestWillBeSentEvent.loaderId && requestWillBeSentEvent.type === "Document";
305
+ const documentId = isNavigationRequest ? requestWillBeSentEvent.loaderId : void 0;
326
306
  const request = new InterceptableRequest({
327
307
  session: requestWillBeSentSessionInfo.session,
328
308
  context: (this._page || this._serviceWorker)._browserContext,
@@ -337,47 +317,27 @@ class CRNetworkManager {
337
317
  });
338
318
  this._requestIdToRequest.set(requestWillBeSentEvent.requestId, request);
339
319
  if (route) {
340
- // We may not receive extra info when intercepting the request.
341
- // Use the headers from the Fetch.requestPausedPayload and release the allHeaders()
342
- // right away, so that client can call it from the route handler.
343
- request.request.setRawRequestHeaders((0, _utils.headersObjectToArray)(requestPausedEvent.request.headers, '\n'));
320
+ request.request.setRawRequestHeaders((0, import_utils.headersObjectToArray)(requestPausedEvent.request.headers, "\n"));
344
321
  }
345
- (((_this$_page3 = this._page) === null || _this$_page3 === void 0 ? void 0 : _this$_page3._frameManager) || this._serviceWorker).requestStarted(request.request, route || undefined);
322
+ (this._page?._frameManager || this._serviceWorker).requestStarted(request.request, route || void 0);
346
323
  }
347
324
  _createResponse(request, responsePayload, hasExtraInfo) {
348
- var _responsePayload$secu, _responsePayload$secu2, _responsePayload$secu3, _responsePayload$secu4, _responsePayload$secu5;
349
325
  const getResponseBody = async () => {
350
- var _request$_route;
351
- const contentLengthHeader = Object.entries(responsePayload.headers).find(header => header[0].toLowerCase() === 'content-length');
352
- const expectedLength = contentLengthHeader ? +contentLengthHeader[1] : undefined;
326
+ const contentLengthHeader = Object.entries(responsePayload.headers).find((header) => header[0].toLowerCase() === "content-length");
327
+ const expectedLength = contentLengthHeader ? +contentLengthHeader[1] : void 0;
353
328
  const session = request.session;
354
- const response = await session.send('Network.getResponseBody', {
355
- requestId: request._requestId
356
- });
357
- if (response.body || !expectedLength) return Buffer.from(response.body, response.base64Encoded ? 'base64' : 'utf8');
358
-
359
- // Make sure no network requests sent while reading the body for fulfilled requests.
360
- if ((_request$_route = request._route) !== null && _request$_route !== void 0 && _request$_route._fulfilled) return Buffer.from('');
361
-
362
- // For <link prefetch we are going to receive empty body with non-empty content-length expectation. Reach out for the actual content.
363
- const resource = await session.send('Network.loadNetworkResource', {
364
- url: request.request.url(),
365
- frameId: this._serviceWorker ? undefined : request.request.frame()._id,
366
- options: {
367
- disableCache: false,
368
- includeCredentials: true
369
- }
370
- });
329
+ const response2 = await session.send("Network.getResponseBody", { requestId: request._requestId });
330
+ if (response2.body || !expectedLength)
331
+ return Buffer.from(response2.body, response2.base64Encoded ? "base64" : "utf8");
332
+ if (request._route?._fulfilled)
333
+ return Buffer.from("");
334
+ const resource = await session.send("Network.loadNetworkResource", { url: request.request.url(), frameId: this._serviceWorker ? void 0 : request.request.frame()._id, options: { disableCache: false, includeCredentials: true } });
371
335
  const chunks = [];
372
336
  while (resource.resource.stream) {
373
- const chunk = await session.send('IO.read', {
374
- handle: resource.resource.stream
375
- });
376
- chunks.push(Buffer.from(chunk.data, chunk.base64Encoded ? 'base64' : 'utf-8'));
337
+ const chunk = await session.send("IO.read", { handle: resource.resource.stream });
338
+ chunks.push(Buffer.from(chunk.data, chunk.base64Encoded ? "base64" : "utf-8"));
377
339
  if (chunk.eof) {
378
- await session.send('IO.close', {
379
- handle: resource.resource.stream
380
- });
340
+ await session.send("IO.close", { handle: resource.resource.stream });
381
341
  break;
382
342
  }
383
343
  }
@@ -387,7 +347,7 @@ class CRNetworkManager {
387
347
  let timing;
388
348
  if (timingPayload && !this._responseExtraInfoTracker.servedFromCache(request._requestId)) {
389
349
  timing = {
390
- startTime: (timingPayload.requestTime - request._timestamp + request._wallTime) * 1000,
350
+ startTime: (timingPayload.requestTime - request._timestamp + request._wallTime) * 1e3,
391
351
  domainLookupStart: timingPayload.dnsStart,
392
352
  domainLookupEnd: timingPayload.dnsEnd,
393
353
  connectStart: timingPayload.connectStart,
@@ -398,7 +358,7 @@ class CRNetworkManager {
398
358
  };
399
359
  } else {
400
360
  timing = {
401
- startTime: request._wallTime * 1000,
361
+ startTime: request._wallTime * 1e3,
402
362
  domainLookupStart: -1,
403
363
  domainLookupEnd: -1,
404
364
  connectStart: -1,
@@ -408,8 +368,8 @@ class CRNetworkManager {
408
368
  responseStart: -1
409
369
  };
410
370
  }
411
- const response = new network.Response(request.request, responsePayload.status, responsePayload.statusText, (0, _utils.headersObjectToArray)(responsePayload.headers), timing, getResponseBody, !!responsePayload.fromServiceWorker, responsePayload.protocol);
412
- if (responsePayload !== null && responsePayload !== void 0 && responsePayload.remoteIPAddress && typeof (responsePayload === null || responsePayload === void 0 ? void 0 : responsePayload.remotePort) === 'number') {
371
+ const response = new network.Response(request.request, responsePayload.status, responsePayload.statusText, (0, import_utils.headersObjectToArray)(responsePayload.headers), timing, getResponseBody, !!responsePayload.fromServiceWorker, responsePayload.protocol);
372
+ if (responsePayload?.remoteIPAddress && typeof responsePayload?.remotePort === "number") {
413
373
  response._serverAddrFinished({
414
374
  ipAddress: responsePayload.remoteIPAddress,
415
375
  port: responsePayload.remotePort
@@ -418,137 +378,96 @@ class CRNetworkManager {
418
378
  response._serverAddrFinished();
419
379
  }
420
380
  response._securityDetailsFinished({
421
- protocol: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu = responsePayload.securityDetails) === null || _responsePayload$secu === void 0 ? void 0 : _responsePayload$secu.protocol,
422
- subjectName: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu2 = responsePayload.securityDetails) === null || _responsePayload$secu2 === void 0 ? void 0 : _responsePayload$secu2.subjectName,
423
- issuer: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu3 = responsePayload.securityDetails) === null || _responsePayload$secu3 === void 0 ? void 0 : _responsePayload$secu3.issuer,
424
- validFrom: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu4 = responsePayload.securityDetails) === null || _responsePayload$secu4 === void 0 ? void 0 : _responsePayload$secu4.validFrom,
425
- validTo: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu5 = responsePayload.securityDetails) === null || _responsePayload$secu5 === void 0 ? void 0 : _responsePayload$secu5.validTo
381
+ protocol: responsePayload?.securityDetails?.protocol,
382
+ subjectName: responsePayload?.securityDetails?.subjectName,
383
+ issuer: responsePayload?.securityDetails?.issuer,
384
+ validFrom: responsePayload?.securityDetails?.validFrom,
385
+ validTo: responsePayload?.securityDetails?.validTo
426
386
  });
427
387
  this._responseExtraInfoTracker.processResponse(request._requestId, response, hasExtraInfo);
428
388
  return response;
429
389
  }
430
390
  _deleteRequest(request) {
431
391
  this._requestIdToRequest.delete(request._requestId);
432
- if (request._interceptionId) this._attemptedAuthentications.delete(request._interceptionId);
392
+ if (request._interceptionId)
393
+ this._attemptedAuthentications.delete(request._interceptionId);
433
394
  }
434
395
  _handleRequestRedirect(request, responsePayload, timestamp, hasExtraInfo) {
435
- var _this$_page4, _this$_page5;
436
396
  const response = this._createResponse(request, responsePayload, hasExtraInfo);
437
397
  response.setTransferSize(null);
438
398
  response.setEncodedBodySize(null);
439
- response._requestFinished((timestamp - request._timestamp) * 1000);
399
+ response._requestFinished((timestamp - request._timestamp) * 1e3);
440
400
  this._deleteRequest(request);
441
- (((_this$_page4 = this._page) === null || _this$_page4 === void 0 ? void 0 : _this$_page4._frameManager) || this._serviceWorker).requestReceivedResponse(response);
442
- (((_this$_page5 = this._page) === null || _this$_page5 === void 0 ? void 0 : _this$_page5._frameManager) || this._serviceWorker).reportRequestFinished(request.request, response);
401
+ (this._page?._frameManager || this._serviceWorker).requestReceivedResponse(response);
402
+ (this._page?._frameManager || this._serviceWorker).reportRequestFinished(request.request, response);
443
403
  }
444
404
  _onResponseReceivedExtraInfo(event) {
445
405
  this._responseExtraInfoTracker.responseReceivedExtraInfo(event);
446
406
  }
447
407
  _onResponseReceived(sessionInfo, event) {
448
- var _this$_page6;
449
408
  let request = this._requestIdToRequest.get(event.requestId);
450
- // For frame-level Requests that are handled by a Service Worker's fetch handler, we'll never get a requestPaused event, so we need to
451
- // manually create the request. In an ideal world, crNetworkManager would be able to know this on Network.requestWillBeSent, but there
452
- // is not enough metadata there.
453
409
  if (!request && event.response.fromServiceWorker) {
454
410
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(event.requestId);
455
411
  if (requestWillBeSentEvent) {
456
412
  this._requestIdToRequestWillBeSentEvent.delete(event.requestId);
457
- this._onRequest(sessionInfo, requestWillBeSentEvent.event, undefined, undefined);
413
+ this._onRequest(sessionInfo, requestWillBeSentEvent.event, void 0, void 0);
458
414
  request = this._requestIdToRequest.get(event.requestId);
459
415
  }
460
416
  }
461
- // FileUpload sends a response without a matching request.
462
- if (!request) return;
417
+ if (!request)
418
+ return;
463
419
  const response = this._createResponse(request, event.response, event.hasExtraInfo);
464
- (((_this$_page6 = this._page) === null || _this$_page6 === void 0 ? void 0 : _this$_page6._frameManager) || this._serviceWorker).requestReceivedResponse(response);
420
+ (this._page?._frameManager || this._serviceWorker).requestReceivedResponse(response);
465
421
  }
466
422
  _onLoadingFinished(sessionInfo, event) {
467
- var _this$_page7;
468
423
  this._responseExtraInfoTracker.loadingFinished(event);
469
424
  const request = this._requestIdToRequest.get(event.requestId);
470
- // For certain requestIds we never receive requestWillBeSent event.
471
- // @see https://crbug.com/750469
472
- if (!request) return;
425
+ if (!request)
426
+ return;
473
427
  this._maybeUpdateOOPIFMainRequest(sessionInfo, request);
474
-
475
- // Under certain conditions we never get the Network.responseReceived
476
- // event from protocol. @see https://crbug.com/883475
477
428
  const response = request.request._existingResponse();
478
429
  if (response) {
479
430
  response.setTransferSize(event.encodedDataLength);
480
- response.responseHeadersSize().then(size => response.setEncodedBodySize(event.encodedDataLength - size));
481
- response._requestFinished(_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
431
+ response.responseHeadersSize().then((size) => response.setEncodedBodySize(event.encodedDataLength - size));
432
+ response._requestFinished(import_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
482
433
  }
483
434
  this._deleteRequest(request);
484
- (((_this$_page7 = this._page) === null || _this$_page7 === void 0 ? void 0 : _this$_page7._frameManager) || this._serviceWorker).reportRequestFinished(request.request, response);
435
+ (this._page?._frameManager || this._serviceWorker).reportRequestFinished(request.request, response);
485
436
  }
486
437
  _onLoadingFailed(sessionInfo, event) {
487
- var _this$_page8;
488
438
  this._responseExtraInfoTracker.loadingFailed(event);
489
439
  let request = this._requestIdToRequest.get(event.requestId);
490
440
  if (!request) {
491
441
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(event.requestId);
492
442
  if (requestWillBeSentEvent) {
493
- // This is a case where request has failed before we had a chance to intercept it.
494
- // We stop waiting for Fetch.requestPaused (it might never come), and dispatch request event
495
- // right away, followed by requestfailed event.
496
443
  this._requestIdToRequestWillBeSentEvent.delete(event.requestId);
497
- this._onRequest(sessionInfo, requestWillBeSentEvent.event, undefined, undefined);
444
+ this._onRequest(sessionInfo, requestWillBeSentEvent.event, void 0, void 0);
498
445
  request = this._requestIdToRequest.get(event.requestId);
499
446
  }
500
447
  }
501
-
502
- // For certain requestIds we never receive requestWillBeSent event.
503
- // @see https://crbug.com/750469
504
- if (!request) return;
448
+ if (!request)
449
+ return;
505
450
  this._maybeUpdateOOPIFMainRequest(sessionInfo, request);
506
451
  const response = request.request._existingResponse();
507
452
  if (response) {
508
453
  response.setTransferSize(null);
509
454
  response.setEncodedBodySize(null);
510
- response._requestFinished(_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
455
+ response._requestFinished(import_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
511
456
  } else {
512
- // Loading failed before response has arrived - there will be no extra info events.
513
457
  request.request.setRawRequestHeaders(null);
514
458
  }
515
459
  this._deleteRequest(request);
516
- request.request._setFailureText(event.errorText || event.blockedReason || '');
517
- (((_this$_page8 = this._page) === null || _this$_page8 === void 0 ? void 0 : _this$_page8._frameManager) || this._serviceWorker).requestFailed(request.request, !!event.canceled);
460
+ request.request._setFailureText(event.errorText || event.blockedReason || "");
461
+ (this._page?._frameManager || this._serviceWorker).requestFailed(request.request, !!event.canceled);
518
462
  }
519
463
  _maybeUpdateOOPIFMainRequest(sessionInfo, request) {
520
- // OOPIF has a main request that starts in the parent session but finishes in the child session.
521
- // We check for the main request by matching loaderId and requestId, and if it now belongs to
522
- // a child session, migrate it there.
523
- if (request.session !== sessionInfo.session && !sessionInfo.isMain && request._documentId === request._requestId) request.session = sessionInfo.session;
464
+ if (request.session !== sessionInfo.session && !sessionInfo.isMain && request._documentId === request._requestId)
465
+ request.session = sessionInfo.session;
524
466
  }
525
467
  }
526
- exports.CRNetworkManager = CRNetworkManager;
527
468
  class InterceptableRequest {
528
469
  constructor(options) {
529
- this.request = void 0;
530
- this._requestId = void 0;
531
- this._interceptionId = void 0;
532
- this._documentId = void 0;
533
- this._timestamp = void 0;
534
- this._wallTime = void 0;
535
- this._route = void 0;
536
- // Only first request in the chain can be intercepted, so this will
537
- // store the first and only Route in the chain (if any).
538
- this._originalRequestRoute = void 0;
539
- this.session = void 0;
540
- const {
541
- session,
542
- context,
543
- frame,
544
- documentId,
545
- route,
546
- requestWillBeSentEvent,
547
- requestPausedEvent,
548
- redirectedFrom,
549
- serviceWorker,
550
- headersOverride
551
- } = options;
470
+ const { session, context, frame, documentId, route, requestWillBeSentEvent, requestPausedEvent, redirectedFrom, serviceWorker, headersOverride } = options;
552
471
  this.session = session;
553
472
  this._timestamp = requestWillBeSentEvent.timestamp;
554
473
  this._wallTime = requestWillBeSentEvent.wallTime;
@@ -556,25 +475,23 @@ class InterceptableRequest {
556
475
  this._interceptionId = requestPausedEvent && requestPausedEvent.requestId;
557
476
  this._documentId = documentId;
558
477
  this._route = route;
559
- this._originalRequestRoute = route !== null && route !== void 0 ? route : redirectedFrom === null || redirectedFrom === void 0 ? void 0 : redirectedFrom._originalRequestRoute;
478
+ this._originalRequestRoute = route ?? redirectedFrom?._originalRequestRoute;
560
479
  const {
561
480
  headers,
562
481
  method,
563
482
  url,
564
483
  postDataEntries = null
565
484
  } = requestPausedEvent ? requestPausedEvent.request : requestWillBeSentEvent.request;
566
- const type = (requestWillBeSentEvent.type || '').toLowerCase();
485
+ const type = (requestWillBeSentEvent.type || "").toLowerCase();
567
486
  let postDataBuffer = null;
568
- const entries = postDataEntries === null || postDataEntries === void 0 ? void 0 : postDataEntries.filter(entry => entry.bytes);
569
- if (entries && entries.length) postDataBuffer = Buffer.concat(entries.map(entry => Buffer.from(entry.bytes, 'base64')));
570
- this.request = new network.Request(context, frame, serviceWorker, (redirectedFrom === null || redirectedFrom === void 0 ? void 0 : redirectedFrom.request) || null, documentId, url, type, method, postDataBuffer, headersOverride || (0, _utils.headersObjectToArray)(headers));
487
+ const entries = postDataEntries?.filter((entry) => entry.bytes);
488
+ if (entries && entries.length)
489
+ postDataBuffer = Buffer.concat(entries.map((entry) => Buffer.from(entry.bytes, "base64")));
490
+ this.request = new network.Request(context, frame, serviceWorker, redirectedFrom?.request || null, documentId, url, type, method, postDataBuffer, headersOverride || (0, import_utils.headersObjectToArray)(headers));
571
491
  }
572
492
  }
573
493
  class RouteImpl {
574
494
  constructor(session, interceptionId) {
575
- this._session = void 0;
576
- this._interceptionId = void 0;
577
- this._alreadyContinuedParams = void 0;
578
495
  this._fulfilled = false;
579
496
  this._session = session;
580
497
  this._interceptionId = interceptionId;
@@ -585,18 +502,18 @@ class RouteImpl {
585
502
  url: overrides.url,
586
503
  headers: overrides.headers,
587
504
  method: overrides.method,
588
- postData: overrides.postData ? overrides.postData.toString('base64') : undefined
505
+ postData: overrides.postData ? overrides.postData.toString("base64") : void 0
589
506
  };
590
507
  await catchDisallowedErrors(async () => {
591
- await this._session.send('Fetch.continueRequest', this._alreadyContinuedParams);
508
+ await this._session.send("Fetch.continueRequest", this._alreadyContinuedParams);
592
509
  });
593
510
  }
594
511
  async fulfill(response) {
595
512
  this._fulfilled = true;
596
- const body = response.isBase64 ? response.body : Buffer.from(response.body).toString('base64');
513
+ const body = response.isBase64 ? response.body : Buffer.from(response.body).toString("base64");
597
514
  const responseHeaders = splitSetCookieHeader(response.headers);
598
515
  await catchDisallowedErrors(async () => {
599
- await this._session.send('Fetch.fulfillRequest', {
516
+ await this._session.send("Fetch.fulfillRequest", {
600
517
  requestId: this._interceptionId,
601
518
  responseCode: response.status,
602
519
  responsePhrase: network.statusText(response.status),
@@ -605,75 +522,58 @@ class RouteImpl {
605
522
  });
606
523
  });
607
524
  }
608
- async abort(errorCode = 'failed') {
525
+ async abort(errorCode = "failed") {
609
526
  const errorReason = errorReasons[errorCode];
610
- (0, _utils.assert)(errorReason, 'Unknown error code: ' + errorCode);
527
+ (0, import_utils.assert)(errorReason, "Unknown error code: " + errorCode);
611
528
  await catchDisallowedErrors(async () => {
612
- await this._session.send('Fetch.failRequest', {
529
+ await this._session.send("Fetch.failRequest", {
613
530
  requestId: this._interceptionId,
614
531
  errorReason
615
532
  });
616
533
  });
617
534
  }
618
535
  }
619
-
620
- // In certain cases, protocol will return error if the request was already canceled
621
- // or the page was closed. We should tolerate these errors but propagate other.
622
536
  async function catchDisallowedErrors(callback) {
623
537
  try {
624
538
  return await callback();
625
539
  } catch (e) {
626
- if ((0, _protocolError.isProtocolError)(e) && e.message.includes('Invalid http status code or phrase')) throw e;
540
+ if ((0, import_protocolError.isProtocolError)(e) && e.message.includes("Invalid http status code or phrase"))
541
+ throw e;
542
+ if ((0, import_protocolError.isProtocolError)(e) && e.message.includes("Unsafe header"))
543
+ throw e;
627
544
  }
628
545
  }
629
546
  function splitSetCookieHeader(headers) {
630
- const index = headers.findIndex(({
631
- name
632
- }) => name.toLowerCase() === 'set-cookie');
633
- if (index === -1) return headers;
547
+ const index = headers.findIndex(({ name }) => name.toLowerCase() === "set-cookie");
548
+ if (index === -1)
549
+ return headers;
634
550
  const header = headers[index];
635
- const values = header.value.split('\n');
636
- if (values.length === 1) return headers;
551
+ const values = header.value.split("\n");
552
+ if (values.length === 1)
553
+ return headers;
637
554
  const result = headers.slice();
638
- result.splice(index, 1, ...values.map(value => ({
639
- name: header.name,
640
- value
641
- })));
555
+ result.splice(index, 1, ...values.map((value) => ({ name: header.name, value })));
642
556
  return result;
643
557
  }
644
558
  const errorReasons = {
645
- 'aborted': 'Aborted',
646
- 'accessdenied': 'AccessDenied',
647
- 'addressunreachable': 'AddressUnreachable',
648
- 'blockedbyclient': 'BlockedByClient',
649
- 'blockedbyresponse': 'BlockedByResponse',
650
- 'connectionaborted': 'ConnectionAborted',
651
- 'connectionclosed': 'ConnectionClosed',
652
- 'connectionfailed': 'ConnectionFailed',
653
- 'connectionrefused': 'ConnectionRefused',
654
- 'connectionreset': 'ConnectionReset',
655
- 'internetdisconnected': 'InternetDisconnected',
656
- 'namenotresolved': 'NameNotResolved',
657
- 'timedout': 'TimedOut',
658
- 'failed': 'Failed'
559
+ "aborted": "Aborted",
560
+ "accessdenied": "AccessDenied",
561
+ "addressunreachable": "AddressUnreachable",
562
+ "blockedbyclient": "BlockedByClient",
563
+ "blockedbyresponse": "BlockedByResponse",
564
+ "connectionaborted": "ConnectionAborted",
565
+ "connectionclosed": "ConnectionClosed",
566
+ "connectionfailed": "ConnectionFailed",
567
+ "connectionrefused": "ConnectionRefused",
568
+ "connectionreset": "ConnectionReset",
569
+ "internetdisconnected": "InternetDisconnected",
570
+ "namenotresolved": "NameNotResolved",
571
+ "timedout": "TimedOut",
572
+ "failed": "Failed"
659
573
  };
660
- // This class aligns responses with response headers from extra info:
661
- // - Network.requestWillBeSent, Network.responseReceived, Network.loadingFinished/loadingFailed are
662
- // dispatched using one channel.
663
- // - Network.requestWillBeSentExtraInfo and Network.responseReceivedExtraInfo are dispatched on
664
- // another channel. Those channels are not associated, so events come in random order.
665
- //
666
- // This class will associate responses with the new headers. These extra info headers will become
667
- // available to client reliably upon requestfinished event only. It consumes CDP
668
- // signals on one end and processResponse(network.Response) signals on the other hands. It then makes
669
- // sure that responses have all the extra headers in place by the time request finishes.
670
- //
671
- // The shape of the instrumentation API is deliberately following the CDP, so that it
672
- // is clear what is called when and what this means to the tracker without extra
673
- // documentation.
674
574
  class ResponseExtraInfoTracker {
675
575
  constructor() {
676
- this._requests = new Map();
576
+ this._requests = /* @__PURE__ */ new Map();
677
577
  }
678
578
  requestWillBeSentExtraInfo(event) {
679
579
  const info = this._getOrCreateEntry(event.requestId);
@@ -687,7 +587,7 @@ class ResponseExtraInfoTracker {
687
587
  }
688
588
  servedFromCache(requestId) {
689
589
  const info = this._requests.get(requestId);
690
- return !!(info !== null && info !== void 0 && info.servedFromCache);
590
+ return !!info?.servedFromCache;
691
591
  }
692
592
  responseReceivedExtraInfo(event) {
693
593
  const info = this._getOrCreateEntry(event.requestId);
@@ -696,12 +596,8 @@ class ResponseExtraInfoTracker {
696
596
  this._checkFinished(info);
697
597
  }
698
598
  processResponse(requestId, response, hasExtraInfo) {
699
- var _info;
700
599
  let info = this._requests.get(requestId);
701
- // Cached responses have erroneous "hasExtraInfo" flag.
702
- // https://bugs.chromium.org/p/chromium/issues/detail?id=1340398
703
- if (!hasExtraInfo || (_info = info) !== null && _info !== void 0 && _info.servedFromCache) {
704
- // Use "provisional" headers as "raw" ones.
600
+ if (!hasExtraInfo || info?.servedFromCache) {
705
601
  response.request().setRawRequestHeaders(null);
706
602
  response.setResponseHeadersSize(null);
707
603
  response.setRawResponseHeaders(null);
@@ -713,13 +609,15 @@ class ResponseExtraInfoTracker {
713
609
  }
714
610
  loadingFinished(event) {
715
611
  const info = this._requests.get(event.requestId);
716
- if (!info) return;
612
+ if (!info)
613
+ return;
717
614
  info.loadingFinished = event;
718
615
  this._checkFinished(info);
719
616
  }
720
617
  loadingFailed(event) {
721
618
  const info = this._requests.get(event.requestId);
722
- if (!info) return;
619
+ if (!info)
620
+ return;
723
621
  info.loadingFailed = event;
724
622
  this._checkFinished(info);
725
623
  }
@@ -727,7 +625,7 @@ class ResponseExtraInfoTracker {
727
625
  let info = this._requests.get(requestId);
728
626
  if (!info) {
729
627
  info = {
730
- requestId: requestId,
628
+ requestId,
731
629
  requestWillBeSentExtraInfo: [],
732
630
  responseReceivedExtraInfo: [],
733
631
  responses: []
@@ -740,28 +638,29 @@ class ResponseExtraInfoTracker {
740
638
  const response = info.responses[index];
741
639
  const requestExtraInfo = info.requestWillBeSentExtraInfo[index];
742
640
  if (response && requestExtraInfo) {
743
- response.request().setRawRequestHeaders((0, _utils.headersObjectToArray)(requestExtraInfo.headers, '\n'));
744
- info.requestWillBeSentExtraInfo[index] = undefined;
641
+ response.request().setRawRequestHeaders((0, import_utils.headersObjectToArray)(requestExtraInfo.headers, "\n"));
642
+ info.requestWillBeSentExtraInfo[index] = void 0;
745
643
  }
746
644
  const responseExtraInfo = info.responseReceivedExtraInfo[index];
747
645
  if (response && responseExtraInfo) {
748
- var _responseExtraInfo$he;
749
- response.setResponseHeadersSize(((_responseExtraInfo$he = responseExtraInfo.headersText) === null || _responseExtraInfo$he === void 0 ? void 0 : _responseExtraInfo$he.length) || 0);
750
- response.setRawResponseHeaders((0, _utils.headersObjectToArray)(responseExtraInfo.headers, '\n'));
751
- info.responseReceivedExtraInfo[index] = undefined;
646
+ response.setResponseHeadersSize(responseExtraInfo.headersText?.length || 0);
647
+ response.setRawResponseHeaders((0, import_utils.headersObjectToArray)(responseExtraInfo.headers, "\n"));
648
+ info.responseReceivedExtraInfo[index] = void 0;
752
649
  }
753
650
  }
754
651
  _checkFinished(info) {
755
- if (!info.loadingFinished && !info.loadingFailed) return;
652
+ if (!info.loadingFinished && !info.loadingFailed)
653
+ return;
756
654
  if (info.responses.length <= info.responseReceivedExtraInfo.length) {
757
- // We have extra info for each response.
758
655
  this._stopTracking(info.requestId);
759
656
  return;
760
657
  }
761
-
762
- // We are not done yet.
763
658
  }
764
659
  _stopTracking(requestId) {
765
660
  this._requests.delete(requestId);
766
661
  }
767
- }
662
+ }
663
+ // Annotate the CommonJS export names for ESM import in node:
664
+ 0 && (module.exports = {
665
+ CRNetworkManager
666
+ });