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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -35
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +0 -24
  345. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  348. package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +0 -24
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +0 -1
  353. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +0 -235
  354. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +0 -25
  355. package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
  356. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +0 -1
  359. package/lib/vite/traceViewer/embedded.DpNPH6mk.js +0 -2
  360. package/lib/vite/traceViewer/embedded.html +0 -18
  361. package/lib/vite/traceViewer/embedded.mLhjB5IF.css +0 -1
  362. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  363. package/lib/vite/traceViewer/index.CuE3SYGw.js +0 -2
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +0 -1
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.BD-uZJs7.js +0 -2
  368. package/lib/vite/traceViewer/recorder.html +0 -17
  369. package/lib/vite/traceViewer/recorder.tn0RQdqM.css +0 -0
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.BatfzHMG.css +0 -1
  373. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +0 -5
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +0 -1
  376. package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
@@ -1,76 +1,82 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var network_exports = {};
20
+ __export(network_exports, {
21
+ Request: () => Request,
22
+ Response: () => Response,
23
+ Route: () => Route,
24
+ WebSocket: () => WebSocket,
25
+ filterCookies: () => filterCookies,
26
+ isLocalHostname: () => isLocalHostname,
27
+ kMaxCookieExpiresDateInSeconds: () => kMaxCookieExpiresDateInSeconds,
28
+ mergeHeaders: () => mergeHeaders,
29
+ parseURL: () => parseURL,
30
+ rewriteCookies: () => rewriteCookies,
31
+ singleHeader: () => singleHeader,
32
+ statusText: () => statusText,
33
+ stripFragmentFromUrl: () => stripFragmentFromUrl
5
34
  });
