rebrowser-playwright-core 1.49.0 → 1.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  2. package/bin/reinstall_msedge_beta_linux.sh +6 -0
  3. package/bin/reinstall_msedge_dev_linux.sh +6 -0
  4. package/bin/reinstall_msedge_stable_linux.sh +6 -0
  5. package/browsers.json +28 -13
  6. package/index.js +0 -1
  7. package/lib/androidServerImpl.js +42 -48
  8. package/lib/browserServerImpl.js +60 -64
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +314 -354
  11. package/lib/cli/programWithTestStub.js +51 -44
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +146 -254
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -39
  16. package/lib/client/browser.js +59 -68
  17. package/lib/client/browserContext.js +302 -322
  18. package/lib/client/browserType.js +95 -143
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +109 -139
  21. package/lib/client/clientHelper.js +49 -42
  22. package/lib/client/clientInstrumentation.js +40 -35
  23. package/lib/client/clientStackTrace.js +69 -0
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +203 -218
  26. package/lib/client/consoleMessage.js +33 -33
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +74 -76
  31. package/lib/client/elementHandle.js +126 -163
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +127 -127
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +154 -178
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +34 -0
  38. package/lib/client/frame.js +189 -307
  39. package/lib/client/harRouter.js +44 -56
  40. package/lib/client/input.js +40 -69
  41. package/lib/client/jsHandle.js +55 -71
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +53 -28
  44. package/lib/client/locator.js +144 -230
  45. package/lib/client/network.js +285 -301
  46. package/lib/client/page.js +273 -312
  47. package/lib/client/platform.js +74 -0
  48. package/lib/client/playwright.js +62 -57
  49. package/lib/client/selectors.js +51 -43
  50. package/lib/client/stream.js +30 -45
  51. package/lib/client/timeoutSettings.js +75 -0
  52. package/lib/client/tracing.js +49 -82
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +71 -91
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +111 -0
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +28 -43
  60. package/lib/generated/clockSource.js +26 -5
  61. package/lib/generated/consoleApiSource.js +26 -5
  62. package/lib/generated/injectedScriptSource.js +26 -5
  63. package/lib/generated/pollingRecorderSource.js +26 -5
  64. package/lib/generated/utilityScriptSource.js +26 -5
  65. package/lib/generated/webSocketMockSource.js +375 -4
  66. package/lib/inProcessFactory.js +53 -48
  67. package/lib/inprocess.js +2 -19
  68. package/lib/outofprocess.js +53 -42
  69. package/lib/protocol/debug.js +209 -25
  70. package/lib/protocol/serializers.js +153 -134
  71. package/lib/protocol/validator.js +2712 -2667
  72. package/lib/protocol/validatorPrimitives.js +115 -75
  73. package/lib/remote/playwrightConnection.js +144 -152
  74. package/lib/remote/playwrightServer.js +106 -77
  75. package/lib/server/accessibility.js +44 -37
  76. package/lib/server/android/android.js +216 -206
  77. package/lib/server/android/backendAdb.js +89 -82
  78. package/lib/server/artifact.js +78 -55
  79. package/lib/server/bidi/bidiBrowser.js +227 -158
  80. package/lib/server/bidi/bidiChromium.js +106 -78
  81. package/lib/server/bidi/bidiConnection.js +66 -83
  82. package/lib/server/bidi/bidiExecutionContext.js +161 -97
  83. package/lib/server/bidi/bidiFirefox.js +76 -68
  84. package/lib/server/bidi/bidiInput.js +90 -102
  85. package/lib/server/bidi/bidiNetworkManager.js +141 -159
  86. package/lib/server/bidi/bidiOverCdp.js +57 -58
  87. package/lib/server/bidi/bidiPage.js +262 -261
  88. package/lib/server/bidi/bidiPdf.js +52 -86
  89. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  90. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  91. package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
  92. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  93. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  94. package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
  95. package/lib/server/browser.js +76 -84
  96. package/lib/server/browserContext.js +343 -360
  97. package/lib/server/browserType.js +169 -181
  98. package/lib/server/callLog.js +82 -0
  99. package/lib/server/chromium/chromium.js +212 -190
  100. package/lib/server/chromium/chromiumSwitches.js +99 -44
  101. package/lib/server/chromium/crAccessibility.js +157 -131
  102. package/lib/server/chromium/crBrowser.js +262 -280
  103. package/lib/server/chromium/crConnection.js +121 -178
  104. package/lib/server/chromium/crCoverage.js +113 -127
  105. package/lib/server/chromium/crDevTools.js +64 -55
  106. package/lib/server/chromium/crDragDrop.js +62 -79
  107. package/lib/server/chromium/crExecutionContext.js +100 -91
  108. package/lib/server/chromium/crInput.js +101 -88
  109. package/lib/server/chromium/crNetworkManager.js +269 -370
  110. package/lib/server/chromium/crPage.js +509 -595
  111. package/lib/server/chromium/crPdf.js +54 -86
  112. package/lib/server/chromium/crProtocolHelper.js +92 -80
  113. package/lib/server/chromium/crServiceWorker.js +85 -69
  114. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  115. package/lib/server/chromium/protocol.d.js +16 -0
  116. package/lib/server/chromium/videoRecorder.js +65 -99
  117. package/lib/server/clock.js +58 -46
  118. package/lib/server/codegen/csharp.js +191 -156
  119. package/lib/server/codegen/java.js +163 -125
  120. package/lib/server/codegen/javascript.js +166 -143
  121. package/lib/server/codegen/jsonl.js +33 -29
  122. package/lib/server/codegen/language.js +75 -52
  123. package/lib/server/codegen/languages.js +65 -27
  124. package/lib/server/codegen/python.js +141 -125
  125. package/lib/server/codegen/types.js +15 -4
  126. package/lib/server/console.js +28 -32
  127. package/lib/server/cookieStore.js +105 -86
  128. package/lib/server/debugController.js +102 -154
  129. package/lib/server/debugger.js +82 -78
  130. package/lib/server/deviceDescriptors.js +37 -24
  131. package/lib/server/deviceDescriptorsSource.json +131 -131
  132. package/lib/server/dialog.js +36 -35
  133. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  134. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  135. package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
  136. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  137. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  138. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  139. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
  140. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  141. package/lib/server/dispatchers/dispatcher.js +180 -229
  142. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  143. package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
  144. package/lib/server/dispatchers/frameDispatcher.js +93 -162
  145. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  146. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  147. package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
  148. package/lib/server/dispatchers/networkDispatchers.js +92 -109
  149. package/lib/server/dispatchers/pageDispatcher.js +130 -169
  150. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  151. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  152. package/lib/server/dispatchers/streamDispatcher.js +42 -44
  153. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  154. package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
  155. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
  156. package/lib/server/dom.js +424 -443
  157. package/lib/server/download.js +45 -35
  158. package/lib/server/electron/electron.js +156 -175
  159. package/lib/server/electron/loader.js +8 -36
  160. package/lib/server/errors.js +47 -46
  161. package/lib/server/fetch.js +302 -331
  162. package/lib/server/fileChooser.js +25 -24
  163. package/lib/server/fileUploadUtils.js +66 -57
  164. package/lib/server/firefox/ffAccessibility.js +153 -131
  165. package/lib/server/firefox/ffBrowser.js +218 -274
  166. package/lib/server/firefox/ffConnection.js +63 -84
  167. package/lib/server/firefox/ffExecutionContext.js +103 -77
  168. package/lib/server/firefox/ffInput.js +72 -63
  169. package/lib/server/firefox/ffNetworkManager.js +131 -110
  170. package/lib/server/firefox/ffPage.js +244 -302
  171. package/lib/server/firefox/firefox.js +76 -69
  172. package/lib/server/firefox/protocol.d.js +16 -0
  173. package/lib/server/formData.js +107 -35
  174. package/lib/server/frameSelectors.js +77 -111
  175. package/lib/server/frames.js +719 -855
  176. package/lib/server/har/harRecorder.js +85 -77
  177. package/lib/server/har/harTracer.js +288 -224
  178. package/lib/server/harBackend.js +157 -0
  179. package/lib/server/helper.js +56 -59
  180. package/lib/server/index.js +59 -106
  181. package/lib/server/input.js +136 -166
  182. package/lib/server/instrumentation.js +49 -44
  183. package/lib/server/javascript.js +157 -151
  184. package/lib/server/launchApp.js +92 -73
  185. package/lib/server/localUtils.js +211 -0
  186. package/lib/server/macEditingCommands.js +141 -137
  187. package/lib/server/network.js +263 -297
  188. package/lib/server/page.js +353 -432
  189. package/lib/server/pageBinding.js +88 -0
  190. package/lib/server/pipeTransport.js +49 -45
  191. package/lib/server/playwright.js +60 -67
  192. package/lib/server/progress.js +56 -51
  193. package/lib/server/protocolError.js +34 -31
  194. package/lib/server/recorder/chat.js +161 -0
  195. package/lib/server/recorder/contextRecorder.js +135 -148
  196. package/lib/server/recorder/recorderApp.js +129 -132
  197. package/lib/server/recorder/recorderCollection.js +57 -57
  198. package/lib/server/recorder/recorderFrontend.js +15 -4
  199. package/lib/server/recorder/recorderRunner.js +80 -100
  200. package/lib/server/recorder/recorderUtils.js +59 -72
  201. package/lib/server/recorder/throttledFile.js +42 -31
  202. package/lib/server/recorder.js +186 -190
  203. package/lib/server/registry/browserFetcher.js +107 -100
  204. package/lib/server/registry/dependencies.js +247 -198
  205. package/lib/server/registry/index.js +928 -709
  206. package/lib/server/registry/nativeDeps.js +1073 -461
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +166 -182
  209. package/lib/server/selectors.js +85 -46
  210. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  211. package/lib/server/socksInterceptor.js +62 -67
  212. package/lib/server/storageScript.js +154 -0
  213. package/lib/server/timeoutSettings.js +89 -0
  214. package/lib/server/trace/recorder/snapshotter.js +70 -88
  215. package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
  216. package/lib/server/trace/recorder/tracing.js +324 -327
  217. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  218. package/lib/server/trace/viewer/traceViewer.js +172 -137
  219. package/lib/server/transport.js +125 -133
  220. package/lib/server/types.js +26 -22
  221. package/lib/server/usKeyboardLayout.js +135 -545
  222. package/lib/server/utils/ascii.js +44 -0
  223. package/lib/server/utils/comparators.js +161 -0
  224. package/lib/server/utils/crypto.js +216 -0
  225. package/lib/server/utils/debug.js +47 -0
  226. package/lib/server/utils/debugLogger.js +114 -0
  227. package/lib/server/utils/env.js +68 -0
  228. package/lib/server/utils/eventsHelper.js +39 -0
  229. package/lib/server/utils/expectUtils.js +38 -0
  230. package/lib/server/utils/fileUtils.js +191 -0
  231. package/lib/server/utils/happyEyeballs.js +207 -0
  232. package/lib/server/utils/hostPlatform.js +109 -0
  233. package/lib/server/utils/httpServer.js +218 -0
  234. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  235. package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
  236. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  237. package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
  238. package/lib/server/utils/linuxUtils.js +71 -0
  239. package/lib/server/utils/network.js +217 -0
  240. package/lib/server/utils/nodePlatform.js +148 -0
  241. package/lib/server/utils/pipeTransport.js +84 -0
  242. package/lib/server/utils/processLauncher.js +238 -0
  243. package/lib/server/utils/profiler.js +65 -0
  244. package/lib/server/utils/socksProxy.js +511 -0
  245. package/lib/server/utils/spawnAsync.js +41 -0
  246. package/lib/server/utils/task.js +51 -0
  247. package/lib/server/utils/userAgent.js +98 -0
  248. package/lib/server/utils/wsServer.js +132 -0
  249. package/lib/server/utils/zipFile.js +74 -0
  250. package/lib/server/utils/zones.js +57 -0
  251. package/lib/server/webkit/protocol.d.js +16 -0
  252. package/lib/server/webkit/webkit.js +76 -63
  253. package/lib/server/webkit/wkAccessibility.js +161 -118
  254. package/lib/server/webkit/wkBrowser.js +163 -180
  255. package/lib/server/webkit/wkConnection.js +59 -83
  256. package/lib/server/webkit/wkExecutionContext.js +96 -73
  257. package/lib/server/webkit/wkInput.js +87 -75
  258. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  259. package/lib/server/webkit/wkPage.js +536 -645
  260. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  261. package/lib/server/webkit/wkWorkers.js +77 -77
  262. package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
  263. package/lib/utils/isomorphic/assert.js +31 -0
  264. package/lib/utils/isomorphic/builtins.js +90 -0
  265. package/lib/utils/isomorphic/colors.js +72 -0
  266. package/lib/utils/isomorphic/cssParser.js +123 -127
  267. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  268. package/lib/utils/isomorphic/headers.js +53 -0
  269. package/lib/utils/isomorphic/locatorGenerators.js +344 -349
  270. package/lib/utils/isomorphic/locatorParser.js +103 -106
  271. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  272. package/lib/utils/isomorphic/manualPromise.js +115 -0
  273. package/lib/utils/isomorphic/mimeType.js +453 -22
  274. package/lib/utils/isomorphic/multimap.js +81 -0
  275. package/lib/utils/isomorphic/rtti.js +43 -0
  276. package/lib/utils/isomorphic/selectorParser.js +183 -193
  277. package/lib/utils/isomorphic/semaphore.js +54 -0
  278. package/lib/utils/isomorphic/stackTrace.js +158 -0
  279. package/lib/utils/isomorphic/stringUtils.js +113 -106
  280. package/lib/utils/isomorphic/time.js +44 -0
  281. package/lib/utils/isomorphic/timeoutRunner.js +67 -0
  282. package/lib/utils/isomorphic/traceUtils.js +52 -32
  283. package/lib/utils/isomorphic/types.js +16 -0
  284. package/lib/utils/isomorphic/urlMatch.js +114 -71
  285. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  286. package/lib/utils.js +101 -0
  287. package/lib/utilsBundle.js +101 -76
  288. package/lib/utilsBundleImpl/index.js +114 -116
  289. package/lib/vite/htmlReport/index.html +26 -20
  290. package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
  291. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  292. package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
  293. package/lib/vite/recorder/index.html +2 -2
  294. package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
  295. package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
  296. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  297. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
  298. package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
  299. package/lib/vite/traceViewer/index.html +4 -7
  300. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  301. package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
  302. package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
  303. package/lib/vite/traceViewer/uiMode.html +4 -7
  304. package/lib/zipBundle.js +32 -23
  305. package/lib/zipBundleImpl.js +4 -4
  306. package/package.json +7 -7
  307. package/types/protocol.d.ts +819 -127
  308. package/types/types.d.ts +196 -75
  309. package/bin/PrintDeps.exe +0 -0
  310. package/bin/README.md +0 -2
  311. package/lib/common/socksProxy.js +0 -569
  312. package/lib/common/timeoutSettings.js +0 -73
  313. package/lib/common/types.js +0 -5
  314. package/lib/image_tools/colorUtils.js +0 -98
  315. package/lib/image_tools/imageChannel.js +0 -70
  316. package/lib/protocol/transport.js +0 -82
  317. package/lib/server/ariaSnapshot.js +0 -33
  318. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
  319. package/lib/server/recorder/recorderInTraceViewer.js +0 -144
  320. package/lib/utils/ascii.js +0 -31
  321. package/lib/utils/comparators.js +0 -153
  322. package/lib/utils/crypto.js +0 -171
  323. package/lib/utils/debug.js +0 -46
  324. package/lib/utils/debugLogger.js +0 -91
  325. package/lib/utils/env.js +0 -49
  326. package/lib/utils/eventsHelper.js +0 -38
  327. package/lib/utils/expectUtils.js +0 -33
  328. package/lib/utils/fileUtils.js +0 -205
  329. package/lib/utils/happy-eyeballs.js +0 -194
  330. package/lib/utils/headers.js +0 -52
  331. package/lib/utils/hostPlatform.js +0 -139
  332. package/lib/utils/httpServer.js +0 -237
  333. package/lib/utils/index.js +0 -368
  334. package/lib/utils/isomorphic/recorderUtils.js +0 -227
  335. package/lib/utils/linuxUtils.js +0 -78
  336. package/lib/utils/manualPromise.js +0 -109
  337. package/lib/utils/multimap.js +0 -75
  338. package/lib/utils/network.js +0 -160
  339. package/lib/utils/processLauncher.js +0 -248
  340. package/lib/utils/profiler.js +0 -53
  341. package/lib/utils/rtti.js +0 -44
  342. package/lib/utils/semaphore.js +0 -51
  343. package/lib/utils/sequence.js +0 -64
  344. package/lib/utils/spawnAsync.js +0 -45
  345. package/lib/utils/stackTrace.js +0 -134
  346. package/lib/utils/task.js +0 -58
  347. package/lib/utils/time.js +0 -37
  348. package/lib/utils/timeoutRunner.js +0 -66
  349. package/lib/utils/traceUtils.js +0 -44
  350. package/lib/utils/userAgent.js +0 -105
  351. package/lib/utils/wsServer.js +0 -127
  352. package/lib/utils/zipFile.js +0 -75
  353. package/lib/utils/zones.js +0 -71
  354. package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
  355. package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
  356. package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
  357. package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
  358. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  359. package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
  360. package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
  363. package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
  364. package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
  365. package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  366. package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
  367. package/lib/vite/traceViewer/recorder.html +0 -17
  368. package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
  369. package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
  370. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  371. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  372. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  373. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -1,49 +1,53 @@
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 harTracer_exports = {};
30
+ __export(harTracer_exports, {
31
+ HarTracer: () => HarTracer
5
32
  });
