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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -36
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-DrMbgOIo.js +0 -16684
  345. package/lib/vite/recorder/assets/codeMirrorModule-DuST8d_k.css +0 -344
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-5NM3V7eb.css +0 -2524
  348. package/lib/vite/recorder/assets/index-CT-scFHn.js +0 -16848
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-CB-2okZ8.js +0 -16684
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-CBiB4avC.js +0 -217
  353. package/lib/vite/traceViewer/assets/inspectorTab-CwgfffWb.js +0 -25143
  354. package/lib/vite/traceViewer/assets/workbench-CWZselvp.js +0 -2470
  355. package/lib/vite/traceViewer/assets/xtermModule-Es_gt_u7.js +0 -5994
  356. package/lib/vite/traceViewer/codeMirrorModule.DuST8d_k.css +0 -344
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.Dp3b_92q.css +0 -41
  359. package/lib/vite/traceViewer/embedded.BeldSa2G.css +0 -68
  360. package/lib/vite/traceViewer/embedded.gzudoghF.js +0 -106
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/index.DilotR1h.js +0 -314
  363. package/lib/vite/traceViewer/index.QewjJ85u.css +0 -131
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.DnGm18kV.css +0 -3178
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.DLgqV9db.css +0 -15
  368. package/lib/vite/traceViewer/recorder.DVrkq3Um.js +0 -551
  369. package/lib/vite/traceViewer/recorder.html +0 -17
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.C9_OcpPU.js +0 -1756
  373. package/lib/vite/traceViewer/uiMode.c5ORgcrX.css +0 -1424
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.xUZSA8PY.css +0 -787
  376. package/lib/vite/traceViewer/xtermModule.EsaqrrTX.css +0 -209
@@ -1,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 _utils = require("../../utils");
8
- var _eventsHelper = require("../utils/eventsHelper");
9
- var _helper = require("../helper");
10
- var network = _interopRequireWildcard(require("../network"));
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 && {}.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,160 +206,106 @@ 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.
267
- frame = this._page._frameManager.frameAttached(requestWillBeSentEvent.frameId, null);
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) {
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
- context: (this._page || this._serviceWorker)._browserContext,
308
+ context: (this._page || this._serviceWorker).browserContext,
329
309
  frame: frame || null,
330
310
  serviceWorker: this._serviceWorker || null,
331
311
  documentId,
@@ -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;
473
- this._maybeUpdateOOPIFMainRequest(sessionInfo, request);
474
-
475
- // Under certain conditions we never get the Network.responseReceived
476
- // event from protocol. @see https://crbug.com/883475
425
+ if (!request)
426
+ return;
427
+ this._maybeUpdateRequestSession(sessionInfo, request);
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;
505
- this._maybeUpdateOOPIFMainRequest(sessionInfo, request);
448
+ if (!request)
449
+ return;
450
+ this._maybeUpdateRequestSession(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
- _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;
463
+ _maybeUpdateRequestSession(sessionInfo, request) {
464
+ if (request.session !== sessionInfo.session && !sessionInfo.isMain && (request._documentId === request._requestId || sessionInfo.workerFrame))
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
+ });