6
- exports.WebSocket = exports.Route = exports.Response = exports.Request = void 0;
7
- exports.filterCookies = filterCookies;
8
- exports.kMaxCookieExpiresDateInSeconds = void 0;
9
- exports.mergeHeaders = mergeHeaders;
10
- exports.parseURL = parseURL;
11
- exports.rewriteCookies = rewriteCookies;
12
- exports.singleHeader = singleHeader;
13
- exports.statusText = statusText;
14
- exports.stripFragmentFromUrl = stripFragmentFromUrl;
15
- var _utils = require("../utils");
16
- var _browserContext = require("./browserContext");
17
- var _fetch = require("./fetch");
18
- var _instrumentation = require("./instrumentation");
19
- var _manualPromise = require("../utils/isomorphic/manualPromise");
20
- /**
21
- * Copyright (c) Microsoft Corporation.
22
- *
23
- * Licensed under the Apache License, Version 2.0 (the "License");
24
- * you may not use this file except in compliance with the License.
25
- * You may obtain a copy of the License at
26
- *
27
- * http://www.apache.org/licenses/LICENSE-2.0
28
- *
29
- * Unless required by applicable law or agreed to in writing, software
30
- * distributed under the License is distributed on an "AS IS" BASIS,
31
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
32
- * See the License for the specific language governing permissions and
33
- * limitations under the License.
34
- */
35
-
35
+ module.exports = __toCommonJS(network_exports);
36
+ var import_utils = require("../utils");
37
+ var import_browserContext = require("./browserContext");
38
+ var import_fetch = require("./fetch");
39
+ var import_instrumentation = require("./instrumentation");
40
+ var import_manualPromise = require("../utils/isomorphic/manualPromise");
36
41
  function filterCookies(cookies, urls) {
37
- const parsedURLs = urls.map(s => new URL(s));
38
- // Chromiums's cookies are missing sameSite when it is 'None'
39
- return cookies.filter(c => {
40
- if (!parsedURLs.length) return true;
42
+ const parsedURLs = urls.map((s) => new URL(s));
43
+ return cookies.filter((c) => {
44
+ if (!parsedURLs.length)
45
+ return true;
41
46
  for (const parsedURL of parsedURLs) {
42
47
  let domain = c.domain;
43
- if (!domain.startsWith('.')) domain = '.' + domain;
44
- if (!('.' + parsedURL.hostname).endsWith(domain)) continue;
45
- if (!parsedURL.pathname.startsWith(c.path)) continue;
46
- if (parsedURL.protocol !== 'https:' && parsedURL.hostname !== 'localhost' && c.secure) continue;
48
+ if (!domain.startsWith("."))
49
+ domain = "." + domain;
50
+ if (!("." + parsedURL.hostname).endsWith(domain))
51
+ continue;
52
+ if (!parsedURL.pathname.startsWith(c.path))
53
+ continue;
54
+ if (parsedURL.protocol !== "https:" && !isLocalHostname(parsedURL.hostname) && c.secure)
55
+ continue;
47
56
  return true;
48
57
  }
49
58
  return false;
50
59
  });
51
60
  }
52
-
53
- // Rollover to 5-digit year:
54
- // 253402300799 == Fri, 31 Dec 9999 23:59:59 +0000 (UTC)
55
- // 253402300800 == Sat, 1 Jan 1000 00:00:00 +0000 (UTC)
56
- const kMaxCookieExpiresDateInSeconds = exports.kMaxCookieExpiresDateInSeconds = 253402300799;
61
+ function isLocalHostname(hostname) {
62
+ return hostname === "localhost" || hostname.endsWith(".localhost");
63
+ }
64
+ const kMaxCookieExpiresDateInSeconds = 253402300799;
57
65
  function rewriteCookies(cookies) {
58
- return cookies.map(c => {
59
- (0, _utils.assert)(c.url || c.domain && c.path, 'Cookie should have a url or a domain/path pair');
60
- (0, _utils.assert)(!(c.url && c.domain), 'Cookie should have either url or domain');
61
- (0, _utils.assert)(!(c.url && c.path), 'Cookie should have either url or path');
62
- (0, _utils.assert)(!(c.expires && c.expires < 0 && c.expires !== -1), 'Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed');
63
- (0, _utils.assert)(!(c.expires && c.expires > 0 && c.expires > kMaxCookieExpiresDateInSeconds), 'Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed');
64
- const copy = {
65
- ...c
66
- };
66
+ return cookies.map((c) => {
67
+ (0, import_utils.assert)(c.url || c.domain && c.path, "Cookie should have a url or a domain/path pair");
68
+ (0, import_utils.assert)(!(c.url && c.domain), "Cookie should have either url or domain");
69
+ (0, import_utils.assert)(!(c.url && c.path), "Cookie should have either url or path");
70
+ (0, import_utils.assert)(!(c.expires && c.expires < 0 && c.expires !== -1), "Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed");
71
+ (0, import_utils.assert)(!(c.expires && c.expires > 0 && c.expires > kMaxCookieExpiresDateInSeconds), "Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed");
72
+ const copy = { ...c };
67
73
  if (copy.url) {
68
- (0, _utils.assert)(copy.url !== 'about:blank', `Blank page can not have cookie "${c.name}"`);
69
- (0, _utils.assert)(!copy.url.startsWith('data:'), `Data URL page can not have cookie "${c.name}"`);
74
+ (0, import_utils.assert)(copy.url !== "about:blank", `Blank page can not have cookie "${c.name}"`);
75
+ (0, import_utils.assert)(!copy.url.startsWith("data:"), `Data URL page can not have cookie "${c.name}"`);
70
76
  const url = new URL(copy.url);
71
77
  copy.domain = url.hostname;
72
- copy.path = url.pathname.substring(0, url.pathname.lastIndexOf('/') + 1);
73
- copy.secure = url.protocol === 'https:';
78
+ copy.path = url.pathname.substring(0, url.pathname.lastIndexOf("/") + 1);
79
+ copy.secure = url.protocol === "https:";
74
80
  }
75
81
  return copy;
76
82
  });
@@ -83,38 +89,29 @@ function parseURL(url) {
83
89
  }
84
90
  }
85
91
  function stripFragmentFromUrl(url) {
86
- if (!url.includes('#')) return url;
87
- return url.substring(0, url.indexOf('#'));
92
+ if (!url.includes("#"))
93
+ return url;
94
+ return url.substring(0, url.indexOf("#"));
88
95
  }
89
- class Request extends _instrumentation.SdkObject {
96
+ class Request extends import_instrumentation.SdkObject {
90
97
  constructor(context, frame, serviceWorker, redirectedFrom, documentId, url, resourceType, method, postData, headers) {
91
- super(frame || context, 'request');
98
+ super(frame || context, "request");
92
99
  this._response = null;
93
- this._redirectedFrom = void 0;
94
100
  this._redirectedTo = null;
95
- this._documentId = void 0;
96
- this._isFavicon = void 0;
97
101
  this._failureText = null;
98
- this._url = void 0;
99
- this._resourceType = void 0;
100
- this._method = void 0;
101
- this._postData = void 0;
102
- this._headers = void 0;
103
- this._headersMap = new Map();
102
+ this._headersMap = /* @__PURE__ */ new Map();
104
103
  this._frame = null;
105
104
  this._serviceWorker = null;
106
- this._context = void 0;
107
- this._rawRequestHeadersPromise = new _manualPromise.ManualPromise();
108
- this._waitForResponsePromise = new _manualPromise.ManualPromise();
105
+ this._rawRequestHeadersPromise = new import_manualPromise.ManualPromise();
106
+ this._waitForResponsePromise = new import_manualPromise.ManualPromise();
109
107
  this._responseEndTiming = -1;
110
- this._overrides = void 0;
111
- this._bodySize = void 0;
112
- (0, _utils.assert)(!url.startsWith('data:'), 'Data urls should not fire requests');
108
+ (0, import_utils.assert)(!url.startsWith("data:"), "Data urls should not fire requests");
113
109
  this._context = context;
114
110
  this._frame = frame;
115
111
  this._serviceWorker = serviceWorker;
116
112
  this._redirectedFrom = redirectedFrom;
117
- if (redirectedFrom) redirectedFrom._redirectedTo = this;
113
+ if (redirectedFrom)
114
+ redirectedFrom._redirectedTo = this;
118
115
  this._documentId = documentId;
119
116
  this._url = stripFragmentFromUrl(url);
120
117
  this._resourceType = resourceType;
@@ -122,55 +119,49 @@ class Request extends _instrumentation.SdkObject {
122
119
  this._postData = postData;
123
120
  this._headers = headers;
124
121
  this._updateHeadersMap();
125
- this._isFavicon = url.endsWith('/favicon.ico') || !!(redirectedFrom !== null && redirectedFrom !== void 0 && redirectedFrom._isFavicon);
122
+ this._isFavicon = url.endsWith("/favicon.ico") || !!redirectedFrom?._isFavicon;
126
123
  }
127
124
  _setFailureText(failureText) {
128
125
  this._failureText = failureText;
129
126
  this._waitForResponsePromise.resolve(null);
130
127
  }
131
- _setOverrides(overrides) {
132
- this._overrides = overrides;
128
+ _applyOverrides(overrides) {
129
+ this._overrides = { ...this._overrides, ...overrides };
133
130
  this._updateHeadersMap();
131
+ return this._overrides;
134
132
  }
135
133
  _updateHeadersMap() {
136
- for (const {
137
- name,
138
- value
139
- } of this.headers()) this._headersMap.set(name.toLowerCase(), value);
134
+ for (const { name, value } of this.headers())
135
+ this._headersMap.set(name.toLowerCase(), value);
140
136
  }
141
- _hasOverrides() {
142
- return !!this._overrides;
137
+ overrides() {
138
+ return this._overrides;
143
139
  }
144
140
  url() {
145
- var _this$_overrides;
146
- return ((_this$_overrides = this._overrides) === null || _this$_overrides === void 0 ? void 0 : _this$_overrides.url) || this._url;
141
+ return this._overrides?.url || this._url;
147
142
  }
148
143
  resourceType() {
149
144
  return this._resourceType;
150
145
  }
151
146
  method() {
152
- var _this$_overrides2;
153
- return ((_this$_overrides2 = this._overrides) === null || _this$_overrides2 === void 0 ? void 0 : _this$_overrides2.method) || this._method;
147
+ return this._overrides?.method || this._method;
154
148
  }
155
149
  postDataBuffer() {
156
- var _this$_overrides3;
157
- return ((_this$_overrides3 = this._overrides) === null || _this$_overrides3 === void 0 ? void 0 : _this$_overrides3.postData) || this._postData;
150
+ return this._overrides?.postData || this._postData;
158
151
  }
159
152
  headers() {
160
- var _this$_overrides4;
161
- return ((_this$_overrides4 = this._overrides) === null || _this$_overrides4 === void 0 ? void 0 : _this$_overrides4.headers) || this._headers;
153
+ return this._overrides?.headers || this._headers;
162
154
  }
163
155
  headerValue(name) {
164
156
  return this._headersMap.get(name);
165
157
  }
166
-
167
158
  // "null" means no raw headers available - we'll use provisional headers as raw headers.
168
159
  setRawRequestHeaders(headers) {
169
- if (!this._rawRequestHeadersPromise.isDone()) this._rawRequestHeadersPromise.resolve(headers || this._headers);
160
+ if (!this._rawRequestHeadersPromise.isDone())
161
+ this._rawRequestHeadersPromise.resolve(headers || this._headers);
170
162
  }
171
163
  async rawRequestHeaders() {
172
- var _this$_overrides5;
173
- return ((_this$_overrides5 = this._overrides) === null || _this$_overrides5 === void 0 ? void 0 : _this$_overrides5.headers) || this._rawRequestHeadersPromise;
164
+ return this._overrides?.headers || this._rawRequestHeadersPromise;
174
165
  }
175
166
  response() {
176
167
  return this._waitForResponsePromise;
@@ -198,158 +189,163 @@ class Request extends _instrumentation.SdkObject {
198
189
  return this._redirectedFrom;
199
190
  }
200
191
  failure() {
201
- if (this._failureText === null) return null;
192
+ if (this._failureText === null)
193
+ return null;
202
194
  return {
203
195
  errorText: this._failureText
204
196
  };
205
197
  }
206
-
207
198
  // TODO(bidi): remove once post body is available.
208
199
  _setBodySize(size) {
209
200
  this._bodySize = size;
210
201
  }
211
202
  bodySize() {
212
- var _this$postDataBuffer;
213
- return this._bodySize || ((_this$postDataBuffer = this.postDataBuffer()) === null || _this$postDataBuffer === void 0 ? void 0 : _this$postDataBuffer.length) || 0;
203
+ return this._bodySize || this.postDataBuffer()?.length || 0;
214
204
  }
215
205
  async requestHeadersSize() {
216
- let headersSize = 4; // 4 = 2 spaces + 2 line breaks (GET /path \r\n)
206
+ let headersSize = 4;
217
207
  headersSize += this.method().length;
218
208
  headersSize += new URL(this.url()).pathname.length;
219
- headersSize += 8; // httpVersion
209
+ headersSize += 8;
220
210
  const headers = await this.rawRequestHeaders();
221
- for (const header of headers) headersSize += header.name.length + header.value.length + 4; // 4 = ': ' + '\r\n'
211
+ for (const header of headers)
212
+ headersSize += header.name.length + header.value.length + 4;
222
213
  return headersSize;
223
214
  }
224
215
  }
225
- exports.Request = Request;
226
- class Route extends _instrumentation.SdkObject {
216
+ class Route extends import_instrumentation.SdkObject {
227
217
  constructor(request, delegate) {
228
- super(request._frame || request._context, 'route');
229
- this._request = void 0;
230
- this._delegate = void 0;
218
+ super(request._frame || request._context, "route");
231
219
  this._handled = false;
220
+ this._futureHandlers = [];
232
221
  this._request = request;
233
222
  this._delegate = delegate;
234
223
  this._request._context.addRouteInFlight(this);
235
224
  }
225
+ handle(handlers) {
226
+ this._futureHandlers = [...handlers];
227
+ this.continue({ isFallback: true }).catch(() => {
228
+ });
229
+ }
230
+ async removeHandler(handler) {
231
+ this._futureHandlers = this._futureHandlers.filter((h) => h !== handler);
232
+ if (handler === this._currentHandler) {
233
+ await this.continue({ isFallback: true }).catch(() => {
234
+ });
235
+ return;
236
+ }
237
+ }
236
238
  request() {
237
239
  return this._request;
238
240
  }
239
- async abort(errorCode = 'failed') {
241
+ async abort(errorCode = "failed") {
240
242
  this._startHandling();
241
- this._request._context.emit(_browserContext.BrowserContext.Events.RequestAborted, this._request);
243
+ this._request._context.emit(import_browserContext.BrowserContext.Events.RequestAborted, this._request);
242
244
  await this._delegate.abort(errorCode);
243
245
  this._endHandling();
244
246
  }
245
- async redirectNavigationRequest(url) {
247
+ redirectNavigationRequest(url) {
246
248
  this._startHandling();
247
- (0, _utils.assert)(this._request.isNavigationRequest());
248
- this._request.frame().redirectNavigation(url, this._request._documentId, this._request.headerValue('referer'));
249
+ (0, import_utils.assert)(this._request.isNavigationRequest());
250
+ this._request.frame().redirectNavigation(url, this._request._documentId, this._request.headerValue("referer"));
251
+ this._endHandling();
249
252
  }
250
253
  async fulfill(overrides) {
251
254
  this._startHandling();
252
255
  let body = overrides.body;
253
256
  let isBase64 = overrides.isBase64 || false;
254
- if (body === undefined) {
257
+ if (body === void 0) {
255
258
  if (overrides.fetchResponseUid) {
256
- const buffer = this._request._context.fetchRequest.fetchResponses.get(overrides.fetchResponseUid) || _fetch.APIRequestContext.findResponseBody(overrides.fetchResponseUid);
257
- (0, _utils.assert)(buffer, 'Fetch response has been disposed');
258
- body = buffer.toString('base64');
259
+ const buffer = this._request._context.fetchRequest.fetchResponses.get(overrides.fetchResponseUid) || import_fetch.APIRequestContext.findResponseBody(overrides.fetchResponseUid);
260
+ (0, import_utils.assert)(buffer, "Fetch response has been disposed");
261
+ body = buffer.toString("base64");
259
262
  isBase64 = true;
260
263
  } else {
261
- body = '';
264
+ body = "";
262
265
  isBase64 = false;
263
266
  }
264
267
  }
265
- const headers = [...(overrides.headers || [])];
268
+ const headers = [...overrides.headers || []];
266
269
  this._maybeAddCorsHeaders(headers);
267
- this._request._context.emit(_browserContext.BrowserContext.Events.RequestFulfilled, this._request);
270
+ this._request._context.emit(import_browserContext.BrowserContext.Events.RequestFulfilled, this._request);
268
271
  await this._delegate.fulfill({
269
272
  status: overrides.status || 200,
270
273
  headers,
271
- body: body,
274
+ body,
272
275
  isBase64
273
276
  });
274
277
  this._endHandling();
275
278
  }
276
-
277
279
  // See https://github.com/microsoft/playwright/issues/12929
278
280
  _maybeAddCorsHeaders(headers) {
279
- const origin = this._request.headerValue('origin');
280
- if (!origin) return;
281
+ const origin = this._request.headerValue("origin");
282
+ if (!origin)
283
+ return;
281
284
  const requestUrl = new URL(this._request.url());
282
- if (!requestUrl.protocol.startsWith('http')) return;
283
- if (requestUrl.origin === origin.trim()) return;
284
- const corsHeader = headers.find(({
285
- name
286
- }) => name === 'access-control-allow-origin');
287
- if (corsHeader) return;
288
- headers.push({
289
- name: 'access-control-allow-origin',
290
- value: origin
291
- });
292
- headers.push({
293
- name: 'access-control-allow-credentials',
294
- value: 'true'
295
- });
296
- headers.push({
297
- name: 'vary',
298
- value: 'Origin'
299
- });
285
+ if (!requestUrl.protocol.startsWith("http"))
286
+ return;
287
+ if (requestUrl.origin === origin.trim())
288
+ return;
289
+ const corsHeader = headers.find(({ name }) => name === "access-control-allow-origin");
290
+ if (corsHeader)
291
+ return;
292
+ headers.push({ name: "access-control-allow-origin", value: origin });
293
+ headers.push({ name: "access-control-allow-credentials", value: "true" });
294
+ headers.push({ name: "vary", value: "Origin" });
300
295
  }
301
296
  async continue(overrides) {
302
- this._startHandling();
303
297
  if (overrides.url) {
304
298
  const newUrl = new URL(overrides.url);
305
299
  const oldUrl = new URL(this._request.url());
306
- if (oldUrl.protocol !== newUrl.protocol) throw new Error('New URL must have same protocol as overridden URL');
300
+ if (oldUrl.protocol !== newUrl.protocol)
301
+ throw new Error("New URL must have same protocol as overridden URL");
302
+ }
303
+ if (overrides.headers)
304
+ overrides.headers = overrides.headers?.filter((header) => header.name.toLowerCase() !== "cookie");
305
+ overrides = this._request._applyOverrides(overrides);
306
+ const nextHandler = this._futureHandlers.shift();
307
+ if (nextHandler) {
308
+ this._currentHandler = nextHandler;
309
+ nextHandler(this, this._request);
310
+ return;
307
311
  }
308
- this._request._setOverrides(overrides);
309
- if (!overrides.isFallback) this._request._context.emit(_browserContext.BrowserContext.Events.RequestContinued, this._request);
312
+ if (!overrides.isFallback)
313
+ this._request._context.emit(import_browserContext.BrowserContext.Events.RequestContinued, this._request);
314
+ this._startHandling();
310
315
  await this._delegate.continue(overrides);
311
316
  this._endHandling();
312
317
  }
313
318
  _startHandling() {
314
- (0, _utils.assert)(!this._handled, 'Route is already handled!');
319
+ (0, import_utils.assert)(!this._handled, "Route is already handled!");
315
320
  this._handled = true;
321
+ this._currentHandler = void 0;
316
322
  }
317
323
  _endHandling() {
324
+ this._futureHandlers = [];
325
+ this._currentHandler = void 0;
318
326
  this._request._context.removeRouteInFlight(this);
319
327
  }
320
328
  }
321
- exports.Route = Route;
322
- class Response extends _instrumentation.SdkObject {
323
- constructor(request, status, statusText, headers, timing, getResponseBodyCallback, fromServiceWorker, httpVersion) {
324
- super(request.frame() || request._context, 'response');
325
- this._request = void 0;
329
+ class Response extends import_instrumentation.SdkObject {
330
+ constructor(request, status, statusText2, headers, timing, getResponseBodyCallback, fromServiceWorker, httpVersion) {
331
+ super(request.frame() || request._context, "response");
326
332
  this._contentPromise = null;
327
- this._finishedPromise = new _manualPromise.ManualPromise();
328
- this._status = void 0;
329
- this._statusText = void 0;
330
- this._url = void 0;
331
- this._headers = void 0;
332
- this._headersMap = new Map();
333
- this._getResponseBodyCallback = void 0;
334
- this._timing = void 0;
335
- this._serverAddrPromise = new _manualPromise.ManualPromise();
336
- this._securityDetailsPromise = new _manualPromise.ManualPromise();
337
- this._rawResponseHeadersPromise = new _manualPromise.ManualPromise();
338
- this._httpVersion = void 0;
339
- this._fromServiceWorker = void 0;
340
- this._encodedBodySizePromise = new _manualPromise.ManualPromise();
341
- this._transferSizePromise = new _manualPromise.ManualPromise();
342
- this._responseHeadersSizePromise = new _manualPromise.ManualPromise();
333
+ this._finishedPromise = new import_manualPromise.ManualPromise();
334
+ this._headersMap = /* @__PURE__ */ new Map();
335
+ this._serverAddrPromise = new import_manualPromise.ManualPromise();
336
+ this._securityDetailsPromise = new import_manualPromise.ManualPromise();
337
+ this._rawResponseHeadersPromise = new import_manualPromise.ManualPromise();
338
+ this._encodedBodySizePromise = new import_manualPromise.ManualPromise();
339
+ this._transferSizePromise = new import_manualPromise.ManualPromise();
340
+ this._responseHeadersSizePromise = new import_manualPromise.ManualPromise();
343
341
  this._request = request;
344
342
  this._timing = timing;
345
343
  this._status = status;
346
- this._statusText = statusText;
344
+ this._statusText = statusText2;
347
345
  this._url = request.url();
348
346
  this._headers = headers;
349
- for (const {
350
- name,
351
- value
352
- } of this._headers) this._headersMap.set(name.toLowerCase(), value);
347
+ for (const { name, value } of this._headers)
348
+ this._headersMap.set(name.toLowerCase(), value);
353
349
  this._getResponseBodyCallback = getResponseBodyCallback;
354
350
  this._request._setResponse(this);
355
351
  this._httpVersion = httpVersion;
@@ -363,8 +359,8 @@ class Response extends _instrumentation.SdkObject {
363
359
  }
364
360
  _requestFinished(responseEndTiming) {
365
361
  this._request._responseEndTiming = Math.max(responseEndTiming, this._timing.responseStart);
366
- // Set start time equal to end when request is served from memory cache.
367
- if (this._timing.requestStart === -1) this._timing.requestStart = this._request._responseEndTiming;
362
+ if (this._timing.requestStart === -1)
363
+ this._timing.requestStart = this._request._responseEndTiming;
368
364
  this._finishedPromise.resolve();
369
365
  }
370
366
  _setHttpVersion(httpVersion) {
@@ -388,10 +384,10 @@ class Response extends _instrumentation.SdkObject {
388
384
  async rawResponseHeaders() {
389
385
  return this._rawResponseHeadersPromise;
390
386
  }
391
-
392
387
  // "null" means no raw headers available - we'll use provisional headers as raw headers.
393
388
  setRawResponseHeaders(headers) {
394
- if (!this._rawResponseHeadersPromise.isDone()) this._rawResponseHeadersPromise.resolve(headers || this._headers);
389
+ if (!this._rawResponseHeadersPromise.isDone())
390
+ this._rawResponseHeadersPromise.resolve(headers || this._headers);
395
391
  }
396
392
  setTransferSize(size) {
397
393
  this._transferSizePromise.resolve(size);
@@ -406,15 +402,16 @@ class Response extends _instrumentation.SdkObject {
406
402
  return this._timing;
407
403
  }
408
404
  async serverAddr() {
409
- return (await this._serverAddrPromise) || null;
405
+ return await this._serverAddrPromise || null;
410
406
  }
411
407
  async securityDetails() {
412
- return (await this._securityDetailsPromise) || null;
408
+ return await this._securityDetailsPromise || null;
413
409
  }
414
410
  body() {
415
411
  if (!this._contentPromise) {
416
412
  this._contentPromise = this._finishedPromise.then(async () => {
417
- if (this._status >= 300 && this._status <= 399) throw new Error('Response body is unavailable for redirect responses');
413
+ if (this._status >= 300 && this._status <= 399)
414
+ throw new Error("Response body is unavailable for redirect responses");
418
415
  return this._getResponseBodyCallback();
419
416
  });
420
417
  }
@@ -427,9 +424,12 @@ class Response extends _instrumentation.SdkObject {
427
424
  return this._request.frame();
428
425
  }
429
426
  httpVersion() {
430
- if (!this._httpVersion) return 'HTTP/1.1';
431
- if (this._httpVersion === 'http/1.1') return 'HTTP/1.1';
432
- if (this._httpVersion === 'h2') return 'HTTP/2.0';
427
+ if (!this._httpVersion)
428
+ return "HTTP/1.1";
429
+ if (this._httpVersion === "http/1.1")
430
+ return "HTTP/1.1";
431
+ if (this._httpVersion === "h2")
432
+ return "HTTP/2.0";
433
433
  return this._httpVersion;
434
434
  }
435
435
  fromServiceWorker() {
@@ -437,16 +437,16 @@ class Response extends _instrumentation.SdkObject {
437
437
  }
438
438
  async responseHeadersSize() {
439
439
  const availableSize = await this._responseHeadersSizePromise;
440
- if (availableSize !== null) return availableSize;
441
-
442
- // Fallback to calculating it manually.
443
- let headersSize = 4; // 4 = 2 spaces + 2 line breaks (HTTP/1.1 200 Ok\r\n)
444
- headersSize += 8; // httpVersion;
445
- headersSize += 3; // statusCode;
440
+ if (availableSize !== null)
441
+ return availableSize;
442
+ let headersSize = 4;
443
+ headersSize += 8;
444
+ headersSize += 3;
446
445
  headersSize += this.statusText().length;
447
446
  const headers = await this._rawResponseHeadersPromise;
448
- for (const header of headers) headersSize += header.name.length + header.value.length + 4; // 4 = ': ' + '\r\n'
449
- headersSize += 2; // '\r\n'
447
+ for (const header of headers)
448
+ headersSize += header.name.length + header.value.length + 4;
449
+ headersSize += 2;
450
450
  return headersSize;
451
451
  }
452
452
  async sizes() {
@@ -454,15 +454,12 @@ class Response extends _instrumentation.SdkObject {
454
454
  const responseHeadersSize = await this.responseHeadersSize();
455
455
  let encodedBodySize = await this._encodedBodySizePromise;
456
456
  if (encodedBodySize === null) {
457
- var _headers$find;
458
- // Fallback to calculating it manually.
459
457
  const headers = await this._rawResponseHeadersPromise;
460
- const contentLength = (_headers$find = headers.find(h => h.name.toLowerCase() === 'content-length')) === null || _headers$find === void 0 ? void 0 : _headers$find.value;
458
+ const contentLength = headers.find((h) => h.name.toLowerCase() === "content-length")?.value;
461
459
  encodedBodySize = contentLength ? +contentLength : 0;
462
460
  }
463
461
  let transferSize = await this._transferSizePromise;
464
462
  if (transferSize === null) {
465
- // Fallback to calculating it manually.
466
463
  transferSize = responseHeadersSize + encodedBodySize;
467
464
  }
468
465
  return {
@@ -474,19 +471,23 @@ class Response extends _instrumentation.SdkObject {
474
471
  };
475
472
  }
476
473
  }
477
- exports.Response = Response;
478
- class WebSocket extends _instrumentation.SdkObject {
474
+ class WebSocket extends import_instrumentation.SdkObject {
479
475
  constructor(parent, url) {
480
- super(parent, 'ws');
481
- this._url = void 0;
476
+ super(parent, "ws");
482
477
  this._notified = false;
483
478
  this._url = url;
484
479
  }
480
+ static {
481
+ this.Events = {
482
+ Close: "close",
483
+ SocketError: "socketerror",
484
+ FrameReceived: "framereceived",
485
+ FrameSent: "framesent"
486
+ };
487
+ }
485
488
  markAsNotified() {
486
- // Sometimes we get "onWebSocketRequest" twice, at least in Chromium.
487
- // Perhaps websocket is restarted because of chrome.webRequest extensions api?
488
- // Or maybe the handshake response was a redirect?
489
- if (this._notified) return false;
489
+ if (this._notified)
490
+ return false;
490
491
  this._notified = true;
491
492
  return true;
492
493
  }
@@ -494,16 +495,10 @@ class WebSocket extends _instrumentation.SdkObject {
494
495
  return this._url;
495
496
  }
496
497
  frameSent(opcode, data) {
497
- this.emit(WebSocket.Events.FrameSent, {
498
- opcode,
499
- data
500
- });
498
+ this.emit(WebSocket.Events.FrameSent, { opcode, data });
501
499
  }
502
500
  frameReceived(opcode, data) {
503
- this.emit(WebSocket.Events.FrameReceived, {
504
- opcode,
505
- data
506
- });
501
+ this.emit(WebSocket.Events.FrameReceived, { opcode, data });
507
502
  }
508
503
  error(errorMessage) {
509
504
  this.emit(WebSocket.Events.SocketError, errorMessage);
@@ -512,106 +507,107 @@ class WebSocket extends _instrumentation.SdkObject {
512
507
  this.emit(WebSocket.Events.Close);
513
508
  }
514
509
  }
515
- exports.WebSocket = WebSocket;
516
- WebSocket.Events = {
517
- Close: 'close',
518
- SocketError: 'socketerror',
519
- FrameReceived: 'framereceived',
520
- FrameSent: 'framesent'
521
- };
522
- // List taken from https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml with extra 306 and 418 codes.
523
510
  const STATUS_TEXTS = {
524
- '100': 'Continue',
525
- '101': 'Switching Protocols',
526
- '102': 'Processing',
527
- '103': 'Early Hints',
528
- '200': 'OK',
529
- '201': 'Created',
530
- '202': 'Accepted',
531
- '203': 'Non-Authoritative Information',
532
- '204': 'No Content',
533
- '205': 'Reset Content',
534
- '206': 'Partial Content',
535
- '207': 'Multi-Status',
536
- '208': 'Already Reported',
537
- '226': 'IM Used',
538
- '300': 'Multiple Choices',
539
- '301': 'Moved Permanently',
540
- '302': 'Found',
541
- '303': 'See Other',
542
- '304': 'Not Modified',
543
- '305': 'Use Proxy',
544
- '306': 'Switch Proxy',
545
- '307': 'Temporary Redirect',
546
- '308': 'Permanent Redirect',
547
- '400': 'Bad Request',
548
- '401': 'Unauthorized',
549
- '402': 'Payment Required',
550
- '403': 'Forbidden',
551
- '404': 'Not Found',
552
- '405': 'Method Not Allowed',
553
- '406': 'Not Acceptable',
554
- '407': 'Proxy Authentication Required',
555
- '408': 'Request Timeout',
556
- '409': 'Conflict',
557
- '410': 'Gone',
558
- '411': 'Length Required',
559
- '412': 'Precondition Failed',
560
- '413': 'Payload Too Large',
561
- '414': 'URI Too Long',
562
- '415': 'Unsupported Media Type',
563
- '416': 'Range Not Satisfiable',
564
- '417': 'Expectation Failed',
565
- '418': 'I\'m a teapot',
566
- '421': 'Misdirected Request',
567
- '422': 'Unprocessable Entity',
568
- '423': 'Locked',
569
- '424': 'Failed Dependency',
570
- '425': 'Too Early',
571
- '426': 'Upgrade Required',
572
- '428': 'Precondition Required',
573
- '429': 'Too Many Requests',
574
- '431': 'Request Header Fields Too Large',
575
- '451': 'Unavailable For Legal Reasons',
576
- '500': 'Internal Server Error',
577
- '501': 'Not Implemented',
578
- '502': 'Bad Gateway',
579
- '503': 'Service Unavailable',
580
- '504': 'Gateway Timeout',
581
- '505': 'HTTP Version Not Supported',
582
- '506': 'Variant Also Negotiates',
583
- '507': 'Insufficient Storage',
584
- '508': 'Loop Detected',
585
- '510': 'Not Extended',
586
- '511': 'Network Authentication Required'
511
+ "100": "Continue",
512
+ "101": "Switching Protocols",
513
+ "102": "Processing",
514
+ "103": "Early Hints",
515
+ "200": "OK",
516
+ "201": "Created",
517
+ "202": "Accepted",
518
+ "203": "Non-Authoritative Information",
519
+ "204": "No Content",
520
+ "205": "Reset Content",
521
+ "206": "Partial Content",
522
+ "207": "Multi-Status",
523
+ "208": "Already Reported",
524
+ "226": "IM Used",
525
+ "300": "Multiple Choices",
526
+ "301": "Moved Permanently",
527
+ "302": "Found",
528
+ "303": "See Other",
529
+ "304": "Not Modified",
530
+ "305": "Use Proxy",
531
+ "306": "Switch Proxy",
532
+ "307": "Temporary Redirect",
533
+ "308": "Permanent Redirect",
534
+ "400": "Bad Request",
535
+ "401": "Unauthorized",
536
+ "402": "Payment Required",
537
+ "403": "Forbidden",
538
+ "404": "Not Found",
539
+ "405": "Method Not Allowed",
540
+ "406": "Not Acceptable",
541
+ "407": "Proxy Authentication Required",
542
+ "408": "Request Timeout",
543
+ "409": "Conflict",
544
+ "410": "Gone",
545
+ "411": "Length Required",
546
+ "412": "Precondition Failed",
547
+ "413": "Payload Too Large",
548
+ "414": "URI Too Long",
549
+ "415": "Unsupported Media Type",
550
+ "416": "Range Not Satisfiable",
551
+ "417": "Expectation Failed",
552
+ "418": "I'm a teapot",
553
+ "421": "Misdirected Request",
554
+ "422": "Unprocessable Entity",
555
+ "423": "Locked",
556
+ "424": "Failed Dependency",
557
+ "425": "Too Early",
558
+ "426": "Upgrade Required",
559
+ "428": "Precondition Required",
560
+ "429": "Too Many Requests",
561
+ "431": "Request Header Fields Too Large",
562
+ "451": "Unavailable For Legal Reasons",
563
+ "500": "Internal Server Error",
564
+ "501": "Not Implemented",
565
+ "502": "Bad Gateway",
566
+ "503": "Service Unavailable",
567
+ "504": "Gateway Timeout",
568
+ "505": "HTTP Version Not Supported",
569
+ "506": "Variant Also Negotiates",
570
+ "507": "Insufficient Storage",
571
+ "508": "Loop Detected",
572
+ "510": "Not Extended",
573
+ "511": "Network Authentication Required"
587
574
  };
588
575
  function statusText(status) {
589
- return STATUS_TEXTS[String(status)] || 'Unknown';
576
+ return STATUS_TEXTS[String(status)] || "Unknown";
590
577
  }
591
578
  function singleHeader(name, value) {
592
- return [{
593
- name,
594
- value
595
- }];
579
+ return [{ name, value }];
596
580
  }
597
581
  function mergeHeaders(headers) {
598
- const lowerCaseToValue = new Map();
599
- const lowerCaseToOriginalCase = new Map();
582
+ const lowerCaseToValue = /* @__PURE__ */ new Map();
583
+ const lowerCaseToOriginalCase = /* @__PURE__ */ new Map();
600
584
  for (const h of headers) {
601
- if (!h) continue;
602
- for (const {
603
- name,
604
- value
605
- } of h) {
585
+ if (!h)
586
+ continue;
587
+ for (const { name, value } of h) {
606
588
  const lower = name.toLowerCase();
607
589
  lowerCaseToOriginalCase.set(lower, name);
608
590
  lowerCaseToValue.set(lower, value);
609
591
  }
610
592
  }
611
593
  const result = [];
612
- for (const [lower, value] of lowerCaseToValue) result.push({
613
- name: lowerCaseToOriginalCase.get(lower),
614
- value
615
- });
594
+ for (const [lower, value] of lowerCaseToValue)
595
+ result.push({ name: lowerCaseToOriginalCase.get(lower), value });
616
596
  return result;
617
- }
597
+ }
598
+ // Annotate the CommonJS export names for ESM import in node:
599
+ 0 && (module.exports = {
600
+ Request,
601
+ Response,
602
+ Route,
603
+ WebSocket,
604
+ filterCookies,
605
+ isLocalHostname,
606
+ kMaxCookieExpiresDateInSeconds,
607
+ mergeHeaders,
608
+ parseURL,
609
+ rewriteCookies,
610
+ singleHeader,
611
+ statusText,
612
+ stripFragmentFromUrl
613
+ });