6
- exports.HarTracer = void 0;
7
- var _browserContext = require("../browserContext");
8
- var _fetch = require("../fetch");
9
- var _helper = require("../helper");
10
- var network = _interopRequireWildcard(require("../network"));
11
- var _utils = require("../../utils");
12
- var _eventsHelper = require("../../utils/eventsHelper");
13
- var _utilsBundle = require("../../utilsBundle");
14
- var _manualPromise = require("../../utils/manualPromise");
15
- var _frames = require("../frames");
16
- 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); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
- /**
19
- * Copyright (c) Microsoft Corporation.
20
- *
21
- * Licensed under the Apache License, Version 2.0 (the "License");
22
- * you may not use this file except in compliance with the License.
23
- * You may obtain a copy of the License at
24
- *
25
- * http://www.apache.org/licenses/LICENSE-2.0
26
- *
27
- * Unless required by applicable law or agreed to in writing, software
28
- * distributed under the License is distributed on an "AS IS" BASIS,
29
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
30
- * See the License for the specific language governing permissions and
31
- * limitations under the License.
32
- */
33
-
34
- const FALLBACK_HTTP_VERSION = 'HTTP/1.1';
33
+ module.exports = __toCommonJS(harTracer_exports);
34
+ var import_utils = require("../../utils");
35
+ var import_utils2 = require("../../utils");
36
+ var import_eventsHelper = require("../utils/eventsHelper");
37
+ var import_manualPromise = require("../../utils/isomorphic/manualPromise");
38
+ var import_utilsBundle = require("../../utilsBundle");
39
+ var import_browserContext = require("../browserContext");
40
+ var import_fetch = require("../fetch");
41
+ var import_frames = require("../frames");
42
+ var import_helper = require("../helper");
43
+ var network = __toESM(require("../network"));
44
+ const FALLBACK_HTTP_VERSION = "HTTP/1.1";
35
45
  class HarTracer {
36
46
  constructor(context, page, delegate, options) {
37
- this._context = void 0;
38
- this._barrierPromises = new Set();
39
- this._delegate = void 0;
40
- this._options = void 0;
41
- this._pageEntries = new Map();
47
+ this._barrierPromises = /* @__PURE__ */ new Set();
48
+ this._pageEntries = /* @__PURE__ */ new Map();
42
49
  this._eventListeners = [];
43
50
  this._started = false;
44
- this._entrySymbol = void 0;
45
- this._baseURL = void 0;
46
- this._page = void 0;
47
51
  this._context = context;
48
52
  this._page = page;
49
53
  this._delegate = delegate;
@@ -56,48 +60,64 @@ class HarTracer {
56
60
  options.omitSizes = true;
57
61
  options.omitPages = true;
58
62
  }
59
- this._entrySymbol = Symbol('requestHarEntry');
60
- this._baseURL = context instanceof _fetch.APIRequestContext ? context._defaultOptions().baseURL : context._options.baseURL;
63
+ this._entrySymbol = Symbol("requestHarEntry");
64
+ this._baseURL = context instanceof import_fetch.APIRequestContext ? context._defaultOptions().baseURL : context._options.baseURL;
61
65
  }
62
66
  start(options) {
63
- if (this._started) return;
67
+ if (this._started)
68
+ return;
64
69
  this._options.omitScripts = options.omitScripts;
65
70
  this._started = true;
66
- const apiRequest = this._context instanceof _fetch.APIRequestContext ? this._context : this._context.fetchRequest;
67
- this._eventListeners = [_eventsHelper.eventsHelper.addEventListener(apiRequest, _fetch.APIRequestContext.Events.Request, event => this._onAPIRequest(event)), _eventsHelper.eventsHelper.addEventListener(apiRequest, _fetch.APIRequestContext.Events.RequestFinished, event => this._onAPIRequestFinished(event))];
68
- if (this._context instanceof _browserContext.BrowserContext) {
69
- this._eventListeners.push(_eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.Page, page => this._createPageEntryIfNeeded(page)), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.Request, request => this._onRequest(request)), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.RequestFinished, ({
70
- request,
71
- response
72
- }) => this._onRequestFinished(request, response).catch(() => {})), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.RequestFailed, request => this._onRequestFailed(request)), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.Response, response => this._onResponse(response)), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.RequestAborted, request => this._onRequestAborted(request)), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.RequestFulfilled, request => this._onRequestFulfilled(request)), _eventsHelper.eventsHelper.addEventListener(this._context, _browserContext.BrowserContext.Events.RequestContinued, request => this._onRequestContinued(request)));
71
+ const apiRequest = this._context instanceof import_fetch.APIRequestContext ? this._context : this._context.fetchRequest;
72
+ this._eventListeners = [
73
+ import_eventsHelper.eventsHelper.addEventListener(apiRequest, import_fetch.APIRequestContext.Events.Request, (event) => this._onAPIRequest(event)),
74
+ import_eventsHelper.eventsHelper.addEventListener(apiRequest, import_fetch.APIRequestContext.Events.RequestFinished, (event) => this._onAPIRequestFinished(event))
75
+ ];
76
+ if (this._context instanceof import_browserContext.BrowserContext) {
77
+ this._eventListeners.push(
78
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.Page, (page) => this._createPageEntryIfNeeded(page)),
79
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.Request, (request) => this._onRequest(request)),
80
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.RequestFinished, ({ request, response }) => this._onRequestFinished(request, response).catch(() => {
81
+ })),
82
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.RequestFailed, (request) => this._onRequestFailed(request)),
83
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.Response, (response) => this._onResponse(response)),
84
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.RequestAborted, (request) => this._onRequestAborted(request)),
85
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.RequestFulfilled, (request) => this._onRequestFulfilled(request)),
86
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.RequestContinued, (request) => this._onRequestContinued(request))
87
+ );
73
88
  }
