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

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 +89 -112
  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,111 +1,94 @@
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 crConnection_exports = {};
20
+ __export(crConnection_exports, {
21
+ CDPSession: () => CDPSession,
22
+ CRConnection: () => CRConnection,
23
+ CRSession: () => CRSession,
24
+ ConnectionEvents: () => ConnectionEvents,
25
+ kBrowserCloseMessageId: () => kBrowserCloseMessageId
5
26
  });
6
- exports.kBrowserCloseMessageId = exports.ConnectionEvents = exports.CRSession = exports.CRConnection = exports.CDPSession = void 0;
7
- var _events = require("events");
8
- var _utils = require("../../utils");
9
- var _debugLogger = require("../utils/debugLogger");
10
- var _helper = require("../helper");
11
- var _protocolError = require("../protocolError");
12
- /**
13
- * Copyright 2017 Google Inc. All rights reserved.
14
- * Modifications copyright (c) Microsoft Corporation.
15
- *
16
- * Licensed under the Apache License, Version 2.0 (the "License");
17
- * you may not use this file except in compliance with the License.
18
- * You may obtain a copy of the License at
19
- *
20
- * http://www.apache.org/licenses/LICENSE-2.0
21
- *
22
- * Unless required by applicable law or agreed to in writing, software
23
- * distributed under the License is distributed on an "AS IS" BASIS,
24
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
- * See the License for the specific language governing permissions and
26
- * limitations under the License.
27
- */
28
-
29
- const ConnectionEvents = exports.ConnectionEvents = {
30
- Disconnected: Symbol('ConnectionEvents.Disconnected')
27
+ module.exports = __toCommonJS(crConnection_exports);
28
+ var import_utils = require("../../utils");
29
+ var import_debugLogger = require("../utils/debugLogger");
30
+ var import_helper = require("../helper");
31
+ var import_protocolError = require("../protocolError");
32
+ var import_instrumentation = require("../instrumentation");
33
+ const ConnectionEvents = {
34
+ Disconnected: Symbol("ConnectionEvents.Disconnected")
31
35
  };
32
-
33
- // CRPlaywright uses this special id to issue Browser.close command which we
34
- // should ignore.
35
- const kBrowserCloseMessageId = exports.kBrowserCloseMessageId = -9999;
36
- class CRConnection extends _events.EventEmitter {
37
- constructor(transport, protocolLogger, browserLogsCollector) {
38
- super();
36
+ const kBrowserCloseMessageId = -9999;
37
+ class CRConnection extends import_instrumentation.SdkObject {
38
+ constructor(parent, transport, protocolLogger, browserLogsCollector) {
39
+ super(parent, "cr-connection");
39
40
  this._lastId = 0;
40
- this._transport = void 0;
41
- this._sessions = new Map();
42
- this._protocolLogger = void 0;
43
- this._browserLogsCollector = void 0;
44
- this._browserDisconnectedLogs = void 0;
45
- this.rootSession = void 0;
41
+ this._sessions = /* @__PURE__ */ new Map();
46
42
  this._closed = false;
47
43
  this.setMaxListeners(0);
48
44
  this._transport = transport;
49
45
  this._protocolLogger = protocolLogger;
50
46
  this._browserLogsCollector = browserLogsCollector;
51
- this.rootSession = new CRSession(this, null, '');
52
- this._sessions.set('', this.rootSession);
47
+ this.rootSession = new CRSession(this, null, "");
48
+ this._sessions.set("", this.rootSession);
53
49
  this._transport.onmessage = this._onMessage.bind(this);
54
- // onclose should be set last, since it can be immediately called.
55
50
  this._transport.onclose = this._onClose.bind(this);
56
51
  }
57
52
  _rawSend(sessionId, method, params) {
58
53
  const id = ++this._lastId;
59
- const message = {
60
- id,
61
- method,
62
- params
63
- };
64
- if (sessionId) message.sessionId = sessionId;
65
- this._protocolLogger('send', message);
54
+ const message = { id, method, params };
55
+ if (sessionId)
56
+ message.sessionId = sessionId;
57
+ this._protocolLogger("send", message);
66
58
  this._transport.send(message);
67
59
  return id;
68
60
  }
69
61
  async _onMessage(message) {
70
- this._protocolLogger('receive', message);
71
- if (message.id === kBrowserCloseMessageId) return;
72
- const session = this._sessions.get(message.sessionId || '');
73
- if (session) session._onMessage(message);
62
+ this._protocolLogger("receive", message);
63
+ if (message.id === kBrowserCloseMessageId)
64
+ return;
65
+ const session = this._sessions.get(message.sessionId || "");
66
+ if (session)
67
+ session._onMessage(message);
74
68
  }
75
69
  _onClose(reason) {
76
70
  this._closed = true;
77
- this._transport.onmessage = undefined;
78
- this._transport.onclose = undefined;
79
- this._browserDisconnectedLogs = _helper.helper.formatBrowserLogs(this._browserLogsCollector.recentLogs(), reason);
71
+ this._transport.onmessage = void 0;
72
+ this._transport.onclose = void 0;
73
+ this._browserDisconnectedLogs = import_helper.helper.formatBrowserLogs(this._browserLogsCollector.recentLogs(), reason);
80
74
  this.rootSession.dispose();
81
75
  Promise.resolve().then(() => this.emit(ConnectionEvents.Disconnected));
82
76
  }
83
77
  close() {
84
- if (!this._closed) this._transport.close();
78
+ if (!this._closed)
79
+ this._transport.close();
85
80
  }
86
81
  async createBrowserSession() {
87
- const {
88
- sessionId
89
- } = await this.rootSession.send('Target.attachToBrowserTarget');
82
+ const { sessionId } = await this.rootSession.send("Target.attachToBrowserTarget");
90
83
  return new CDPSession(this.rootSession, sessionId);
91
84
  }
92
85
  }
93
- exports.CRConnection = CRConnection;
94
- class CRSession extends _events.EventEmitter {
86
+ class CRSession extends import_instrumentation.SdkObject {
95
87
  constructor(connection, parentSession, sessionId, eventListener) {
96
- super();
97
- this._connection = void 0;
98
- this._eventListener = void 0;
99
- this._callbacks = new Map();
100
- this._sessionId = void 0;
101
- this._parentSession = void 0;
88
+ super(connection, "cr-session");
89
+ this._callbacks = /* @__PURE__ */ new Map();
102
90
  this._crashed = false;
103
91
  this._closed = false;
104
- this.on = void 0;
105
- this.addListener = void 0;
106
- this.off = void 0;
107
- this.removeListener = void 0;
108
- this.once = void 0;
109
92
  this.setMaxListeners(0);
110
93
  this._connection = connection;
111
94
  this._parentSession = parentSession;
@@ -126,21 +109,17 @@ class CRSession extends _events.EventEmitter {
126
109
  return session;
127
110
  }
128
111
  async send(method, params) {
129
- if (this._crashed || this._closed || this._connection._closed || this._connection._browserDisconnectedLogs) throw new _protocolError.ProtocolError(this._crashed ? 'crashed' : 'closed', undefined, this._connection._browserDisconnectedLogs);
112
+ if (this._crashed || this._closed || this._connection._closed || this._connection._browserDisconnectedLogs)
113
+ throw new import_protocolError.ProtocolError(this._crashed ? "crashed" : "closed", void 0, this._connection._browserDisconnectedLogs);
130
114
  const id = this._connection._rawSend(this._sessionId, method, params);
131
115
  return new Promise((resolve, reject) => {
132
- this._callbacks.set(id, {
133
- resolve,
134
- reject,
135
- error: new _protocolError.ProtocolError('error', method)
136
- });
116
+ this._callbacks.set(id, { resolve, reject, error: new import_protocolError.ProtocolError("error", method) });
137
117
  });
138
118
  }
139
119
  _sendMayFail(method, params) {
140
- return this.send(method, params).catch(error => _debugLogger.debugLogger.log('error', error));
120
+ return this.send(method, params).catch((error) => import_debugLogger.debugLogger.log("error", error));
141
121
  }
142
122
  _onMessage(object) {
143
- var _object$error;
144
123
  if (object.id && this._callbacks.has(object.id)) {
145
124
  const callback = this._callbacks.get(object.id);
146
125
  this._callbacks.delete(object.id);
@@ -150,26 +129,23 @@ class CRSession extends _events.EventEmitter {
150
129
  } else {
151
130
  callback.resolve(object.result);
152
131
  }
153
- } else if (object.id && ((_object$error = object.error) === null || _object$error === void 0 ? void 0 : _object$error.code) === -32001) {
154
- // Message to a closed session, just ignore it.
132
+ } else if (object.id && object.error?.code === -32001) {
155
133
  } else {
156
- var _object$error2;
157
- (0, _utils.assert)(!object.id, (object === null || object === void 0 || (_object$error2 = object.error) === null || _object$error2 === void 0 ? void 0 : _object$error2.message) || undefined);
134
+ (0, import_utils.assert)(!object.id, object?.error?.message || void 0);
158
135
  Promise.resolve().then(() => {
159
- if (this._eventListener) this._eventListener(object.method, object.params);
136
+ if (this._eventListener)
137
+ this._eventListener(object.method, object.params);
160
138
  this.emit(object.method, object.params);
161
139
  });
162
140
  }
163
141
  }
164
142
  async detach() {
165
- if (this._closed) throw new Error(`Session already detached. Most likely the page has been closed.`);
166
- if (!this._parentSession) throw new Error('Root session cannot be closed');
167
- // Ideally, detaching should resume any target, but there is a bug in the backend,
168
- // so we must Runtime.runIfWaitingForDebugger first.
169
- await this._sendMayFail('Runtime.runIfWaitingForDebugger');
170
- await this._parentSession.send('Target.detachFromTarget', {
171
- sessionId: this._sessionId
172
- });
143
+ if (this._closed)
144
+ throw new Error(`Session already detached. Most likely the page has been closed.`);
145
+ if (!this._parentSession)
146
+ throw new Error("Root session cannot be closed");
147
+ await this._sendMayFail("Runtime.runIfWaitingForDebugger");
148
+ await this._parentSession.send("Target.detachFromTarget", { sessionId: this._sessionId });
173
149
  this.dispose();
174
150
  }
175
151
  dispose() {
@@ -177,29 +153,29 @@ class CRSession extends _events.EventEmitter {
177
153
  this._connection._sessions.delete(this._sessionId);
178
154
  for (const callback of this._callbacks.values()) {
179
155
  callback.error.setMessage(`Internal server error, session closed.`);
180
- callback.error.type = this._crashed ? 'crashed' : 'closed';
156
+ callback.error.type = this._crashed ? "crashed" : "closed";
181
157
  callback.error.logs = this._connection._browserDisconnectedLogs;
182
158
  callback.reject(callback.error);
183
159
  }
184
160
  this._callbacks.clear();
185
161
  }
186
162
  }
187
- exports.CRSession = CRSession;
188
- class CDPSession extends _events.EventEmitter {
163
+ class CDPSession extends import_instrumentation.SdkObject {
189
164
  constructor(parentSession, sessionId) {
190
- super();
191
- this.guid = void 0;
192
- this._session = void 0;
165
+ super(parentSession, "cdp-session");
193
166
  this._listeners = [];
194
- this.guid = `cdp-session@${sessionId}`;
195
- this._session = parentSession.createChildSession(sessionId, (method, params) => this.emit(CDPSession.Events.Event, {
196
- method,
197
- params
198
- }));
199
- this._listeners = [_utils.eventsHelper.addEventListener(parentSession, 'Target.detachedFromTarget', event => {
200
- if (event.sessionId === sessionId) this._onClose();
167
+ this._session = parentSession.createChildSession(sessionId, (method, params) => this.emit(CDPSession.Events.Event, { method, params }));
168
+ this._listeners = [import_utils.eventsHelper.addEventListener(parentSession, "Target.detachedFromTarget", (event) => {
169
+ if (event.sessionId === sessionId)
170
+ this._onClose();
201
171
  })];
202
172
  }
173
+ static {
174
+ this.Events = {
175
+ Event: "event",
176
+ Closed: "close"
177
+ };
178
+ }
203
179
  async send(method, params) {
204
180
  return await this._session.send(method, params);
205
181
  }
@@ -207,22 +183,20 @@ class CDPSession extends _events.EventEmitter {
207
183
  return await this._session.detach();
208
184
  }
209
185
  async attachToTarget(targetId) {
210
- const {
211
- sessionId
212
- } = await this.send('Target.attachToTarget', {
213
- targetId,
214
- flatten: true
215
- });
186
+ const { sessionId } = await this.send("Target.attachToTarget", { targetId, flatten: true });
216
187
  return new CDPSession(this._session, sessionId);
217
188
  }
218
189
  _onClose() {
219
- _utils.eventsHelper.removeEventListeners(this._listeners);
190
+ import_utils.eventsHelper.removeEventListeners(this._listeners);
220
191
  this._session.dispose();
221
192
  this.emit(CDPSession.Events.Closed);
222
193
  }
223
194
  }
224
- exports.CDPSession = CDPSession;
225
- CDPSession.Events = {
226
- Event: 'event',
227
- Closed: 'close'
228
- };
195
+ // Annotate the CommonJS export names for ESM import in node:
196
+ 0 && (module.exports = {
197
+ CDPSession,
198
+ CRConnection,
199
+ CRSession,
200
+ ConnectionEvents,
201
+ kBrowserCloseMessageId
202
+ });
@@ -1,67 +1,60 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var crCoverage_exports = {};
20
+ __export(crCoverage_exports, {
21
+ CRCoverage: () => CRCoverage
5
22
  });
6
- exports.CRCoverage = void 0;
7
- var _utils = require("../../utils");
8
- var _eventsHelper = require("../utils/eventsHelper");
9
- /**
10
- * Copyright 2017 Google Inc. All rights reserved.
11
- * Modifications copyright (c) Microsoft Corporation.
12
- *
13
- * Licensed under the Apache License, Version 2.0 (the "License");
14
- * you may not use this file except in compliance with the License.
15
- * You may obtain a copy of the License at
16
- *
17
- * http://www.apache.org/licenses/LICENSE-2.0
18
- *
19
- * Unless required by applicable law or agreed to in writing, software
20
- * distributed under the License is distributed on an "AS IS" BASIS,
21
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
- * See the License for the specific language governing permissions and
23
- * limitations under the License.
24
- */
25
-
23
+ module.exports = __toCommonJS(crCoverage_exports);
24
+ var import_utils = require("../../utils");
25
+ var import_eventsHelper = require("../utils/eventsHelper");
26
26
  class CRCoverage {
27
27
  constructor(client) {
28
- this._jsCoverage = void 0;
29
- this._cssCoverage = void 0;
30
28
  this._jsCoverage = new JSCoverage(client);
31
29
  this._cssCoverage = new CSSCoverage(client);
32
30
  }
33
- async startJSCoverage(options) {
34
- return await this._jsCoverage.start(options);
31
+ async startJSCoverage(progress, options) {
32
+ progress.cleanupWhenAborted(() => this._jsCoverage.stop());
33
+ await progress.race(this._jsCoverage.start(options));
35
34
  }
36
35
  async stopJSCoverage() {
37
36
  return await this._jsCoverage.stop();
38
37
  }
39
- async startCSSCoverage(options) {
40
- return await this._cssCoverage.start(options);
38
+ async startCSSCoverage(progress, options) {
39
+ progress.cleanupWhenAborted(() => this._cssCoverage.stop());
40
+ await progress.race(this._cssCoverage.start(options));
41
41
  }
42
42
  async stopCSSCoverage() {
43
43
  return await this._cssCoverage.stop();
44
44
  }
45
45
  }
46
- exports.CRCoverage = CRCoverage;
47
46
  class JSCoverage {
48
47
  constructor(client) {
49
- this._client = void 0;
50
- this._enabled = void 0;
51
- this._scriptIds = void 0;
52
- this._scriptSources = void 0;
53
- this._eventListeners = void 0;
54
- this._resetOnNavigation = void 0;
55
48
  this._reportAnonymousScripts = false;
56
49
  this._client = client;
57
50
  this._enabled = false;
58
- this._scriptIds = new Set();
59
- this._scriptSources = new Map();
51
+ this._scriptIds = /* @__PURE__ */ new Set();
52
+ this._scriptSources = /* @__PURE__ */ new Map();
60
53
  this._eventListeners = [];
61
54
  this._resetOnNavigation = false;
62
55
  }
63
56
  async start(options) {
64
- (0, _utils.assert)(!this._enabled, 'JSCoverage is already enabled');
57
+ (0, import_utils.assert)(!this._enabled, "JSCoverage is already enabled");
65
58
  const {
66
59
  resetOnNavigation = true,
67
60
  reportAnonymousScripts = false
@@ -71,106 +64,114 @@ class JSCoverage {
71
64
  this._enabled = true;
72
65
  this._scriptIds.clear();
73
66
  this._scriptSources.clear();
74
- this._eventListeners = [_eventsHelper.eventsHelper.addEventListener(this._client, 'Debugger.scriptParsed', this._onScriptParsed.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._client, 'Runtime.executionContextsCleared', this._onExecutionContextsCleared.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._client, 'Debugger.paused', this._onDebuggerPaused.bind(this))];
75
- await Promise.all([this._client.send('Profiler.enable'), this._client.send('Profiler.startPreciseCoverage', {
76
- callCount: true,
77
- detailed: true
78
- }), this._client.send('Debugger.enable'), this._client.send('Debugger.setSkipAllPauses', {
79
- skip: true
80
- })]);
67
+ this._eventListeners = [
68
+ import_eventsHelper.eventsHelper.addEventListener(this._client, "Debugger.scriptParsed", this._onScriptParsed.bind(this)),
69
+ import_eventsHelper.eventsHelper.addEventListener(this._client, "Runtime.executionContextsCleared", this._onExecutionContextsCleared.bind(this)),
70
+ import_eventsHelper.eventsHelper.addEventListener(this._client, "Debugger.paused", this._onDebuggerPaused.bind(this))
71
+ ];
72
+ await Promise.all([
73
+ this._client.send("Profiler.enable"),
74
+ this._client.send("Profiler.startPreciseCoverage", { callCount: true, detailed: true }),
75
+ this._client.send("Debugger.enable"),
76
+ this._client.send("Debugger.setSkipAllPauses", { skip: true })
77
+ ]);
81
78
  }
82
79
  _onDebuggerPaused() {
83
- this._client.send('Debugger.resume');
80
+ this._client.send("Debugger.resume");
84
81
  }
85
82
  _onExecutionContextsCleared() {
86
- if (!this._resetOnNavigation) return;
83
+ if (!this._resetOnNavigation)
84
+ return;
87
85
  this._scriptIds.clear();
88
86
  this._scriptSources.clear();
89
87
  }
90
88
  async _onScriptParsed(event) {
91
89
  this._scriptIds.add(event.scriptId);
92
- // Ignore other anonymous scripts unless the reportAnonymousScripts option is true.
93
- if (!event.url && !this._reportAnonymousScripts) return;
94
- // This might fail if the page has already navigated away.
95
- const response = await this._client._sendMayFail('Debugger.getScriptSource', {
96
- scriptId: event.scriptId
97
- });
98
- if (response) this._scriptSources.set(event.scriptId, response.scriptSource);
90
+ if (!event.url && !this._reportAnonymousScripts)
91
+ return;
92
+ const response = await this._client._sendMayFail("Debugger.getScriptSource", { scriptId: event.scriptId });
93
+ if (response)
94
+ this._scriptSources.set(event.scriptId, response.scriptSource);
99
95
  }
100
96
  async stop() {
101
- (0, _utils.assert)(this._enabled, 'JSCoverage is not enabled');
97
+ if (!this._enabled)
98
+ return { entries: [] };
99
+ const [profileResponse] = await Promise.all([
100
+ this._client.send("Profiler.takePreciseCoverage"),
101
+ this._client.send("Profiler.stopPreciseCoverage"),
102
+ this._client.send("Profiler.disable"),
103
+ this._client.send("Debugger.disable")
104
+ ]);
105
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
102
106
  this._enabled = false;
103
- const [profileResponse] = await Promise.all([this._client.send('Profiler.takePreciseCoverage'), this._client.send('Profiler.stopPreciseCoverage'), this._client.send('Profiler.disable'), this._client.send('Debugger.disable')]);
104
- _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
105
- const coverage = {
106
- entries: []
107
- };
107
+ const coverage = { entries: [] };
108
108
  for (const entry of profileResponse.result) {
109
- if (!this._scriptIds.has(entry.scriptId)) continue;
110
- if (!entry.url && !this._reportAnonymousScripts) continue;
109
+ if (!this._scriptIds.has(entry.scriptId))
110
+ continue;
111
+ if (!entry.url && !this._reportAnonymousScripts)
112
+ continue;
111
113
  const source = this._scriptSources.get(entry.scriptId);
112
- if (source) coverage.entries.push({
113
- ...entry,
114
- source
115
- });else coverage.entries.push(entry);
114
+ if (source)
115
+ coverage.entries.push({ ...entry, source });
116
+ else
117
+ coverage.entries.push(entry);
116
118
  }
117
119
  return coverage;
118
120
  }
119
121
  }
120
122
  class CSSCoverage {
121
123
  constructor(client) {
122
- this._client = void 0;
123
- this._enabled = void 0;
124
- this._stylesheetURLs = void 0;
125
- this._stylesheetSources = void 0;
126
- this._eventListeners = void 0;
127
- this._resetOnNavigation = void 0;
128
124
  this._client = client;
129
125
  this._enabled = false;
130
- this._stylesheetURLs = new Map();
131
- this._stylesheetSources = new Map();
126
+ this._stylesheetURLs = /* @__PURE__ */ new Map();
127
+ this._stylesheetSources = /* @__PURE__ */ new Map();
132
128
  this._eventListeners = [];
133
129
  this._resetOnNavigation = false;
134
130
  }
135
131
  async start(options) {
136
- (0, _utils.assert)(!this._enabled, 'CSSCoverage is already enabled');
137
- const {
138
- resetOnNavigation = true
139
- } = options;
132
+ (0, import_utils.assert)(!this._enabled, "CSSCoverage is already enabled");
133
+ const { resetOnNavigation = true } = options;
140
134
  this._resetOnNavigation = resetOnNavigation;
141
135
  this._enabled = true;
142
136
  this._stylesheetURLs.clear();
143
137
  this._stylesheetSources.clear();
144
- this._eventListeners = [_eventsHelper.eventsHelper.addEventListener(this._client, 'CSS.styleSheetAdded', this._onStyleSheet.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._client, 'Runtime.executionContextsCleared', this._onExecutionContextsCleared.bind(this))];
145
- await Promise.all([this._client.send('DOM.enable'), this._client.send('CSS.enable'), this._client.send('CSS.startRuleUsageTracking')]);
138
+ this._eventListeners = [
139
+ import_eventsHelper.eventsHelper.addEventListener(this._client, "CSS.styleSheetAdded", this._onStyleSheet.bind(this)),
140
+ import_eventsHelper.eventsHelper.addEventListener(this._client, "Runtime.executionContextsCleared", this._onExecutionContextsCleared.bind(this))
141
+ ];
142
+ await Promise.all([
143
+ this._client.send("DOM.enable"),
144
+ this._client.send("CSS.enable"),
145
+ this._client.send("CSS.startRuleUsageTracking")
146
+ ]);
146
147
  }
147
148
  _onExecutionContextsCleared() {
148
- if (!this._resetOnNavigation) return;
149
+ if (!this._resetOnNavigation)
150
+ return;
149
151
  this._stylesheetURLs.clear();
150
152
  this._stylesheetSources.clear();
151
153
  }
152
154
  async _onStyleSheet(event) {
153
155
  const header = event.header;
154
- // Ignore anonymous scripts
155
- if (!header.sourceURL) return;
156
- // This might fail if the page has already navigated away.
157
- const response = await this._client._sendMayFail('CSS.getStyleSheetText', {
158
- styleSheetId: header.styleSheetId
159
- });
156
+ if (!header.sourceURL)
157
+ return;
158
+ const response = await this._client._sendMayFail("CSS.getStyleSheetText", { styleSheetId: header.styleSheetId });
160
159
  if (response) {
161
160
  this._stylesheetURLs.set(header.styleSheetId, header.sourceURL);
162
161
  this._stylesheetSources.set(header.styleSheetId, response.text);
163
162
  }
164
163
  }
165
164
  async stop() {
166
- (0, _utils.assert)(this._enabled, 'CSSCoverage is not enabled');
165
+ if (!this._enabled)
166
+ return { entries: [] };
167
+ const ruleTrackingResponse = await this._client.send("CSS.stopRuleUsageTracking");
168
+ await Promise.all([
169
+ this._client.send("CSS.disable"),
170
+ this._client.send("DOM.disable")
171
+ ]);
172
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
167
173
  this._enabled = false;
168
- const ruleTrackingResponse = await this._client.send('CSS.stopRuleUsageTracking');
169
- await Promise.all([this._client.send('CSS.disable'), this._client.send('DOM.disable')]);
170
- _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
171
-
172
- // aggregate by styleSheetId
173
- const styleSheetIdToCoverage = new Map();
174
+ const styleSheetIdToCoverage = /* @__PURE__ */ new Map();
174
175
  for (const entry of ruleTrackingResponse.ruleUsage) {
175
176
  let ranges = styleSheetIdToCoverage.get(entry.styleSheetId);
176
177
  if (!ranges) {
@@ -183,18 +184,12 @@ class CSSCoverage {
183
184
  count: entry.used ? 1 : 0
184
185
  });
185
186
  }
186
- const coverage = {
187
- entries: []
188
- };
187
+ const coverage = { entries: [] };
189
188
  for (const styleSheetId of this._stylesheetURLs.keys()) {
190
189
  const url = this._stylesheetURLs.get(styleSheetId);
191
190
  const text = this._stylesheetSources.get(styleSheetId);
192
191
  const ranges = convertToDisjointRanges(styleSheetIdToCoverage.get(styleSheetId) || []);
193
- coverage.entries.push({
194
- url,
195
- ranges,
196
- text
197
- });
192
+ coverage.entries.push({ url, ranges, text });
198
193
  }
199
194
  return coverage;
200
195
  }
@@ -202,45 +197,40 @@ class CSSCoverage {
202
197
  function convertToDisjointRanges(nestedRanges) {
203
198
  const points = [];
204
199
  for (const range of nestedRanges) {
205
- points.push({
206
- offset: range.startOffset,
207
- type: 0,
208
- range
209
- });
210
- points.push({
211
- offset: range.endOffset,
212
- type: 1,
213
- range
214
- });
215
- }
216
- // Sort points to form a valid parenthesis sequence.
200
+ points.push({ offset: range.startOffset, type: 0, range });
201
+ points.push({ offset: range.endOffset, type: 1, range });
202
+ }
217
203
  points.sort((a, b) => {
218
- // Sort with increasing offsets.
219
- if (a.offset !== b.offset) return a.offset - b.offset;
220
- // All "end" points should go before "start" points.
221
- if (a.type !== b.type) return b.type - a.type;
204
+ if (a.offset !== b.offset)
205
+ return a.offset - b.offset;
206
+ if (a.type !== b.type)
207
+ return b.type - a.type;
222
208
  const aLength = a.range.endOffset - a.range.startOffset;
223
209
  const bLength = b.range.endOffset - b.range.startOffset;
224
- // For two "start" points, the one with longer range goes first.
225
- if (a.type === 0) return bLength - aLength;
226
- // For two "end" points, the one with shorter range goes first.
210
+ if (a.type === 0)
211
+ return bLength - aLength;
227
212
  return aLength - bLength;
228
213
  });
229
214
  const hitCountStack = [];
230
215
  const results = [];
231
216
  let lastOffset = 0;
232
- // Run scanning line to intersect all ranges.
233
217
  for (const point of points) {
234
218
  if (hitCountStack.length && lastOffset < point.offset && hitCountStack[hitCountStack.length - 1] > 0) {
235
219
  const lastResult = results.length ? results[results.length - 1] : null;
236
- if (lastResult && lastResult.end === lastOffset) lastResult.end = point.offset;else results.push({
237
- start: lastOffset,
238
- end: point.offset
239
- });
220
+ if (lastResult && lastResult.end === lastOffset)
221
+ lastResult.end = point.offset;
222
+ else
223
+ results.push({ start: lastOffset, end: point.offset });
240
224
  }
241
225
  lastOffset = point.offset;
242
- if (point.type === 0) hitCountStack.push(point.range.count);else hitCountStack.pop();
226
+ if (point.type === 0)
227
+ hitCountStack.push(point.range.count);
228
+ else
229
+ hitCountStack.pop();
243
230
  }
244
- // Filter out empty ranges.
245
- return results.filter(range => range.end - range.start > 1);
246
- }
231
+ return results.filter((range) => range.end - range.start > 1);
232
+ }
233
+ // Annotate the CommonJS export names for ESM import in node:
234
+ 0 && (module.exports = {
235
+ CRCoverage
236
+ });