74
89
  }
75
90
  _shouldIncludeEntryWithUrl(urlString) {
76
- return !this._options.urlFilter || (0, _utils.urlMatches)(this._baseURL, urlString, this._options.urlFilter);
91
+ return !this._options.urlFilter || (0, import_utils2.urlMatches)(this._baseURL, urlString, this._options.urlFilter);
77
92
  }
78
93
  _entryForRequest(request) {
79
94
  return request[this._entrySymbol];
80
95
  }
81
96
  _createPageEntryIfNeeded(page) {
82
- if (!page) return;
83
- if (this._options.omitPages) return;
84
- if (this._page && page !== this._page) return;
97
+ if (!page)
98
+ return;
99
+ if (this._options.omitPages)
100
+ return;
101
+ if (this._page && page !== this._page)
102
+ return;
85
103
  let pageEntry = this._pageEntries.get(page);
86
104
  if (!pageEntry) {
87
- const date = new Date();
105
+ const date = /* @__PURE__ */ new Date();
88
106
  pageEntry = {
89
107
  startedDateTime: date.toISOString(),
90
108
  id: page.guid,
91
- title: '',
109
+ title: "",
92
110
  pageTimings: this._options.omitTiming ? {} : {
93
111
  onContentLoad: -1,
94
112
  onLoad: -1
95
113
  }
96
114
  };
97
115
  pageEntry[startedDateSymbol] = date;
98
- page.mainFrame().on(_frames.Frame.Events.AddLifecycle, event => {
99
- if (event === 'load') this._onLoad(page, pageEntry);
100
- if (event === 'domcontentloaded') this._onDOMContentLoaded(page, pageEntry);
116
+ page.mainFrame().on(import_frames.Frame.Events.AddLifecycle, (event) => {
117
+ if (event === "load")
118
+ this._onLoad(page, pageEntry);
119
+ if (event === "domcontentloaded")
120
+ this._onDOMContentLoaded(page, pageEntry);
101
121
  });
102
122
  this._pageEntries.set(page, pageEntry);
103
123
  }
@@ -109,13 +129,12 @@ class HarTracer {
109
129
  title: document.title,
110
130
  domContentLoaded: performance.timing.domContentLoadedEventStart
111
131
  };
112
- }), {
113
- isFunction: true,
114
- world: 'utility'
115
- }).then(result => {
132
+ }), { isFunction: true, world: "utility" }).then((result) => {
116
133
  pageEntry.title = result.title;
117
- if (!this._options.omitTiming) pageEntry.pageTimings.onContentLoad = result.domContentLoaded;
118
- }).catch(() => {});
134
+ if (!this._options.omitTiming)
135
+ pageEntry.pageTimings.onContentLoad = result.domContentLoaded;
136
+ }).catch(() => {
137
+ });
119
138
  this._addBarrier(page, promise);
120
139
  }
121
140
  _onLoad(page, pageEntry) {
@@ -124,45 +143,46 @@ class HarTracer {
124
143
  title: document.title,
125
144
  loaded: performance.timing.loadEventStart
126
145
  };
127
- }), {
128
- isFunction: true,
129
- world: 'utility'
130
- }).then(result => {
146
+ }), { isFunction: true, world: "utility" }).then((result) => {
131
147
  pageEntry.title = result.title;
132
- if (!this._options.omitTiming) pageEntry.pageTimings.onLoad = result.loaded;
133
- }).catch(() => {});
148
+ if (!this._options.omitTiming)
149
+ pageEntry.pageTimings.onLoad = result.loaded;
150
+ }).catch(() => {
151
+ });
134
152
  this._addBarrier(page, promise);
135
153
  }
136
154
  _addBarrier(target, promise) {
137
- if (!target) return null;
138
- if (!this._options.waitForContentOnStop) return;
155
+ if (!target)
156
+ return null;
157
+ if (!this._options.waitForContentOnStop)
158
+ return;
139
159
  const race = target.openScope.safeRace(promise);
140
160
  this._barrierPromises.add(race);
141
161
  race.then(() => this._barrierPromises.delete(race));
142
162
  }
143
163
  _onAPIRequest(event) {
144
- var _event$postData;
145
- if (!this._shouldIncludeEntryWithUrl(event.url.toString())) return;
146
- const harEntry = createHarEntry(event.method, event.url, undefined, this._options);
164
+ if (!this._shouldIncludeEntryWithUrl(event.url.toString()))
165
+ return;
166
+ const harEntry = createHarEntry(event.method, event.url, void 0, this._options);
147
167
  harEntry._apiRequest = true;
148
- if (!this._options.omitCookies) harEntry.request.cookies = event.cookies;
149
- harEntry.request.headers = Object.entries(event.headers).map(([name, value]) => ({
150
- name,
151
- value
152
- }));
153
- harEntry.request.postData = this._postDataForBuffer(event.postData || null, event.headers['content-type'], this._options.content);
154
- if (!this._options.omitSizes) harEntry.request.bodySize = ((_event$postData = event.postData) === null || _event$postData === void 0 ? void 0 : _event$postData.length) || 0;
168
+ if (!this._options.omitCookies)
169
+ harEntry.request.cookies = event.cookies;
170
+ harEntry.request.headers = Object.entries(event.headers).map(([name, value]) => ({ name, value }));
171
+ harEntry.request.postData = this._postDataForBuffer(event.postData || null, event.headers["content-type"], this._options.content);
172
+ if (!this._options.omitSizes)
173
+ harEntry.request.bodySize = event.postData?.length || 0;
155
174
  event[this._entrySymbol] = harEntry;
156
- if (this._started) this._delegate.onEntryStarted(harEntry);
175
+ if (this._started)
176
+ this._delegate.onEntryStarted(harEntry);
157
177
  }
158
178
  _onAPIRequestFinished(event) {
159
- var _event$body$length, _event$body;
160
179
  const harEntry = this._entryForRequest(event.requestEvent);
161
- if (!harEntry) return;
180
+ if (!harEntry)
181
+ return;
162
182
  harEntry.response.status = event.statusCode;
163
183
  harEntry.response.statusText = event.statusMessage;
164
184
  harEntry.response.httpVersion = event.httpVersion;
165
- harEntry.response.redirectURL = event.headers.location || '';
185
+ harEntry.response.redirectURL = event.headers.location || "";
166
186
  if (!this._options.omitServerIP) {
167
187
  harEntry.serverIPAddress = event.serverIPAddress;
168
188
  harEntry._serverPort = event.serverPort;
@@ -171,178 +191,199 @@ class HarTracer {
171
191
  harEntry.timings = event.timings;
172
192
  this._computeHarEntryTotalTime(harEntry);
173
193
  }
174
- if (!this._options.omitSecurityDetails) harEntry._securityDetails = event.securityDetails;
194
+ if (!this._options.omitSecurityDetails)
195
+ harEntry._securityDetails = event.securityDetails;
175
196
  for (let i = 0; i < event.rawHeaders.length; i += 2) {
176
197
  harEntry.response.headers.push({
177
198
  name: event.rawHeaders[i],
178
199
  value: event.rawHeaders[i + 1]
179
200
  });
180
201
  }
181
- harEntry.response.cookies = this._options.omitCookies ? [] : event.cookies.map(c => {
202
+ harEntry.response.cookies = this._options.omitCookies ? [] : event.cookies.map((c) => {
182
203
  return {
183
204
  ...c,
184
- expires: c.expires === -1 ? undefined : safeDateToISOString(c.expires)
205
+ expires: c.expires === -1 ? void 0 : safeDateToISOString(c.expires)
185
206
  };
186
207
  });
187
208
  const content = harEntry.response.content;
188
- const contentType = event.headers['content-type'];
189
- if (contentType) content.mimeType = contentType;
190
- this._storeResponseContent(event.body, content, 'other');
191
- if (!this._options.omitSizes) harEntry.response.bodySize = (_event$body$length = (_event$body = event.body) === null || _event$body === void 0 ? void 0 : _event$body.length) !== null && _event$body$length !== void 0 ? _event$body$length : 0;
192
- if (this._started) this._delegate.onEntryFinished(harEntry);
209
+ const contentType = event.headers["content-type"];
210
+ if (contentType)
211
+ content.mimeType = contentType;
212
+ this._storeResponseContent(event.body, content, "other");
213
+ if (!this._options.omitSizes)
214
+ harEntry.response.bodySize = event.body?.length ?? 0;
215
+ if (this._started)
216
+ this._delegate.onEntryFinished(harEntry);
193
217
  }
194
218
  _onRequest(request) {
195
- var _request$frame, _request$frame2;
196
- if (!this._shouldIncludeEntryWithUrl(request.url())) return;
197
- const page = (_request$frame = request.frame()) === null || _request$frame === void 0 ? void 0 : _request$frame._page;
198
- if (this._page && page !== this._page) return;
199
- const url = network.parsedURL(request.url());
200
- if (!url) return;
219
+ if (!this._shouldIncludeEntryWithUrl(request.url()))
220
+ return;
221
+ const page = request.frame()?._page;
222
+ if (this._page && page !== this._page)
223
+ return;
224
+ const url = network.parseURL(request.url());
225
+ if (!url)
226
+ return;
201
227
  const pageEntry = this._createPageEntryIfNeeded(page);
202
- const harEntry = createHarEntry(request.method(), url, (_request$frame2 = request.frame()) === null || _request$frame2 === void 0 ? void 0 : _request$frame2.guid, this._options);
203
- if (pageEntry) harEntry.pageref = pageEntry.id;
228
+ const harEntry = createHarEntry(request.method(), url, request.frame()?.guid, this._options);
229
+ if (pageEntry)
230
+ harEntry.pageref = pageEntry.id;
204
231
  this._recordRequestHeadersAndCookies(harEntry, request.headers());
205
232
  harEntry.request.postData = this._postDataForRequest(request, this._options.content);
206
- if (!this._options.omitSizes) harEntry.request.bodySize = request.bodySize();
233
+ if (!this._options.omitSizes)
234
+ harEntry.request.bodySize = request.bodySize();
207
235
  if (request.redirectedFrom()) {
208
236
  const fromEntry = this._entryForRequest(request.redirectedFrom());
209
- if (fromEntry) fromEntry.response.redirectURL = request.url();
237
+ if (fromEntry)
238
+ fromEntry.response.redirectURL = request.url();
210
239
  }
211
240
  request[this._entrySymbol] = harEntry;
212
- (0, _utils.assert)(this._started);
241
+ (0, import_utils.assert)(this._started);
213
242
  this._delegate.onEntryStarted(harEntry);
214
243
  }
215
244
  _recordRequestHeadersAndCookies(harEntry, headers) {
216
245
  if (!this._options.omitCookies) {
217
246
  harEntry.request.cookies = [];
218
- for (const header of headers.filter(header => header.name.toLowerCase() === 'cookie')) harEntry.request.cookies.push(...header.value.split(';').map(parseCookie));
247
+ for (const header of headers.filter((header2) => header2.name.toLowerCase() === "cookie"))
248
+ harEntry.request.cookies.push(...header.value.split(";").map(parseCookie));
219
249
  }
220
250
  harEntry.request.headers = headers;
221
251
  }
222
252
  _recordRequestOverrides(harEntry, request) {
223
- if (!request._hasOverrides() || !this._options.recordRequestOverrides) return;
253
+ if (!request._hasOverrides() || !this._options.recordRequestOverrides)
254
+ return;
224
255
  harEntry.request.method = request.method();
225
256
  harEntry.request.url = request.url();
226
257
  harEntry.request.postData = this._postDataForRequest(request, this._options.content);
227
258
  this._recordRequestHeadersAndCookies(harEntry, request.headers());
228
259
  }
229
260
  async _onRequestFinished(request, response) {
230
- var _request$frame3;
231
- if (!response) return;
261
+ if (!response)
262
+ return;
232
263
  const harEntry = this._entryForRequest(request);
233
- if (!harEntry) return;
234
- const page = (_request$frame3 = request.frame()) === null || _request$frame3 === void 0 ? void 0 : _request$frame3._page;
235
-
236
- // In WebKit security details and server ip are reported in Network.loadingFinished, so we populate
237
- // it here to not hang in case of long chunked responses, see https://github.com/microsoft/playwright/issues/21182.
264
+ if (!harEntry)
265
+ return;
266
+ const page = request.frame()?._page;
238
267
  if (!this._options.omitServerIP) {
239
- this._addBarrier(page || request.serviceWorker(), response.serverAddr().then(server => {
240
- if (server !== null && server !== void 0 && server.ipAddress) harEntry.serverIPAddress = server.ipAddress;
241
- if (server !== null && server !== void 0 && server.port) harEntry._serverPort = server.port;
268
+ this._addBarrier(page || request.serviceWorker(), response.serverAddr().then((server) => {
269
+ if (server?.ipAddress)
270
+ harEntry.serverIPAddress = server.ipAddress;
271
+ if (server?.port)
272
+ harEntry._serverPort = server.port;
242
273
  }));
243
274
  }
244
275
  if (!this._options.omitSecurityDetails) {
245
- this._addBarrier(page || request.serviceWorker(), response.securityDetails().then(details => {
246
- if (details) harEntry._securityDetails = details;
276
+ this._addBarrier(page || request.serviceWorker(), response.securityDetails().then((details) => {
277
+ if (details)
278
+ harEntry._securityDetails = details;
247
279
  }));
248
280
  }
249
281
  const httpVersion = response.httpVersion();
250
282
  harEntry.request.httpVersion = httpVersion;
251
283
  harEntry.response.httpVersion = httpVersion;
252
- const compressionCalculationBarrier = this._options.omitSizes ? undefined : {
284
+ const compressionCalculationBarrier = this._options.omitSizes ? void 0 : {
253
285
  _encodedBodySize: -1,
254
286
  _decodedBodySize: -1,
255
- barrier: new _manualPromise.ManualPromise(),
256
- _check: function () {
287
+ barrier: new import_manualPromise.ManualPromise(),
288
+ _check: function() {
257
289
  if (this._encodedBodySize !== -1 && this._decodedBodySize !== -1) {
258
290
  harEntry.response.content.compression = Math.max(0, this._decodedBodySize - this._encodedBodySize);
259
291
  this.barrier.resolve();
260
292
  }
261
293
  },
262
- setEncodedBodySize: function (encodedBodySize) {
294
+ setEncodedBodySize: function(encodedBodySize) {
263
295
  this._encodedBodySize = encodedBodySize;
264
296
  this._check();
265
297
  },
266
- setDecodedBodySize: function (decodedBodySize) {
298
+ setDecodedBodySize: function(decodedBodySize) {
267
299
  this._decodedBodySize = decodedBodySize;
268
300
  this._check();
269
301
  }
270
302
  };
271
- if (compressionCalculationBarrier) this._addBarrier(page || request.serviceWorker(), compressionCalculationBarrier.barrier);
272
- const promise = response.body().then(buffer => {
273
- if (this._options.omitScripts && request.resourceType() === 'script') {
274
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setDecodedBodySize(0);
303
+ if (compressionCalculationBarrier)
304
+ this._addBarrier(page || request.serviceWorker(), compressionCalculationBarrier.barrier);
305
+ const promise = response.body().then((buffer) => {
306
+ if (this._options.omitScripts && request.resourceType() === "script") {
307
+ compressionCalculationBarrier?.setDecodedBodySize(0);
275
308
  return;
276
309
  }
277
310
  const content = harEntry.response.content;
278
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setDecodedBodySize(buffer.length);
311
+ compressionCalculationBarrier?.setDecodedBodySize(buffer.length);
279
312
  this._storeResponseContent(buffer, content, request.resourceType());
280
313
  }).catch(() => {
281
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setDecodedBodySize(0);
314
+ compressionCalculationBarrier?.setDecodedBodySize(0);
282
315
  }).then(() => {
283
- if (this._started) this._delegate.onEntryFinished(harEntry);
316
+ if (this._started)
317
+ this._delegate.onEntryFinished(harEntry);
284
318
  });
285
319
  this._addBarrier(page || request.serviceWorker(), promise);
286
-
287
- // Response end timing is only available after the response event was received.
288
320
  const timing = response.timing();
289
- harEntry.timings.receive = response.request()._responseEndTiming !== -1 ? _helper.helper.millisToRoundishMillis(response.request()._responseEndTiming - timing.responseStart) : -1;
321
+ harEntry.timings.receive = response.request()._responseEndTiming !== -1 ? import_helper.helper.millisToRoundishMillis(response.request()._responseEndTiming - timing.responseStart) : -1;
290
322
  this._computeHarEntryTotalTime(harEntry);
291
323
  if (!this._options.omitSizes) {
292
- this._addBarrier(page || request.serviceWorker(), response.sizes().then(sizes => {
324
+ this._addBarrier(page || request.serviceWorker(), response.sizes().then((sizes) => {
293
325
  harEntry.response.bodySize = sizes.responseBodySize;
294
326
  harEntry.response.headersSize = sizes.responseHeadersSize;
295
327
  harEntry.response._transferSize = sizes.transferSize;
296
328
  harEntry.request.headersSize = sizes.requestHeadersSize;
297
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setEncodedBodySize(sizes.responseBodySize);
329
+ compressionCalculationBarrier?.setEncodedBodySize(sizes.responseBodySize);
298
330
  }));
299
331
  }
300
332
  }
301
333
  async _onRequestFailed(request) {
302
334
  const harEntry = this._entryForRequest(request);
303
- if (!harEntry) return;
304
- if (request._failureText !== null) harEntry.response._failureText = request._failureText;
335
+ if (!harEntry)
336
+ return;
337
+ if (request._failureText !== null)
338
+ harEntry.response._failureText = request._failureText;
305
339
  this._recordRequestOverrides(harEntry, request);
306
- if (this._started) this._delegate.onEntryFinished(harEntry);
340
+ if (this._started)
341
+ this._delegate.onEntryFinished(harEntry);
307
342
  }
308
343
  _onRequestAborted(request) {
309
344
  const harEntry = this._entryForRequest(request);
310
- if (harEntry) harEntry._wasAborted = true;
345
+ if (harEntry)
346
+ harEntry._wasAborted = true;
311
347
  }
312
348
  _onRequestFulfilled(request) {
313
349
  const harEntry = this._entryForRequest(request);
314
- if (harEntry) harEntry._wasFulfilled = true;
350
+ if (harEntry)
351
+ harEntry._wasFulfilled = true;
315
352
  }
316
353
  _onRequestContinued(request) {
317
354
  const harEntry = this._entryForRequest(request);
318
- if (harEntry) harEntry._wasContinued = true;
355
+ if (harEntry)
356
+ harEntry._wasContinued = true;
319
357
  }
320
358
  _storeResponseContent(buffer, content, resourceType) {
321
359
  if (!buffer) {
322
360
  content.size = 0;
323
361
  return;
324
362
  }
325
- if (!this._options.omitSizes) content.size = buffer.length;
326
- if (this._options.content === 'embed') {
327
- // Sometimes, we can receive a font/media file with textual mime type. Browser
328
- // still interprets them correctly, but the 'content-type' header is obviously wrong.
329
- if ((0, _utils.isTextualMimeType)(content.mimeType) && resourceType !== 'font') {
363
+ if (!this._options.omitSizes)
364
+ content.size = buffer.length;
365
+ if (this._options.content === "embed") {
366
+ if ((0, import_utils2.isTextualMimeType)(content.mimeType) && resourceType !== "font") {
330
367
  content.text = buffer.toString();
331
368
  } else {
332
- content.text = buffer.toString('base64');
333
- content.encoding = 'base64';
369
+ content.text = buffer.toString("base64");
370
+ content.encoding = "base64";
334
371
  }
335
- } else if (this._options.content === 'attach') {
336
- const sha1 = (0, _utils.calculateSha1)(buffer) + '.' + (_utilsBundle.mime.getExtension(content.mimeType) || 'dat');
337
- if (this._options.includeTraceInfo) content._sha1 = sha1;else content._file = sha1;
338
- if (this._started) this._delegate.onContentBlob(sha1, buffer);
372
+ } else if (this._options.content === "attach") {
373
+ const sha1 = (0, import_utils.calculateSha1)(buffer) + "." + (import_utilsBundle.mime.getExtension(content.mimeType) || "dat");
374
+ if (this._options.includeTraceInfo)
375
+ content._sha1 = sha1;
376
+ else
377
+ content._file = sha1;
378
+ if (this._started)
379
+ this._delegate.onContentBlob(sha1, buffer);
339
380
  }
340
381
  }
341
382
  _onResponse(response) {
342
- var _response$frame;
343
383
  const harEntry = this._entryForRequest(response.request());
344
- if (!harEntry) return;
345
- const page = (_response$frame = response.frame()) === null || _response$frame === void 0 ? void 0 : _response$frame._page;
384
+ if (!harEntry)
385
+ return;
386
+ const page = response.frame()?._page;
346
387
  const pageEntry = this._createPageEntryIfNeeded(page);
347
388
  const request = response.request();
348
389
  harEntry.response = {
@@ -354,21 +395,22 @@ class HarTracer {
354
395
  headers: [],
355
396
  content: {
356
397
  size: -1,
357
- mimeType: 'x-unknown'
398
+ mimeType: "x-unknown"
358
399
  },
359
400
  headersSize: -1,
360
401
  bodySize: -1,
361
- redirectURL: '',
362
- _transferSize: this._options.omitSizes ? undefined : -1
402
+ redirectURL: "",
403
+ _transferSize: this._options.omitSizes ? void 0 : -1
363
404
  };
364
405
  if (!this._options.omitTiming) {
365
406
  const startDateTime = pageEntry ? pageEntry[startedDateSymbol].valueOf() : 0;
366
407
  const timing = response.timing();
367
- if (pageEntry && startDateTime > timing.startTime) pageEntry.startedDateTime = new Date(timing.startTime).toISOString();
368
- const dns = timing.domainLookupEnd !== -1 ? _helper.helper.millisToRoundishMillis(timing.domainLookupEnd - timing.domainLookupStart) : -1;
369
- const connect = timing.connectEnd !== -1 ? _helper.helper.millisToRoundishMillis(timing.connectEnd - timing.connectStart) : -1;
370
- const ssl = timing.connectEnd !== -1 ? _helper.helper.millisToRoundishMillis(timing.connectEnd - timing.secureConnectionStart) : -1;
371
- const wait = timing.responseStart !== -1 ? _helper.helper.millisToRoundishMillis(timing.responseStart - timing.requestStart) : -1;
408
+ if (pageEntry && startDateTime > timing.startTime)
409
+ pageEntry.startedDateTime = new Date(timing.startTime).toISOString();
410
+ const dns = timing.domainLookupEnd !== -1 ? import_helper.helper.millisToRoundishMillis(timing.domainLookupEnd - timing.domainLookupStart) : -1;
411
+ const connect = timing.connectEnd !== -1 ? import_helper.helper.millisToRoundishMillis(timing.connectEnd - timing.connectStart) : -1;
412
+ const ssl = timing.connectEnd !== -1 ? import_helper.helper.millisToRoundishMillis(timing.connectEnd - timing.secureConnectionStart) : -1;
413
+ const wait = timing.responseStart !== -1 ? import_helper.helper.millisToRoundishMillis(timing.responseStart - timing.requestStart) : -1;
372
414
  const receive = -1;
373
415
  harEntry.timings = {
374
416
  dns,
@@ -381,53 +423,64 @@ class HarTracer {
381
423
  this._computeHarEntryTotalTime(harEntry);
382
424
  }
383
425
  this._recordRequestOverrides(harEntry, request);
384
- this._addBarrier(page || request.serviceWorker(), request.rawRequestHeaders().then(headers => {
426
+ this._addBarrier(page || request.serviceWorker(), request.rawRequestHeaders().then((headers) => {
385
427
  this._recordRequestHeadersAndCookies(harEntry, headers);
386
428
  }));
387
- // Record available headers including redirect location in case the tracing is stopped before
388
- // response extra info is received (in Chromium).
389
429
  this._recordResponseHeaders(harEntry, response.headers());
390
- this._addBarrier(page || request.serviceWorker(), response.rawResponseHeaders().then(headers => {
430
+ this._addBarrier(page || request.serviceWorker(), response.rawResponseHeaders().then((headers) => {
391
431
  this._recordResponseHeaders(harEntry, headers);
392
432
  }));
393
433
  }
394
434
  _recordResponseHeaders(harEntry, headers) {
395
435
  if (!this._options.omitCookies) {
396
- harEntry.response.cookies = headers.filter(header => header.name.toLowerCase() === 'set-cookie').map(header => parseCookie(header.value));
436
+ harEntry.response.cookies = headers.filter((header) => header.name.toLowerCase() === "set-cookie").map((header) => parseCookie(header.value));
397
437
  }
398
438
  harEntry.response.headers = headers;
399
- const contentType = headers.find(header => header.name.toLowerCase() === 'content-type');
400
- if (contentType) harEntry.response.content.mimeType = contentType.value;
439
+ const contentType = headers.find((header) => header.name.toLowerCase() === "content-type");
440
+ if (contentType)
441
+ harEntry.response.content.mimeType = contentType.value;
401
442
  }
402
443
  _computeHarEntryTotalTime(harEntry) {
403
- harEntry.time = [harEntry.timings.dns, harEntry.timings.connect, harEntry.timings.ssl, harEntry.timings.wait, harEntry.timings.receive].reduce((pre, cur) => (cur || -1) > 0 ? cur + pre : pre, 0);
444
+ harEntry.time = [
445
+ harEntry.timings.dns,
446
+ harEntry.timings.connect,
447
+ harEntry.timings.ssl,
448
+ harEntry.timings.wait,
449
+ harEntry.timings.receive
450
+ ].reduce((pre, cur) => (cur || -1) > 0 ? cur + pre : pre, 0);
404
451
  }
405
452
  async flush() {
406
453
  await Promise.all(this._barrierPromises);
407
454
  }
408
455
  stop() {
409
456
  this._started = false;
410
- _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
457
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
411
458
  this._barrierPromises.clear();
412
- const context = this._context instanceof _browserContext.BrowserContext ? this._context : undefined;
459
+ const context = this._context instanceof import_browserContext.BrowserContext ? this._context : void 0;
413
460
  const log = {
414
- version: '1.2',
461
+ version: "1.2",
415
462
  creator: {
416
- name: 'Playwright',
417
- version: (0, _utils.getPlaywrightVersion)()
463
+ name: "Playwright",
464
+ version: (0, import_utils2.getPlaywrightVersion)()
418
465
  },
419
466
  browser: {
420
- name: (context === null || context === void 0 ? void 0 : context._browser.options.name) || '',
421
- version: (context === null || context === void 0 ? void 0 : context._browser.version()) || ''
467
+ name: context?._browser.options.name || "",
468
+ version: context?._browser.version() || ""
422
469
  },
423
- pages: this._pageEntries.size ? Array.from(this._pageEntries.values()) : undefined,
470
+ pages: this._pageEntries.size ? Array.from(this._pageEntries.values()) : void 0,
424
471
  entries: []
425
472
  };
426
473
  if (!this._options.omitTiming) {
427
474
  for (const pageEntry of log.pages || []) {
428
475
  const startDateTime = pageEntry[startedDateSymbol].valueOf();
429
- if (typeof pageEntry.pageTimings.onContentLoad === 'number' && pageEntry.pageTimings.onContentLoad >= 0) pageEntry.pageTimings.onContentLoad -= startDateTime;else pageEntry.pageTimings.onContentLoad = -1;
430
- if (typeof pageEntry.pageTimings.onLoad === 'number' && pageEntry.pageTimings.onLoad >= 0) pageEntry.pageTimings.onLoad -= startDateTime;else pageEntry.pageTimings.onLoad = -1;
476
+ if (typeof pageEntry.pageTimings.onContentLoad === "number" && pageEntry.pageTimings.onContentLoad >= 0)
477
+ pageEntry.pageTimings.onContentLoad -= startDateTime;
478
+ else
479
+ pageEntry.pageTimings.onContentLoad = -1;
480
+ if (typeof pageEntry.pageTimings.onLoad === "number" && pageEntry.pageTimings.onLoad >= 0)
481
+ pageEntry.pageTimings.onLoad -= startDateTime;
482
+ else
483
+ pageEntry.pageTimings.onLoad = -1;
431
484
  }
432
485
  }
433
486
  this._pageEntries.clear();
@@ -435,69 +488,68 @@ class HarTracer {
435
488
  }
436
489
  _postDataForRequest(request, content) {
437
490
  const postData = request.postDataBuffer();
438
- if (!postData) return;
439
- const contentType = request.headerValue('content-type');
491
+ if (!postData)
492
+ return;
493
+ const contentType = request.headerValue("content-type");
440
494
  return this._postDataForBuffer(postData, contentType, content);
441
495
  }
442
496
  _postDataForBuffer(postData, contentType, content) {
443
- var _contentType;
444
- if (!postData) return;
445
- (_contentType = contentType) !== null && _contentType !== void 0 ? _contentType : contentType = 'application/octet-stream';
497
+ if (!postData)
498
+ return;
499
+ contentType ??= "application/octet-stream";
446
500
  const result = {
447
501
  mimeType: contentType,
448
- text: '',
502
+ text: "",
449
503
  params: []
450
504
  };
451
- if (content === 'embed' && contentType !== 'application/octet-stream') result.text = postData.toString();
452
- if (content === 'attach') {
453
- const sha1 = (0, _utils.calculateSha1)(postData) + '.' + (_utilsBundle.mime.getExtension(contentType) || 'dat');
454
- if (this._options.includeTraceInfo) result._sha1 = sha1;else result._file = sha1;
505
+ if (content === "embed" && contentType !== "application/octet-stream")
506
+ result.text = postData.toString();
507
+ if (content === "attach") {
508
+ const sha1 = (0, import_utils.calculateSha1)(postData) + "." + (import_utilsBundle.mime.getExtension(contentType) || "dat");
509
+ if (this._options.includeTraceInfo)
510
+ result._sha1 = sha1;
511
+ else
512
+ result._file = sha1;
455
513
  this._delegate.onContentBlob(sha1, postData);
456
514
  }
457
- if (contentType === 'application/x-www-form-urlencoded') {
515
+ if (contentType === "application/x-www-form-urlencoded") {
458
516
  const parsed = new URLSearchParams(postData.toString());
459
- for (const [name, value] of parsed.entries()) result.params.push({
460
- name,
461
- value
462
- });
517
+ for (const [name, value] of parsed.entries())
518
+ result.params.push({ name, value });
463
519
  }
464
520
  return result;
465
521
  }
466
522
  }
467
- exports.HarTracer = HarTracer;
468
523
  function createHarEntry(method, url, frameref, options) {
469
524
  const harEntry = {
470
- _frameref: options.includeTraceInfo ? frameref : undefined,
471
- _monotonicTime: options.includeTraceInfo ? (0, _utils.monotonicTime)() : undefined,
472
- startedDateTime: new Date().toISOString(),
525
+ _frameref: options.includeTraceInfo ? frameref : void 0,
526
+ _monotonicTime: options.includeTraceInfo ? (0, import_utils.monotonicTime)() : void 0,
527
+ startedDateTime: (/* @__PURE__ */ new Date()).toISOString(),
473
528
  time: -1,
474
529
  request: {
475
- method: method,
530
+ method,
476
531
  url: url.toString(),
477
532
  httpVersion: FALLBACK_HTTP_VERSION,
478
533
  cookies: [],
479
534
  headers: [],
480
- queryString: [...url.searchParams].map(e => ({
481
- name: e[0],
482
- value: e[1]
483
- })),
535
+ queryString: [...url.searchParams].map((e) => ({ name: e[0], value: e[1] })),
484
536
  headersSize: -1,
485
537
  bodySize: -1
486
538
  },
487
539
  response: {
488
540
  status: -1,
489
- statusText: '',
541
+ statusText: "",
490
542
  httpVersion: FALLBACK_HTTP_VERSION,
491
543
  cookies: [],
492
544
  headers: [],
493
545
  content: {
494
546
  size: -1,
495
- mimeType: 'x-unknown'
547
+ mimeType: "x-unknown"
496
548
  },
497
549
  headersSize: -1,
498
550
  bodySize: -1,
499
- redirectURL: '',
500
- _transferSize: options.omitSizes ? undefined : -1
551
+ redirectURL: "",
552
+ _transferSize: options.omitSizes ? void 0 : -1
501
553
  },
502
554
  cache: {},
503
555
  timings: {
@@ -510,33 +562,45 @@ function createHarEntry(method, url, frameref, options) {
510
562
  }
511
563
  function parseCookie(c) {
512
564
  const cookie = {
513
- name: '',
514
- value: ''
565
+ name: "",
566
+ value: ""
515
567
  };
516
568
  let first = true;
517
569
  for (const pair of c.split(/; */)) {
518
- const indexOfEquals = pair.indexOf('=');
570
+ const indexOfEquals = pair.indexOf("=");
519
571
  const name = indexOfEquals !== -1 ? pair.substr(0, indexOfEquals).trim() : pair.trim();
520
- const value = indexOfEquals !== -1 ? pair.substr(indexOfEquals + 1, pair.length).trim() : '';
572
+ const value = indexOfEquals !== -1 ? pair.substr(indexOfEquals + 1, pair.length).trim() : "";
521
573
  if (first) {
522
574
  first = false;
523
575
  cookie.name = name;
524
576
  cookie.value = value;
525
577
  continue;
526
578
  }
527
- if (name === 'Domain') cookie.domain = value;
528
- if (name === 'Expires') cookie.expires = safeDateToISOString(value);
529
- if (name === 'HttpOnly') cookie.httpOnly = true;
530
- if (name === 'Max-Age') cookie.expires = safeDateToISOString(Date.now() + +value * 1000);
531
- if (name === 'Path') cookie.path = value;
532
- if (name === 'SameSite') cookie.sameSite = value;
533
- if (name === 'Secure') cookie.secure = true;
579
+ if (name === "Domain")
580
+ cookie.domain = value;
581
+ if (name === "Expires")
582
+ cookie.expires = safeDateToISOString(value);
583
+ if (name === "HttpOnly")
584
+ cookie.httpOnly = true;
585
+ if (name === "Max-Age")
586
+ cookie.expires = safeDateToISOString(Date.now() + +value * 1e3);
587
+ if (name === "Path")
588
+ cookie.path = value;
589
+ if (name === "SameSite")
590
+ cookie.sameSite = value;
591
+ if (name === "Secure")
592
+ cookie.secure = true;
534
593
  }
535
594
  return cookie;
536
595
  }
537
596
  function safeDateToISOString(value) {
538
597
  try {
539
598
  return new Date(value).toISOString();
540
- } catch (e) {}
599
+ } catch (e) {
600
+ }
541
601
  }
542
- const startedDateSymbol = Symbol('startedDate');
602
+ const startedDateSymbol = Symbol("startedDate");
603
+ // Annotate the CommonJS export names for ESM import in node:
604
+ 0 && (module.exports = {
605
+ HarTracer
606
+ });