@browserless.io/browserless 2.34.1 → 2.36.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 (425) hide show
  1. package/CHANGELOG.md +25 -3
  2. package/build/limiter.js +1 -1
  3. package/build/routes/chrome/http/content.post.body.json +90 -1
  4. package/build/routes/chrome/http/pdf.post.body.json +90 -1
  5. package/build/routes/chrome/http/scrape.post.body.json +90 -1
  6. package/build/routes/chrome/http/scrape.post.response.json +21 -22
  7. package/build/routes/chrome/http/screenshot.post.body.json +90 -1
  8. package/build/routes/chromium/http/content.post.body.json +90 -1
  9. package/build/routes/chromium/http/pdf.post.body.json +90 -1
  10. package/build/routes/chromium/http/scrape.post.body.json +90 -1
  11. package/build/routes/chromium/http/scrape.post.response.json +21 -22
  12. package/build/routes/chromium/http/screenshot.post.body.json +90 -1
  13. package/build/routes/chromium/tests/scrape.spec.js +41 -0
  14. package/build/routes/edge/http/content.post.body.json +90 -1
  15. package/build/routes/edge/http/pdf.post.body.json +90 -1
  16. package/build/routes/edge/http/scrape.post.body.json +90 -1
  17. package/build/routes/edge/http/scrape.post.response.json +21 -22
  18. package/build/routes/edge/http/screenshot.post.body.json +90 -1
  19. package/build/sdk-utils.js +1 -1
  20. package/build/shared/scrape.http.js +13 -3
  21. package/docker/base/Dockerfile +8 -8
  22. package/docker/chrome/Dockerfile +2 -2
  23. package/docker/chromium/Dockerfile +2 -2
  24. package/docker/edge/Dockerfile +2 -2
  25. package/docker/firefox/Dockerfile +2 -2
  26. package/docker/multi/Dockerfile +2 -2
  27. package/docker/sdk/Dockerfile +1 -1
  28. package/docker/webkit/Dockerfile +2 -2
  29. package/extensions/ublocklite/_locales/br_FR/messages.json +1 -1
  30. package/extensions/ublocklite/_locales/he/messages.json +2 -2
  31. package/extensions/ublocklite/_locales/hu/messages.json +1 -1
  32. package/extensions/ublocklite/_locales/pt_BR/messages.json +1 -1
  33. package/extensions/ublocklite/_locales/pt_PT/messages.json +1 -1
  34. package/extensions/ublocklite/_locales/sk/messages.json +6 -6
  35. package/extensions/ublocklite/_locales/sq/messages.json +17 -17
  36. package/extensions/ublocklite/_locales/th/messages.json +1 -1
  37. package/extensions/ublocklite/_locales/tr/messages.json +1 -1
  38. package/extensions/ublocklite/_locales/vi/messages.json +1 -1
  39. package/extensions/ublocklite/css/common.css +5 -3
  40. package/extensions/ublocklite/css/default.css +10 -0
  41. package/extensions/ublocklite/js/dnr-parser.js +1 -1
  42. package/extensions/ublocklite/js/filter-lists.js +1 -4
  43. package/extensions/ublocklite/js/popup.js +2 -2
  44. package/extensions/ublocklite/js/ruleset-manager.js +5 -121
  45. package/extensions/ublocklite/js/rw-dnr-editor.js +8 -4
  46. package/extensions/ublocklite/js/scripting/tool-overlay.js +1 -0
  47. package/extensions/ublocklite/js/settings.js +2 -1
  48. package/extensions/ublocklite/js/static-filtering-parser.js +8 -8
  49. package/extensions/ublocklite/js/ubo-parser.js +181 -65
  50. package/extensions/ublocklite/manifest.json +3 -3
  51. package/extensions/ublocklite/rulesets/generic-details.json +6 -16
  52. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +25 -4
  53. package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +615 -1
  54. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +19 -7
  55. package/extensions/ublocklite/rulesets/main/annoyances-others.json +4 -2
  56. package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +22 -2
  57. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +1 -1
  58. package/extensions/ublocklite/rulesets/main/chn-0.json +93 -28
  59. package/extensions/ublocklite/rulesets/main/cze-0.json +6 -1
  60. package/extensions/ublocklite/rulesets/main/deu-0.json +11 -5
  61. package/extensions/ublocklite/rulesets/main/dpollock-0.json +2 -0
  62. package/extensions/ublocklite/rulesets/main/easylist.json +135 -29
  63. package/extensions/ublocklite/rulesets/main/easyprivacy.json +132 -27
  64. package/extensions/ublocklite/rulesets/main/est-0.json +1 -1
  65. package/extensions/ublocklite/rulesets/main/fin-0.json +9 -0
  66. package/extensions/ublocklite/rulesets/main/fra-0.json +48 -10
  67. package/extensions/ublocklite/rulesets/main/hun-0.json +4 -1
  68. package/extensions/ublocklite/rulesets/main/idn-0.json +1 -1
  69. package/extensions/ublocklite/rulesets/main/ind-0.json +93 -150
  70. package/extensions/ublocklite/rulesets/main/irn-0.json +33 -7
  71. package/extensions/ublocklite/rulesets/main/isr-0.json +20 -2
  72. package/extensions/ublocklite/rulesets/main/ita-0.json +3 -1
  73. package/extensions/ublocklite/rulesets/main/jpn-1.json +60 -13
  74. package/extensions/ublocklite/rulesets/main/kor-1.json +38 -6
  75. package/extensions/ublocklite/rulesets/main/ltu-0.json +3 -1
  76. package/extensions/ublocklite/rulesets/main/lva-0.json +2 -1
  77. package/extensions/ublocklite/rulesets/main/nld-0.json +6 -1
  78. package/extensions/ublocklite/rulesets/main/nor-0.json +13 -4
  79. package/extensions/ublocklite/rulesets/main/pgl.json +8 -9
  80. package/extensions/ublocklite/rulesets/main/pol-0.json +13 -1
  81. package/extensions/ublocklite/rulesets/main/rou-1.json +17 -1
  82. package/extensions/ublocklite/rulesets/main/rus-0.json +101 -24
  83. package/extensions/ublocklite/rulesets/main/rus-1.json +112 -4
  84. package/extensions/ublocklite/rulesets/main/spa-1.json +38 -14
  85. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +13076 -6934
  86. package/extensions/ublocklite/rulesets/main/swe-1.json +77 -43
  87. package/extensions/ublocklite/rulesets/main/tha-0.json +7 -1
  88. package/extensions/ublocklite/rulesets/main/tur-0.json +45 -5
  89. package/extensions/ublocklite/rulesets/main/ublock-badware.json +76 -102
  90. package/extensions/ublocklite/rulesets/main/ublock-filters.json +770 -99
  91. package/extensions/ublocklite/rulesets/main/ubol-tests.json +43 -0
  92. package/extensions/ublocklite/rulesets/main/ukr-0.json +20 -1
  93. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +503 -614
  94. package/extensions/ublocklite/rulesets/main/vie-1.json +61 -52
  95. package/extensions/ublocklite/rulesets/regex/chn-0.json +6 -3
  96. package/extensions/ublocklite/rulesets/regex/deu-0.json +0 -1
  97. package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
  98. package/extensions/ublocklite/rulesets/regex/kor-1.json +1 -0
  99. package/extensions/ublocklite/rulesets/regex/pol-0.json +1 -0
  100. package/extensions/ublocklite/rulesets/regex/rus-0.json +1 -0
  101. package/extensions/ublocklite/rulesets/regex/rus-1.json +24 -0
  102. package/extensions/ublocklite/rulesets/regex/tur-0.json +2 -1
  103. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +10 -8
  104. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +26 -9
  105. package/extensions/ublocklite/rulesets/ruleset-details.json +238 -458
  106. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  107. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +1 -1
  108. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +1 -1
  109. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +1 -1
  110. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +3 -3
  111. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  112. package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +1 -1
  113. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +1 -1
  114. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +1 -1
  115. package/extensions/ublocklite/rulesets/scripting/generic/nld-0.js +1 -1
  116. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
  117. package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +3 -3
  118. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
  119. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +3 -3
  120. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  121. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +1 -1
  122. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +2 -2
  123. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +2 -9
  124. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +1 -1
  125. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +1 -0
  126. package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +0 -2
  127. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
  128. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  129. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-notifications.js +3 -3
  130. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
  131. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  132. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-social.js +3 -3
  133. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +1 -1
  134. package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +3 -3
  135. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  136. package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +3 -3
  137. package/extensions/ublocklite/rulesets/scripting/procedural/idn-0.js +3 -3
  138. package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
  139. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  140. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
  141. package/extensions/ublocklite/rulesets/scripting/procedural/nld-0.js +3 -3
  142. package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
  143. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  144. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +3 -3
  145. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  146. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  147. package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +3 -3
  148. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  149. package/extensions/ublocklite/rulesets/scripting/procedural/vie-1.js +2 -2
  150. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-on-property-read.js +2 -2
  151. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-constant.js +2 -2
  152. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie.js +2 -2
  153. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.trusted-replace-node-text.js +450 -0
  154. package/extensions/ublocklite/rulesets/scripting/scriptlet/{jpn-1.abort-on-property-write.js → adguard-mobile.trusted-set-attr.js} +107 -41
  155. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +407 -0
  156. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.remove-node-text.js +1 -1
  157. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  158. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  159. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  160. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-replace-node-text.js +2 -2
  161. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  162. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
  163. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +1 -1
  164. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +1 -1
  165. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
  166. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
  167. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +9 -2
  168. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +2 -2
  169. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
  170. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-xhr.js +2 -2
  171. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-cookie.js +2 -2
  172. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
  173. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +2 -2
  174. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +2 -2
  175. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.adjust-setTimeout.js +2 -2
  176. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +1 -1
  177. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +9 -2
  178. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +2 -2
  179. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +1 -1
  180. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
  181. package/extensions/ublocklite/rulesets/scripting/scriptlet/{vie-1.m3u-prune.js → chn-0.spoof-css.js} +109 -148
  182. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-current-script.js +1 -1
  183. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +7 -0
  184. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
  185. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +2 -2
  186. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.adjust-setTimeout.js +2 -2
  187. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +7 -0
  188. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +2 -2
  189. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.set-constant.js +1 -1
  190. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-local-storage-item.js +2 -2
  191. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +7 -0
  192. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +2 -2
  193. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +7 -0
  194. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-constant.js +2 -2
  195. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-session-storage-item.js +2 -2
  196. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +7 -0
  197. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
  198. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +7 -0
  199. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-attr.js +1 -1
  200. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.set-cookie.js +442 -0
  201. package/extensions/ublocklite/rulesets/scripting/scriptlet/{chn-0.json-prune-fetch-response.js → kor-1.json-prune-xhr-response.js} +71 -62
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.json-prune.js +2 -2
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +7 -0
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +2 -2
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +7 -0
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +7 -0
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.abort-current-script.js +2 -2
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.remove-node-text.js +1 -1
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +10 -3
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +2 -2
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-xhr.js +1 -1
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-cookie.js +3 -3
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-local-storage-item.js +2 -2
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.abort-on-property-read.js +3 -3
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +1 -1
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.json-prune.js +2 -2
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +7 -0
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.remove-cookie.js +4 -4
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-current-script.js +2 -2
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +1 -1
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +1 -1
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setInterval.js +1 -1
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +1 -1
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +9 -2
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +2 -2
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +2 -2
  235. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +1 -1
  236. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +2 -2
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +2 -2
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +2 -2
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +2 -2
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +1 -1
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +7 -0
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +2 -2
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-node-text.js +2 -2
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-cookie.js +2 -2
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-filters.evaldata-prune.js → ublock-badware.addEventListener-defuser.js} +103 -173
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +450 -0
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +3 -3
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +2 -2
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +2 -2
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.disable-newtab-links.js +1 -1
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +2 -2
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +851 -0
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js +3 -3
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +3 -3
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.m3u-prune.js +2 -2
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +2 -2
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +2 -2
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +9 -2
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +2 -2
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +3 -3
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +2 -2
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-attr.js +2 -2
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  279. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  280. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
  281. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.spoof-css.js +2 -2
  282. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.js +1 -1
  283. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +1 -1
  285. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -0
  286. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-xhr.js +1 -1
  287. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
  288. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  289. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
  290. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-xhr-response.js +1 -1
  291. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +1 -1
  292. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-cookie.js +3 -3
  293. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +2 -2
  294. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +1 -1
  295. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.xml-prune.js +2 -2
  296. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +7 -0
  297. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  298. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  299. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.json-prune.js +1 -1
  300. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +7 -0
  301. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  302. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  303. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
  304. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  305. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  306. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  307. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  308. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  309. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  310. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  311. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  312. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  313. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  314. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  315. package/extensions/ublocklite/rulesets/scripting/specific/irn-0.js +3 -3
  316. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  317. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  318. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  319. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  320. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  321. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  322. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  323. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  324. package/extensions/ublocklite/rulesets/scripting/specific/rus-1.js +3 -3
  325. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  326. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  327. package/extensions/ublocklite/rulesets/scripting/specific/tha-0.js +3 -3
  328. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  329. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  330. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  331. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  332. package/extensions/ublocklite/rulesets/scriptlet-details.json +271 -174
  333. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +3 -2
  334. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +1 -0
  335. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +329 -791
  336. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +2 -0
  337. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  338. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +62 -4
  339. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +429 -49
  340. package/extensions/ublocklite/rulesets/strictblock/irn-0.json +2 -0
  341. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +183 -176
  342. package/extensions/ublocklite/rulesets/strictblock/kor-1.json +6 -1
  343. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
  344. package/extensions/ublocklite/rulesets/strictblock/pgl.json +8 -9
  345. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +1 -0
  346. package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
  347. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +0 -2
  348. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +13076 -6934
  349. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +2 -0
  350. package/extensions/ublocklite/rulesets/strictblock/tur-0.json +4 -0
  351. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +580 -577
  352. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +3 -2
  353. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +503 -614
  354. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +6 -7
  355. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +30 -0
  356. package/extensions/ublocklite/ublock.zip +0 -0
  357. package/package.json +23 -21
  358. package/scripts/install-adblock.js +25 -4
  359. package/scripts/start.sh +1 -1
  360. package/scripts/test.sh +2 -2
  361. package/src/limiter.ts +1 -1
  362. package/src/routes/chromium/tests/scrape.spec.ts +48 -0
  363. package/src/sdk-utils.ts +1 -1
  364. package/src/shared/scrape.http.ts +17 -5
  365. package/static/docs/swagger.json +330 -102
  366. package/static/docs/swagger.min.json +329 -101
  367. package/static/function/client.js +203 -104
  368. package/static/function/index.html +203 -104
  369. package/extensions/ublocklite/rulesets/modify-headers/annoyances-overlays.json +0 -108
  370. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +0 -316
  371. package/extensions/ublocklite/rulesets/modify-headers/cze-0.json +0 -25
  372. package/extensions/ublocklite/rulesets/modify-headers/deu-0.json +0 -24
  373. package/extensions/ublocklite/rulesets/modify-headers/easylist.json +0 -14
  374. package/extensions/ublocklite/rulesets/modify-headers/easyprivacy.json +0 -48
  375. package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +0 -215
  376. package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +0 -45
  377. package/extensions/ublocklite/rulesets/modify-headers/isr-0.json +0 -50
  378. package/extensions/ublocklite/rulesets/modify-headers/rus-0.json +0 -40
  379. package/extensions/ublocklite/rulesets/modify-headers/rus-1.json +0 -22
  380. package/extensions/ublocklite/rulesets/modify-headers/swe-1.json +0 -46
  381. package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +0 -54
  382. package/extensions/ublocklite/rulesets/modify-headers/ubol-tests.json +0 -25
  383. package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +0 -162
  384. package/extensions/ublocklite/rulesets/redirect/adguard-mobile.json +0 -20
  385. package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +0 -15
  386. package/extensions/ublocklite/rulesets/redirect/chn-0.json +0 -40
  387. package/extensions/ublocklite/rulesets/redirect/cze-0.json +0 -76
  388. package/extensions/ublocklite/rulesets/redirect/deu-0.json +0 -79
  389. package/extensions/ublocklite/rulesets/redirect/easylist.json +0 -103
  390. package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +0 -137
  391. package/extensions/ublocklite/rulesets/redirect/fin-0.json +0 -121
  392. package/extensions/ublocklite/rulesets/redirect/fra-0.json +0 -35
  393. package/extensions/ublocklite/rulesets/redirect/hun-0.json +0 -38
  394. package/extensions/ublocklite/rulesets/redirect/irn-0.json +0 -73
  395. package/extensions/ublocklite/rulesets/redirect/isr-0.json +0 -17
  396. package/extensions/ublocklite/rulesets/redirect/jpn-1.json +0 -29
  397. package/extensions/ublocklite/rulesets/redirect/kor-1.json +0 -25
  398. package/extensions/ublocklite/rulesets/redirect/ltu-0.json +0 -33
  399. package/extensions/ublocklite/rulesets/redirect/nld-0.json +0 -79
  400. package/extensions/ublocklite/rulesets/redirect/nor-0.json +0 -132
  401. package/extensions/ublocklite/rulesets/redirect/pol-0.json +0 -15
  402. package/extensions/ublocklite/rulesets/redirect/rou-1.json +0 -53
  403. package/extensions/ublocklite/rulesets/redirect/rus-0.json +0 -21
  404. package/extensions/ublocklite/rulesets/redirect/rus-1.json +0 -118
  405. package/extensions/ublocklite/rulesets/redirect/spa-1.json +0 -27
  406. package/extensions/ublocklite/rulesets/redirect/swe-1.json +0 -14
  407. package/extensions/ublocklite/rulesets/redirect/tha-0.json +0 -78
  408. package/extensions/ublocklite/rulesets/redirect/tur-0.json +0 -24
  409. package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +0 -18
  410. package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +0 -548
  411. package/extensions/ublocklite/rulesets/redirect/ubol-tests.json +0 -22
  412. package/extensions/ublocklite/rulesets/redirect/ukr-0.json +0 -18
  413. package/extensions/ublocklite/rulesets/redirect/vie-1.json +0 -117
  414. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +0 -612
  415. package/extensions/ublocklite/rulesets/removeparam/annoyances-overlays.json +0 -27
  416. package/extensions/ublocklite/rulesets/removeparam/chn-0.json +0 -48
  417. package/extensions/ublocklite/rulesets/removeparam/est-0.json +0 -26
  418. package/extensions/ublocklite/rulesets/removeparam/fin-0.json +0 -52
  419. package/extensions/ublocklite/rulesets/removeparam/irn-0.json +0 -18
  420. package/extensions/ublocklite/rulesets/removeparam/kor-1.json +0 -26
  421. package/extensions/ublocklite/rulesets/removeparam/rus-0.json +0 -19
  422. package/extensions/ublocklite/rulesets/removeparam/rus-1.json +0 -99
  423. package/extensions/ublocklite/rulesets/removeparam/swe-1.json +0 -125
  424. package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +0 -64
  425. package/extensions/ublocklite/rulesets/removeparam/ukr-0.json +0 -49
@@ -3503,9 +3503,9 @@
3503
3503
  function popNumber(args, defaultValue) {
3504
3504
  return typeof last(args) === "number" ? args.pop() : defaultValue;
3505
3505
  }
3506
- var isArrayLike = function(x) {
3506
+ var isArrayLike = (function(x) {
3507
3507
  return x && typeof x.length === "number" && typeof x !== "function";
3508
- };
3508
+ });
3509
3509
  function isPromise(value) {
3510
3510
  return isFunction(value === null || value === void 0 ? void 0 : value.then);
3511
3511
  }
@@ -4422,7 +4422,7 @@
4422
4422
  // node_modules/puppeteer-core/lib/esm/puppeteer/generated/version.js
4423
4423
  init_dirname();
4424
4424
  init_buffer2();
4425
- var packageVersion = "24.16.2";
4425
+ var packageVersion = "24.22.0";
4426
4426
 
4427
4427
  // node_modules/puppeteer-core/lib/esm/puppeteer/util/assert.js
4428
4428
  init_dirname();
@@ -4564,6 +4564,8 @@
4564
4564
  };
4565
4565
  var TargetCloseError = class extends ProtocolError {
4566
4566
  };
4567
+ var ConnectionClosedError = class extends ProtocolError {
4568
+ };
4567
4569
 
4568
4570
  // node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js
4569
4571
  init_dirname();
@@ -4911,7 +4913,7 @@
4911
4913
  Symbol.asyncDispose ??= Symbol("asyncDispose");
4912
4914
  var disposeSymbol = Symbol.dispose;
4913
4915
  var asyncDisposeSymbol = Symbol.asyncDispose;
4914
- var DisposableStack = class _DisposableStack {
4916
+ var DisposableStackPolyfill = class _DisposableStackPolyfill {
4915
4917
  #disposed = false;
4916
4918
  #stack = [];
4917
4919
  /**
@@ -5004,7 +5006,7 @@
5004
5006
  if (this.#disposed) {
5005
5007
  throw new ReferenceError("A disposed stack can not use anything new");
5006
5008
  }
5007
- const stack = new _DisposableStack();
5009
+ const stack = new _DisposableStackPolyfill();
5008
5010
  stack.#stack = this.#stack;
5009
5011
  this.#stack = [];
5010
5012
  this.#disposed = true;
@@ -5030,11 +5032,11 @@
5030
5032
  throw errors[0];
5031
5033
  } else if (errors.length > 1) {
5032
5034
  let suppressed = null;
5033
- for (const error of errors.reverse()) {
5035
+ for (const error of errors) {
5034
5036
  if (suppressed === null) {
5035
5037
  suppressed = error;
5036
5038
  } else {
5037
- suppressed = new SuppressedError2(error, suppressed);
5039
+ suppressed = new SuppressedErrorPolyfill(error, suppressed);
5038
5040
  }
5039
5041
  }
5040
5042
  throw suppressed;
@@ -5042,7 +5044,8 @@
5042
5044
  }
5043
5045
  [Symbol.toStringTag] = "DisposableStack";
5044
5046
  };
5045
- var AsyncDisposableStack = class _AsyncDisposableStack {
5047
+ var DisposableStack = globalThis.DisposableStack ?? DisposableStackPolyfill;
5048
+ var AsyncDisposableStackPolyfill = class _AsyncDisposableStackPolyfill {
5046
5049
  #disposed = false;
5047
5050
  #stack = [];
5048
5051
  /**
@@ -5054,7 +5057,7 @@
5054
5057
  /**
5055
5058
  * Alias for `[Symbol.asyncDispose]()`.
5056
5059
  */
5057
- async dispose() {
5060
+ async disposeAsync() {
5058
5061
  await this[asyncDisposeSymbol]();
5059
5062
  }
5060
5063
  /**
@@ -5145,7 +5148,7 @@
5145
5148
  if (this.#disposed) {
5146
5149
  throw new ReferenceError("A disposed stack can not use anything new");
5147
5150
  }
5148
- const stack = new _AsyncDisposableStack();
5151
+ const stack = new _AsyncDisposableStackPolyfill();
5149
5152
  stack.#stack = this.#stack;
5150
5153
  this.#stack = [];
5151
5154
  this.#disposed = true;
@@ -5171,11 +5174,11 @@
5171
5174
  throw errors[0];
5172
5175
  } else if (errors.length > 1) {
5173
5176
  let suppressed = null;
5174
- for (const error of errors.reverse()) {
5177
+ for (const error of errors) {
5175
5178
  if (suppressed === null) {
5176
5179
  suppressed = error;
5177
5180
  } else {
5178
- suppressed = new SuppressedError2(error, suppressed);
5181
+ suppressed = new SuppressedErrorPolyfill(error, suppressed);
5179
5182
  }
5180
5183
  }
5181
5184
  throw suppressed;
@@ -5183,7 +5186,8 @@
5183
5186
  }
5184
5187
  [Symbol.toStringTag] = "AsyncDisposableStack";
5185
5188
  };
5186
- var SuppressedError2 = class extends Error {
5189
+ var AsyncDisposableStack = globalThis.AsyncDisposableStack ?? AsyncDisposableStackPolyfill;
5190
+ var SuppressedErrorPolyfill = class extends Error {
5187
5191
  #error;
5188
5192
  #suppressed;
5189
5193
  constructor(error, suppressed, message = "An error was suppressed during disposal") {
@@ -5206,6 +5210,7 @@
5206
5210
  return this.#suppressed;
5207
5211
  }
5208
5212
  };
5213
+ var SuppressedError2 = globalThis.SuppressedError ?? SuppressedErrorPolyfill;
5209
5214
 
5210
5215
  // node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js
5211
5216
  var EventEmitter = class {
@@ -5424,6 +5429,19 @@
5424
5429
  async deleteCookie(...cookies) {
5425
5430
  return await this.defaultBrowserContext().deleteCookie(...cookies);
5426
5431
  }
5432
+ /**
5433
+ * Deletes cookies matching the provided filters from the default
5434
+ * {@link BrowserContext}.
5435
+ *
5436
+ * @remarks
5437
+ *
5438
+ * Shortcut for
5439
+ * {@link BrowserContext.deleteMatchingCookies |
5440
+ * browser.defaultBrowserContext().deleteMatchingCookies()}.
5441
+ */
5442
+ async deleteMatchingCookies(...filters) {
5443
+ return await this.defaultBrowserContext().deleteMatchingCookies(...filters);
5444
+ }
5427
5445
  /**
5428
5446
  * Whether Puppeteer is connected to this {@link Browser | browser}.
5429
5447
  *
@@ -5674,8 +5692,9 @@
5674
5692
  ), from(this.targets())).pipe(filterAsync(predicate), raceWith(timeout(ms))));
5675
5693
  }
5676
5694
  /**
5677
- * Removes cookie in the browser context
5678
- * @param cookies - {@link Cookie | cookie} to remove
5695
+ * Removes cookie in this browser context.
5696
+ *
5697
+ * @param cookies - Complete {@link Cookie | cookie} object to be removed.
5679
5698
  */
5680
5699
  async deleteCookie(...cookies) {
5681
5700
  return await this.setCookie(...cookies.map((cookie) => {
@@ -5685,6 +5704,49 @@
5685
5704
  };
5686
5705
  }));
5687
5706
  }
5707
+ /**
5708
+ * Deletes cookies matching the provided filters in this browser context.
5709
+ *
5710
+ * @param filters - {@link DeleteCookiesRequest}
5711
+ */
5712
+ async deleteMatchingCookies(...filters) {
5713
+ const cookies = await this.cookies();
5714
+ const cookiesToDelete = cookies.filter((cookie) => {
5715
+ return filters.some((filter2) => {
5716
+ if (filter2.name === cookie.name) {
5717
+ if (filter2.domain !== void 0 && filter2.domain === cookie.domain) {
5718
+ return true;
5719
+ }
5720
+ if (filter2.path !== void 0 && filter2.path === cookie.path) {
5721
+ return true;
5722
+ }
5723
+ if (filter2.partitionKey !== void 0 && cookie.partitionKey !== void 0) {
5724
+ if (typeof cookie.partitionKey !== "object") {
5725
+ throw new Error("Unexpected string partition key");
5726
+ }
5727
+ if (typeof filter2.partitionKey === "string") {
5728
+ if (filter2.partitionKey === cookie.partitionKey?.sourceOrigin) {
5729
+ return true;
5730
+ }
5731
+ } else {
5732
+ if (filter2.partitionKey.sourceOrigin === cookie.partitionKey?.sourceOrigin) {
5733
+ return true;
5734
+ }
5735
+ }
5736
+ }
5737
+ if (filter2.url !== void 0) {
5738
+ const url = new URL(filter2.url);
5739
+ if (url.hostname === cookie.domain && url.pathname === cookie.path) {
5740
+ return true;
5741
+ }
5742
+ }
5743
+ return true;
5744
+ }
5745
+ return false;
5746
+ });
5747
+ });
5748
+ await this.deleteCookie(...cookiesToDelete);
5749
+ }
5688
5750
  /**
5689
5751
  * Whether this {@link BrowserContext | browser context} is closed.
5690
5752
  */
@@ -6505,12 +6567,15 @@
6505
6567
  static create(pageOrFrame, selector) {
6506
6568
  return new _NodeLocator(pageOrFrame, selector).setTimeout("getDefaultTimeout" in pageOrFrame ? pageOrFrame.getDefaultTimeout() : pageOrFrame.page().getDefaultTimeout());
6507
6569
  }
6570
+ static createFromHandle(pageOrFrame, handle) {
6571
+ return new _NodeLocator(pageOrFrame, handle).setTimeout("getDefaultTimeout" in pageOrFrame ? pageOrFrame.getDefaultTimeout() : pageOrFrame.page().getDefaultTimeout());
6572
+ }
6508
6573
  #pageOrFrame;
6509
- #selector;
6510
- constructor(pageOrFrame, selector) {
6574
+ #selectorOrHandle;
6575
+ constructor(pageOrFrame, selectorOrHandle) {
6511
6576
  super();
6512
6577
  this.#pageOrFrame = pageOrFrame;
6513
- this.#selector = selector;
6578
+ this.#selectorOrHandle = selectorOrHandle;
6514
6579
  }
6515
6580
  /**
6516
6581
  * Waits for the element to become visible or hidden. visibility === 'visible'
@@ -6536,16 +6601,24 @@
6536
6601
  })().pipe(first(identity), retry({ delay: RETRY_DELAY }), ignoreElements());
6537
6602
  };
6538
6603
  _clone() {
6539
- return new _NodeLocator(this.#pageOrFrame, this.#selector).copyOptions(this);
6604
+ return new _NodeLocator(
6605
+ this.#pageOrFrame,
6606
+ // @ts-expect-error TSC does cannot parse private overloads.
6607
+ this.#selectorOrHandle
6608
+ ).copyOptions(this);
6540
6609
  }
6541
6610
  _wait(options) {
6542
6611
  const signal = options?.signal;
6543
6612
  return defer(() => {
6544
- return from(this.#pageOrFrame.waitForSelector(this.#selector, {
6545
- visible: false,
6546
- timeout: this._timeout,
6547
- signal
6548
- }));
6613
+ if (typeof this.#selectorOrHandle === "string") {
6614
+ return from(this.#pageOrFrame.waitForSelector(this.#selectorOrHandle, {
6615
+ visible: false,
6616
+ timeout: this._timeout,
6617
+ signal
6618
+ }));
6619
+ } else {
6620
+ return of(this.#selectorOrHandle);
6621
+ }
6549
6622
  }).pipe(filter((value) => {
6550
6623
  return value !== null;
6551
6624
  }), throwIfEmpty(), this.operators.conditions([this.#waitForVisibilityIfNeeded], signal));
@@ -6786,11 +6859,11 @@
6786
6859
  get accessibility() {
6787
6860
  return this.mainFrame().accessibility;
6788
6861
  }
6789
- locator(selectorOrFunc) {
6790
- if (typeof selectorOrFunc === "string") {
6791
- return NodeLocator.create(this, selectorOrFunc);
6862
+ locator(input) {
6863
+ if (typeof input === "string") {
6864
+ return NodeLocator.create(this, input);
6792
6865
  } else {
6793
- return FunctionLocator.create(this, selectorOrFunc);
6866
+ return FunctionLocator.create(this, input);
6794
6867
  }
6795
6868
  }
6796
6869
  /**
@@ -7315,7 +7388,7 @@
7315
7388
  *
7316
7389
  * @remarks
7317
7390
  * This method is a shortcut for calling two methods:
7318
- * {@link Page.setUserAgent} and {@link Page.setViewport}.
7391
+ * {@link Page.(setUserAgent:2) } and {@link Page.setViewport}.
7319
7392
  *
7320
7393
  * This method will resize the page. A lot of websites don't expect phones to
7321
7394
  * change size, so you should emulate before navigating to the page.
@@ -7338,7 +7411,7 @@
7338
7411
  */
7339
7412
  async emulate(device) {
7340
7413
  await Promise.all([
7341
- this.setUserAgent(device.userAgent),
7414
+ this.setUserAgent({ userAgent: device.userAgent }),
7342
7415
  this.setViewport(device.viewport)
7343
7416
  ]);
7344
7417
  }
@@ -8831,7 +8904,7 @@
8831
8904
  */
8832
8905
  _rawSend(callbacks, method, params, sessionId, options) {
8833
8906
  if (this.#closed) {
8834
- return Promise.reject(new Error("Protocol error: Connection closed."));
8907
+ return Promise.reject(new ConnectionClosedError("Connection closed."));
8835
8908
  }
8836
8909
  return callbacks.create(method, options?.timeout ?? this.#timeout, (id) => {
8837
8910
  const stringifiedMessage = JSON.stringify({
@@ -9803,9 +9876,38 @@
9803
9876
  init_dirname();
9804
9877
  init_buffer2();
9805
9878
 
9806
- // node_modules/puppeteer-core/lib/esm/puppeteer/cdp/AriaQueryHandler.js
9879
+ // node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js
9880
+ init_dirname();
9881
+ init_buffer2();
9882
+
9883
+ // node_modules/puppeteer-core/lib/esm/puppeteer/util/AsyncIterableUtil.js
9807
9884
  init_dirname();
9808
9885
  init_buffer2();
9886
+ var AsyncIterableUtil = class {
9887
+ static async *map(iterable, map2) {
9888
+ for await (const value of iterable) {
9889
+ yield await map2(value);
9890
+ }
9891
+ }
9892
+ static async *flatMap(iterable, map2) {
9893
+ for await (const value of iterable) {
9894
+ yield* map2(value);
9895
+ }
9896
+ }
9897
+ static async collect(iterable) {
9898
+ const result = [];
9899
+ for await (const value of iterable) {
9900
+ result.push(value);
9901
+ }
9902
+ return result;
9903
+ }
9904
+ static async first(iterable) {
9905
+ for await (const value of iterable) {
9906
+ return value;
9907
+ }
9908
+ return;
9909
+ }
9910
+ };
9809
9911
 
9810
9912
  // node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js
9811
9913
  init_dirname();
@@ -9834,7 +9936,7 @@
9834
9936
  try {
9835
9937
  new Function(`(${value})`);
9836
9938
  } catch (err) {
9837
- if (err.message.includes(`Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive`)) {
9939
+ if (err.message.includes(`Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive`) || err.message.includes("Evaluating a string as JavaScript violates the following Content Security Policy")) {
9838
9940
  return value;
9839
9941
  }
9840
9942
  let prefix = "function ";
@@ -10215,36 +10317,7 @@
10215
10317
  }
10216
10318
  };
10217
10319
 
10218
- // node_modules/puppeteer-core/lib/esm/puppeteer/util/AsyncIterableUtil.js
10219
- init_dirname();
10220
- init_buffer2();
10221
- var AsyncIterableUtil = class {
10222
- static async *map(iterable, map2) {
10223
- for await (const value of iterable) {
10224
- yield await map2(value);
10225
- }
10226
- }
10227
- static async *flatMap(iterable, map2) {
10228
- for await (const value of iterable) {
10229
- yield* map2(value);
10230
- }
10231
- }
10232
- static async collect(iterable) {
10233
- const result = [];
10234
- for await (const value of iterable) {
10235
- result.push(value);
10236
- }
10237
- return result;
10238
- }
10239
- static async first(iterable) {
10240
- for await (const value of iterable) {
10241
- return value;
10242
- }
10243
- return;
10244
- }
10245
- };
10246
-
10247
- // node_modules/puppeteer-core/lib/esm/puppeteer/cdp/AriaQueryHandler.js
10320
+ // node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js
10248
10321
  var isKnownAttribute = (attribute) => {
10249
10322
  return ["name", "role"].includes(attribute);
10250
10323
  };
@@ -10300,7 +10373,7 @@
10300
10373
  // node_modules/puppeteer-core/lib/esm/puppeteer/generated/injected.js
10301
10374
  init_dirname();
10302
10375
  init_buffer2();
10303
- var source = '"use strict";var g=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},J=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of B(e))!Y.call(t,n)&&n!==r&&g(t,n,{get:()=>e[n],enumerable:!(o=X(e,n))||o.enumerable});return t};var z=t=>J(g({},"__esModule",{value:!0}),t);var pe={};l(pe,{default:()=>he});module.exports=z(pe);var N=class extends Error{constructor(e,r){super(e,r),this.name=this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}},p=class extends N{};var c=class t{static create(e){return new t(e)}static async race(e){let r=new Set;try{let o=e.map(n=>n instanceof t?(n.#n&&r.add(n),n.valueOrThrow()):n);return await Promise.race(o)}finally{for(let o of r)o.reject(new Error("Timeout cleared"))}}#e=!1;#r=!1;#o;#t;#a=new Promise(e=>{this.#t=e});#n;#i;constructor(e){e&&e.timeout>0&&(this.#i=new p(e.message),this.#n=setTimeout(()=>{this.reject(this.#i)},e.timeout))}#l(e){clearTimeout(this.#n),this.#o=e,this.#t()}resolve(e){this.#r||this.#e||(this.#e=!0,this.#l(e))}reject(e){this.#r||this.#e||(this.#r=!0,this.#l(e))}resolved(){return this.#e}finished(){return this.#e||this.#r}value(){return this.#o}#s;valueOrThrow(){return this.#s||(this.#s=(async()=>{if(await this.#a,this.#r)throw this.#o;return this.#o})()),this.#s}};var L=new Map,F=t=>{let e=L.get(t);return e||(e=new Function(`return ${t}`)(),L.set(t,e),e)};var x={};l(x,{ariaQuerySelector:()=>G,ariaQuerySelectorAll:()=>b});var G=(t,e)=>globalThis.__ariaQuerySelector(t,e),b=async function*(t,e){yield*await globalThis.__ariaQuerySelectorAll(t,e)};var E={};l(E,{cssQuerySelector:()=>K,cssQuerySelectorAll:()=>Z});var K=(t,e)=>t.querySelector(e),Z=function(t,e){return t.querySelectorAll(e)};var A={};l(A,{customQuerySelectors:()=>P});var v=class{#e=new Map;register(e,r){if(!r.queryOne&&r.queryAll){let o=r.queryAll;r.queryOne=(n,i)=>{for(let s of o(n,i))return s;return null}}else if(r.queryOne&&!r.queryAll){let o=r.queryOne;r.queryAll=(n,i)=>{let s=o(n,i);return s?[s]:[]}}else if(!r.queryOne||!r.queryAll)throw new Error("At least one query method must be defined.");this.#e.set(e,{querySelector:r.queryOne,querySelectorAll:r.queryAll})}unregister(e){this.#e.delete(e)}get(e){return this.#e.get(e)}clear(){this.#e.clear()}},P=new v;var R={};l(R,{pierceQuerySelector:()=>ee,pierceQuerySelectorAll:()=>te});var ee=(t,e)=>{let r=null,o=n=>{let i=document.createTreeWalker(n,NodeFilter.SHOW_ELEMENT);do{let s=i.currentNode;s.shadowRoot&&o(s.shadowRoot),!(s instanceof ShadowRoot)&&s!==n&&!r&&s.matches(e)&&(r=s)}while(!r&&i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r},te=(t,e)=>{let r=[],o=n=>{let i=document.createTreeWalker(n,NodeFilter.SHOW_ELEMENT);do{let s=i.currentNode;s.shadowRoot&&o(s.shadowRoot),!(s instanceof ShadowRoot)&&s!==n&&s.matches(e)&&r.push(s)}while(i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r};var u=(t,e)=>{if(!t)throw new Error(e)};var y=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=new MutationObserver(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())}),this.#o.observe(this.#r,{childList:!0,subtree:!0,attributes:!0})}async stop(){u(this.#t,"Polling never started."),this.#t.finished()||this.#t.reject(new Error("Polling stopped")),this.#o&&(this.#o.disconnect(),this.#o=void 0)}result(){return u(this.#t,"Polling never started."),this.#t.valueOrThrow()}},w=class{#e;#r;constructor(e){this.#e=e}async start(){let e=this.#r=c.create(),r=await this.#e();if(r){e.resolve(r);return}let o=async()=>{if(e.finished())return;let n=await this.#e();if(!n){window.requestAnimationFrame(o);return}e.resolve(n),await this.stop()};window.requestAnimationFrame(o)}async stop(){u(this.#r,"Polling never started."),this.#r.finished()||this.#r.reject(new Error("Polling stopped"))}result(){return u(this.#r,"Polling never started."),this.#r.valueOrThrow()}},S=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=setInterval(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())},this.#r)}async stop(){u(this.#t,"Polling never started."),this.#t.finished()||this.#t.reject(new Error("Polling stopped")),this.#o&&(clearInterval(this.#o),this.#o=void 0)}result(){return u(this.#t,"Polling never started."),this.#t.valueOrThrow()}};var _={};l(_,{PCombinator:()=>H,pQuerySelector:()=>fe,pQuerySelectorAll:()=>$});var a=class{static async*map(e,r){for await(let o of e)yield await r(o)}static async*flatMap(e,r){for await(let o of e)yield*r(o)}static async collect(e){let r=[];for await(let o of e)r.push(o);return r}static async first(e){for await(let r of e)return r}};var C={};l(C,{textQuerySelectorAll:()=>m});var re=new Set(["checkbox","image","radio"]),oe=t=>t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement||t instanceof HTMLInputElement&&!re.has(t.type),ne=new Set(["SCRIPT","STYLE"]),f=t=>!ne.has(t.nodeName)&&!document.head?.contains(t),I=new WeakMap,j=t=>{for(;t;)I.delete(t),t instanceof ShadowRoot?t=t.host:t=t.parentNode},W=new WeakSet,se=new MutationObserver(t=>{for(let e of t)j(e.target)}),d=t=>{let e=I.get(t);if(e||(e={full:"",immediate:[]},!f(t)))return e;let r="";if(oe(t))e.full=t.value,e.immediate.push(t.value),t.addEventListener("input",o=>{j(o.target)},{once:!0,capture:!0});else{for(let o=t.firstChild;o;o=o.nextSibling){if(o.nodeType===Node.TEXT_NODE){e.full+=o.nodeValue??"",r+=o.nodeValue??"";continue}r&&e.immediate.push(r),r="",o.nodeType===Node.ELEMENT_NODE&&(e.full+=d(o).full)}r&&e.immediate.push(r),t instanceof Element&&t.shadowRoot&&(e.full+=d(t.shadowRoot).full),W.has(t)||(se.observe(t,{childList:!0,characterData:!0,subtree:!0}),W.add(t))}return I.set(t,e),e};var m=function*(t,e){let r=!1;for(let o of t.childNodes)if(o instanceof Element&&f(o)){let n;o.shadowRoot?n=m(o.shadowRoot,e):n=m(o,e);for(let i of n)yield i,r=!0}r||t instanceof Element&&f(t)&&d(t).full.includes(e)&&(yield t)};var k={};l(k,{checkVisibility:()=>le,pierce:()=>T,pierceAll:()=>O});var ie=["hidden","collapse"],le=(t,e)=>{if(!t)return e===!1;if(e===void 0)return t;let r=t.nodeType===Node.TEXT_NODE?t.parentElement:t,o=window.getComputedStyle(r),n=o&&!ie.includes(o.visibility)&&!ae(r);return e===n?t:!1};function ae(t){let e=t.getBoundingClientRect();return e.width===0||e.height===0}var ce=t=>"shadowRoot"in t&&t.shadowRoot instanceof ShadowRoot;function*T(t){ce(t)?yield t.shadowRoot:yield t}function*O(t){t=T(t).next().value,yield t;let e=[document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT)];for(let r of e){let o;for(;o=r.nextNode();)o.shadowRoot&&(yield o.shadowRoot,e.push(document.createTreeWalker(o.shadowRoot,NodeFilter.SHOW_ELEMENT)))}}var Q={};l(Q,{xpathQuerySelectorAll:()=>q});var q=function*(t,e,r=-1){let n=(t.ownerDocument||document).evaluate(e,t,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE),i=[],s;for(;(s=n.iterateNext())&&(i.push(s),!(r&&i.length===r)););for(let h=0;h<i.length;h++)s=i[h],yield s,delete i[h]};var ue=/[-\\w\\P{ASCII}*]/u,H=(r=>(r.Descendent=">>>",r.Child=">>>>",r))(H||{}),V=t=>"querySelectorAll"in t,M=class{#e;#r=[];#o=void 0;elements;constructor(e,r){this.elements=[e],this.#e=r,this.#t()}async run(){if(typeof this.#o=="string")switch(this.#o.trimStart()){case":scope":this.#t();break}for(;this.#o!==void 0;this.#t()){let e=this.#o;typeof e=="string"?e[0]&&ue.test(e[0])?this.elements=a.flatMap(this.elements,async function*(r){V(r)&&(yield*r.querySelectorAll(e))}):this.elements=a.flatMap(this.elements,async function*(r){if(!r.parentElement){if(!V(r))return;yield*r.querySelectorAll(e);return}let o=0;for(let n of r.parentElement.children)if(++o,n===r)break;yield*r.parentElement.querySelectorAll(`:scope>:nth-child(${o})${e}`)}):this.elements=a.flatMap(this.elements,async function*(r){switch(e.name){case"text":yield*m(r,e.value);break;case"xpath":yield*q(r,e.value);break;case"aria":yield*b(r,e.value);break;default:let o=P.get(e.name);if(!o)throw new Error(`Unknown selector type: ${e.name}`);yield*o.querySelectorAll(r,e.value)}})}}#t(){if(this.#r.length!==0){this.#o=this.#r.shift();return}if(this.#e.length===0){this.#o=void 0;return}let e=this.#e.shift();switch(e){case">>>>":{this.elements=a.flatMap(this.elements,T),this.#t();break}case">>>":{this.elements=a.flatMap(this.elements,O),this.#t();break}default:this.#r=e,this.#t();break}}},D=class{#e=new WeakMap;calculate(e,r=[]){if(e===null)return r;e instanceof ShadowRoot&&(e=e.host);let o=this.#e.get(e);if(o)return[...o,...r];let n=0;for(let s=e.previousSibling;s;s=s.previousSibling)++n;let i=this.calculate(e.parentNode,[n]);return this.#e.set(e,i),[...i,...r]}},U=(t,e)=>{if(t.length+e.length===0)return 0;let[r=-1,...o]=t,[n=-1,...i]=e;return r===n?U(o,i):r<n?-1:1},de=async function*(t){let e=new Set;for await(let o of t)e.add(o);let r=new D;yield*[...e.values()].map(o=>[o,r.calculate(o)]).sort(([,o],[,n])=>U(o,n)).map(([o])=>o)},$=function(t,e){let r=JSON.parse(e);if(r.some(o=>{let n=0;return o.some(i=>(typeof i=="string"?++n:n=0,n>1))}))throw new Error("Multiple deep combinators found in sequence.");return de(a.flatMap(r,o=>{let n=new M(t,o);return n.run(),n.elements}))},fe=async function(t,e){for await(let r of $(t,e))return r;return null};var me=Object.freeze({...x,...A,...R,..._,...C,...k,...Q,...E,Deferred:c,createFunction:F,createTextContent:d,IntervalPoller:S,isSuitableNodeForTextMatching:f,MutationPoller:y,RAFPoller:w}),he=me;\n';
10376
+ var source = '"use strict";var g=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},Y=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of B(e))!J.call(t,n)&&n!==r&&g(t,n,{get:()=>e[n],enumerable:!(o=X(e,n))||o.enumerable});return t};var z=t=>Y(g({},"__esModule",{value:!0}),t);var pe={};l(pe,{default:()=>he});module.exports=z(pe);var N=class extends Error{constructor(e,r){super(e,r),this.name=this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}},p=class extends N{};var c=class t{static create(e){return new t(e)}static async race(e){let r=new Set;try{let o=e.map(n=>n instanceof t?(n.#n&&r.add(n),n.valueOrThrow()):n);return await Promise.race(o)}finally{for(let o of r)o.reject(new Error("Timeout cleared"))}}#e=!1;#r=!1;#o;#t;#a=new Promise(e=>{this.#t=e});#n;#i;constructor(e){e&&e.timeout>0&&(this.#i=new p(e.message),this.#n=setTimeout(()=>{this.reject(this.#i)},e.timeout))}#l(e){clearTimeout(this.#n),this.#o=e,this.#t()}resolve(e){this.#r||this.#e||(this.#e=!0,this.#l(e))}reject(e){this.#r||this.#e||(this.#r=!0,this.#l(e))}resolved(){return this.#e}finished(){return this.#e||this.#r}value(){return this.#o}#s;valueOrThrow(){return this.#s||(this.#s=(async()=>{if(await this.#a,this.#r)throw this.#o;return this.#o})()),this.#s}};var L=new Map,F=t=>{let e=L.get(t);return e||(e=new Function(`return ${t}`)(),L.set(t,e),e)};var b={};l(b,{ariaQuerySelector:()=>G,ariaQuerySelectorAll:()=>x});var G=(t,e)=>globalThis.__ariaQuerySelector(t,e),x=async function*(t,e){yield*await globalThis.__ariaQuerySelectorAll(t,e)};var E={};l(E,{cssQuerySelector:()=>K,cssQuerySelectorAll:()=>Z});var K=(t,e)=>t.querySelector(e),Z=function(t,e){return t.querySelectorAll(e)};var A={};l(A,{customQuerySelectors:()=>P});var v=class{#e=new Map;register(e,r){if(!r.queryOne&&r.queryAll){let o=r.queryAll;r.queryOne=(n,i)=>{for(let s of o(n,i))return s;return null}}else if(r.queryOne&&!r.queryAll){let o=r.queryOne;r.queryAll=(n,i)=>{let s=o(n,i);return s?[s]:[]}}else if(!r.queryOne||!r.queryAll)throw new Error("At least one query method must be defined.");this.#e.set(e,{querySelector:r.queryOne,querySelectorAll:r.queryAll})}unregister(e){this.#e.delete(e)}get(e){return this.#e.get(e)}clear(){this.#e.clear()}},P=new v;var R={};l(R,{pierceQuerySelector:()=>ee,pierceQuerySelectorAll:()=>te});var ee=(t,e)=>{let r=null,o=n=>{let i=document.createTreeWalker(n,NodeFilter.SHOW_ELEMENT);do{let s=i.currentNode;s.shadowRoot&&o(s.shadowRoot),!(s instanceof ShadowRoot)&&s!==n&&!r&&s.matches(e)&&(r=s)}while(!r&&i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r},te=(t,e)=>{let r=[],o=n=>{let i=document.createTreeWalker(n,NodeFilter.SHOW_ELEMENT);do{let s=i.currentNode;s.shadowRoot&&o(s.shadowRoot),!(s instanceof ShadowRoot)&&s!==n&&s.matches(e)&&r.push(s)}while(i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r};var u=(t,e)=>{if(!t)throw new Error(e)};var y=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=new MutationObserver(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())}),this.#o.observe(this.#r,{childList:!0,subtree:!0,attributes:!0})}async stop(){u(this.#t,"Polling never started."),this.#t.finished()||this.#t.reject(new Error("Polling stopped")),this.#o&&(this.#o.disconnect(),this.#o=void 0)}result(){return u(this.#t,"Polling never started."),this.#t.valueOrThrow()}},w=class{#e;#r;constructor(e){this.#e=e}async start(){let e=this.#r=c.create(),r=await this.#e();if(r){e.resolve(r);return}let o=async()=>{if(e.finished())return;let n=await this.#e();if(!n){window.requestAnimationFrame(o);return}e.resolve(n),await this.stop()};window.requestAnimationFrame(o)}async stop(){u(this.#r,"Polling never started."),this.#r.finished()||this.#r.reject(new Error("Polling stopped"))}result(){return u(this.#r,"Polling never started."),this.#r.valueOrThrow()}},S=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=setInterval(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())},this.#r)}async stop(){u(this.#t,"Polling never started."),this.#t.finished()||this.#t.reject(new Error("Polling stopped")),this.#o&&(clearInterval(this.#o),this.#o=void 0)}result(){return u(this.#t,"Polling never started."),this.#t.valueOrThrow()}};var _={};l(_,{PCombinator:()=>H,pQuerySelector:()=>fe,pQuerySelectorAll:()=>$});var a=class{static async*map(e,r){for await(let o of e)yield await r(o)}static async*flatMap(e,r){for await(let o of e)yield*r(o)}static async collect(e){let r=[];for await(let o of e)r.push(o);return r}static async first(e){for await(let r of e)return r}};var C={};l(C,{textQuerySelectorAll:()=>m});var re=new Set(["checkbox","image","radio"]),oe=t=>t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement||t instanceof HTMLInputElement&&!re.has(t.type),ne=new Set(["SCRIPT","STYLE"]),f=t=>!ne.has(t.nodeName)&&!document.head?.contains(t),I=new WeakMap,W=t=>{for(;t;)I.delete(t),t instanceof ShadowRoot?t=t.host:t=t.parentNode},j=new WeakSet,se=new MutationObserver(t=>{for(let e of t)W(e.target)}),d=t=>{let e=I.get(t);if(e||(e={full:"",immediate:[]},!f(t)))return e;let r="";if(oe(t))e.full=t.value,e.immediate.push(t.value),t.addEventListener("input",o=>{W(o.target)},{once:!0,capture:!0});else{for(let o=t.firstChild;o;o=o.nextSibling){if(o.nodeType===Node.TEXT_NODE){e.full+=o.nodeValue??"",r+=o.nodeValue??"";continue}r&&e.immediate.push(r),r="",o.nodeType===Node.ELEMENT_NODE&&(e.full+=d(o).full)}r&&e.immediate.push(r),t instanceof Element&&t.shadowRoot&&(e.full+=d(t.shadowRoot).full),j.has(t)||(se.observe(t,{childList:!0,characterData:!0,subtree:!0}),j.add(t))}return I.set(t,e),e};var m=function*(t,e){let r=!1;for(let o of t.childNodes)if(o instanceof Element&&f(o)){let n;o.shadowRoot?n=m(o.shadowRoot,e):n=m(o,e);for(let i of n)yield i,r=!0}r||t instanceof Element&&f(t)&&d(t).full.includes(e)&&(yield t)};var k={};l(k,{checkVisibility:()=>le,pierce:()=>T,pierceAll:()=>O});var ie=["hidden","collapse"],le=(t,e)=>{if(!t)return e===!1;if(e===void 0)return t;let r=t.nodeType===Node.TEXT_NODE?t.parentElement:t,o=window.getComputedStyle(r),n=o&&!ie.includes(o.visibility)&&!ae(r);return e===n?t:!1};function ae(t){let e=t.getBoundingClientRect();return e.width===0||e.height===0}var ce=t=>"shadowRoot"in t&&t.shadowRoot instanceof ShadowRoot;function*T(t){ce(t)?yield t.shadowRoot:yield t}function*O(t){t=T(t).next().value,yield t;let e=[document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT)];for(let r of e){let o;for(;o=r.nextNode();)o.shadowRoot&&(yield o.shadowRoot,e.push(document.createTreeWalker(o.shadowRoot,NodeFilter.SHOW_ELEMENT)))}}var Q={};l(Q,{xpathQuerySelectorAll:()=>q});var q=function*(t,e,r=-1){let n=(t.ownerDocument||document).evaluate(e,t,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE),i=[],s;for(;(s=n.iterateNext())&&(i.push(s),!(r&&i.length===r)););for(let h=0;h<i.length;h++)s=i[h],yield s,delete i[h]};var ue=/[-\\w\\P{ASCII}*]/u,H=(r=>(r.Descendent=">>>",r.Child=">>>>",r))(H||{}),V=t=>"querySelectorAll"in t,M=class{#e;#r=[];#o=void 0;elements;constructor(e,r){this.elements=[e],this.#e=r,this.#t()}async run(){if(typeof this.#o=="string")switch(this.#o.trimStart()){case":scope":this.#t();break}for(;this.#o!==void 0;this.#t()){let e=this.#o;typeof e=="string"?e[0]&&ue.test(e[0])?this.elements=a.flatMap(this.elements,async function*(r){V(r)&&(yield*r.querySelectorAll(e))}):this.elements=a.flatMap(this.elements,async function*(r){if(!r.parentElement){if(!V(r))return;yield*r.querySelectorAll(e);return}let o=0;for(let n of r.parentElement.children)if(++o,n===r)break;yield*r.parentElement.querySelectorAll(`:scope>:nth-child(${o})${e}`)}):this.elements=a.flatMap(this.elements,async function*(r){switch(e.name){case"text":yield*m(r,e.value);break;case"xpath":yield*q(r,e.value);break;case"aria":yield*x(r,e.value);break;default:let o=P.get(e.name);if(!o)throw new Error(`Unknown selector type: ${e.name}`);yield*o.querySelectorAll(r,e.value)}})}}#t(){if(this.#r.length!==0){this.#o=this.#r.shift();return}if(this.#e.length===0){this.#o=void 0;return}let e=this.#e.shift();switch(e){case">>>>":{this.elements=a.flatMap(this.elements,T),this.#t();break}case">>>":{this.elements=a.flatMap(this.elements,O),this.#t();break}default:this.#r=e,this.#t();break}}},D=class{#e=new WeakMap;calculate(e,r=[]){if(e===null)return r;e instanceof ShadowRoot&&(e=e.host);let o=this.#e.get(e);if(o)return[...o,...r];let n=0;for(let s=e.previousSibling;s;s=s.previousSibling)++n;let i=this.calculate(e.parentNode,[n]);return this.#e.set(e,i),[...i,...r]}},U=(t,e)=>{if(t.length+e.length===0)return 0;let[r=-1,...o]=t,[n=-1,...i]=e;return r===n?U(o,i):r<n?-1:1},de=async function*(t){let e=new Set;for await(let o of t)e.add(o);let r=new D;yield*[...e.values()].map(o=>[o,r.calculate(o)]).sort(([,o],[,n])=>U(o,n)).map(([o])=>o)},$=function(t,e){let r=JSON.parse(e);if(r.some(o=>{let n=0;return o.some(i=>(typeof i=="string"?++n:n=0,n>1))}))throw new Error("Multiple deep combinators found in sequence.");return de(a.flatMap(r,o=>{let n=new M(t,o);return n.run(),n.elements}))},fe=async function(t,e){for await(let r of $(t,e))return r;return null};var me=Object.freeze({...b,...A,...R,..._,...C,...k,...Q,...E,Deferred:c,createFunction:F,createTextContent:d,IntervalPoller:S,isSuitableNodeForTextMatching:f,MutationPoller:y,RAFPoller:w}),he=me;\n';
10304
10377
 
10305
10378
  // node_modules/puppeteer-core/lib/esm/puppeteer/common/ScriptInjector.js
10306
10379
  var ScriptInjector = class {
@@ -11074,11 +11147,11 @@
11074
11147
  /**
11075
11148
  * @internal
11076
11149
  */
11077
- locator(selectorOrFunc) {
11078
- if (typeof selectorOrFunc === "string") {
11079
- return NodeLocator.create(this, selectorOrFunc);
11150
+ locator(input) {
11151
+ if (typeof input === "string") {
11152
+ return NodeLocator.create(this, input);
11080
11153
  } else {
11081
- return FunctionLocator.create(this, selectorOrFunc);
11154
+ return FunctionLocator.create(this, input);
11082
11155
  }
11083
11156
  }
11084
11157
  /**
@@ -11993,6 +12066,7 @@
11993
12066
  let _screenshot_decorators;
11994
12067
  let _isIntersectingViewport_decorators;
11995
12068
  let _scrollIntoView_decorators;
12069
+ let _asLocator_decorators;
11996
12070
  return class ElementHandle2 extends _classSuper {
11997
12071
  static {
11998
12072
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -12027,6 +12101,7 @@
12027
12101
  _screenshot_decorators = [throwIfDisposed(), bindIsolatedHandle];
12028
12102
  _isIntersectingViewport_decorators = [throwIfDisposed(), bindIsolatedHandle];
12029
12103
  _scrollIntoView_decorators = [throwIfDisposed(), bindIsolatedHandle];
12104
+ _asLocator_decorators = [throwIfDisposed()];
12030
12105
  __esDecorate5(this, null, _getProperty_decorators, { kind: "method", name: "getProperty", static: false, private: false, access: { has: (obj) => "getProperty" in obj, get: (obj) => obj.getProperty }, metadata: _metadata }, null, _instanceExtraInitializers);
12031
12106
  __esDecorate5(this, null, _getProperties_decorators, { kind: "method", name: "getProperties", static: false, private: false, access: { has: (obj) => "getProperties" in obj, get: (obj) => obj.getProperties }, metadata: _metadata }, null, _instanceExtraInitializers);
12032
12107
  __esDecorate5(this, null, _jsonValue_decorators, { kind: "method", name: "jsonValue", static: false, private: false, access: { has: (obj) => "jsonValue" in obj, get: (obj) => obj.jsonValue }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -12060,6 +12135,7 @@
12060
12135
  __esDecorate5(this, null, _screenshot_decorators, { kind: "method", name: "screenshot", static: false, private: false, access: { has: (obj) => "screenshot" in obj, get: (obj) => obj.screenshot }, metadata: _metadata }, null, _instanceExtraInitializers);
12061
12136
  __esDecorate5(this, null, _isIntersectingViewport_decorators, { kind: "method", name: "isIntersectingViewport", static: false, private: false, access: { has: (obj) => "isIntersectingViewport" in obj, get: (obj) => obj.isIntersectingViewport }, metadata: _metadata }, null, _instanceExtraInitializers);
12062
12137
  __esDecorate5(this, null, _scrollIntoView_decorators, { kind: "method", name: "scrollIntoView", static: false, private: false, access: { has: (obj) => "scrollIntoView" in obj, get: (obj) => obj.scrollIntoView }, metadata: _metadata }, null, _instanceExtraInitializers);
12138
+ __esDecorate5(this, null, _asLocator_decorators, { kind: "method", name: "asLocator", static: false, private: false, access: { has: (obj) => "asLocator" in obj, get: (obj) => obj.asLocator }, metadata: _metadata }, null, _instanceExtraInitializers);
12063
12139
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
12064
12140
  }
12065
12141
  /**
@@ -13094,6 +13170,14 @@
13094
13170
  });
13095
13171
  });
13096
13172
  }
13173
+ /**
13174
+ * Creates a locator based on an ElementHandle. This would not allow
13175
+ * refreshing the element handle if it is stale but it allows re-using other
13176
+ * locator pre-conditions.
13177
+ */
13178
+ asLocator() {
13179
+ return NodeLocator.createFromHandle(this.frame, this);
13180
+ }
13097
13181
  /**
13098
13182
  * Returns true if an element is an SVGElement (included svg, path, rect
13099
13183
  * etc.).
@@ -14123,9 +14207,6 @@ ${sourceUrlComment}
14123
14207
  }
14124
14208
  const interestingNodes = /* @__PURE__ */ new Set();
14125
14209
  this.collectInterestingNodes(interestingNodes, defaultRoot, false);
14126
- if (!interestingNodes.has(needle)) {
14127
- return null;
14128
- }
14129
14210
  return this.serializeTree(needle, interestingNodes)[0] ?? null;
14130
14211
  }
14131
14212
  serializeTree(node, interestingNodes) {
@@ -14172,7 +14253,6 @@ ${sourceUrlComment}
14172
14253
  #name;
14173
14254
  #role;
14174
14255
  #ignored;
14175
- #cachedHasFocusableChild;
14176
14256
  #realm;
14177
14257
  constructor(realm, payload) {
14178
14258
  this.payload = payload;
@@ -14206,18 +14286,6 @@ ${sourceUrlComment}
14206
14286
  const role = this.#role;
14207
14287
  return role === "LineBreak" || role === "text" || role === "InlineTextBox" || role === "StaticText";
14208
14288
  }
14209
- #hasFocusableChild() {
14210
- if (this.#cachedHasFocusableChild === void 0) {
14211
- this.#cachedHasFocusableChild = false;
14212
- for (const child of this.children) {
14213
- if (child.#focusable || child.#hasFocusableChild()) {
14214
- this.#cachedHasFocusableChild = true;
14215
- break;
14216
- }
14217
- }
14218
- }
14219
- return this.#cachedHasFocusableChild;
14220
- }
14221
14289
  find(predicate) {
14222
14290
  if (predicate(this)) {
14223
14291
  return this;
@@ -14251,12 +14319,6 @@ ${sourceUrlComment}
14251
14319
  default:
14252
14320
  break;
14253
14321
  }
14254
- if (this.#hasFocusableChild()) {
14255
- return false;
14256
- }
14257
- if (this.#focusable && this.#name) {
14258
- return true;
14259
- }
14260
14322
  if (this.#role === "heading" && this.#name) {
14261
14323
  return true;
14262
14324
  }
@@ -14323,10 +14385,21 @@ ${sourceUrlComment}
14323
14385
  const node = {
14324
14386
  role: this.#role,
14325
14387
  elementHandle: async () => {
14326
- if (!this.payload.backendDOMNodeId) {
14327
- return null;
14388
+ const env_2 = { stack: [], error: void 0, hasError: false };
14389
+ try {
14390
+ if (!this.payload.backendDOMNodeId) {
14391
+ return null;
14392
+ }
14393
+ const handle = __addDisposableResource11(env_2, await this.#realm.adoptBackendNode(this.payload.backendDOMNodeId), false);
14394
+ return await handle.evaluateHandle((node2) => {
14395
+ return node2.nodeType === Node.TEXT_NODE ? node2.parentElement : node2;
14396
+ });
14397
+ } catch (e_2) {
14398
+ env_2.error = e_2;
14399
+ env_2.hasError = true;
14400
+ } finally {
14401
+ __disposeResources11(env_2);
14328
14402
  }
14329
- return await this.#realm.adoptBackendNode(this.payload.backendDOMNodeId);
14330
14403
  }
14331
14404
  };
14332
14405
  const userStringProperties = [
@@ -14813,6 +14886,7 @@ ${sourceUrlComment}
14813
14886
  #sameDocumentNavigationDeferred = Deferred.create();
14814
14887
  #lifecycleDeferred = Deferred.create();
14815
14888
  #newDocumentNavigationDeferred = Deferred.create();
14889
+ #error = new Error("LifecycleWatcher terminated");
14816
14890
  #hasSameDocumentNavigation;
14817
14891
  #swapped;
14818
14892
  #navigationResponseReceived;
@@ -14829,6 +14903,9 @@ ${sourceUrlComment}
14829
14903
  return protocolEvent;
14830
14904
  });
14831
14905
  signal?.addEventListener("abort", () => {
14906
+ if (signal.reason instanceof Error) {
14907
+ signal.reason.cause = this.#error;
14908
+ }
14832
14909
  this.#terminationDeferred.reject(signal.reason);
14833
14910
  });
14834
14911
  this.#frame = frame;
@@ -14876,7 +14953,8 @@ ${sourceUrlComment}
14876
14953
  }
14877
14954
  #onFrameDetached(frame) {
14878
14955
  if (this.#frame === frame) {
14879
- this.#terminationDeferred.resolve(new Error("Navigating frame was detached"));
14956
+ this.#error.message = "Navigating frame was detached";
14957
+ this.#terminationDeferred.resolve(this.#error);
14880
14958
  return;
14881
14959
  }
14882
14960
  this.#checkLifecycleComplete();
@@ -14938,7 +15016,8 @@ ${sourceUrlComment}
14938
15016
  }
14939
15017
  dispose() {
14940
15018
  this.#subscriptions.dispose();
14941
- this.#terminationDeferred.resolve(new Error("LifecycleWatcher disposed"));
15019
+ this.#error.cause = new Error("LifecycleWatcher disposed");
15020
+ this.#terminationDeferred.resolve(this.#error);
14942
15021
  }
14943
15022
  };
14944
15023
 
@@ -16267,11 +16346,12 @@ ${sourceUrlComment}
16267
16346
  #credentials = null;
16268
16347
  #attemptedAuthentications = /* @__PURE__ */ new Set();
16269
16348
  #userRequestInterceptionEnabled = false;
16270
- #protocolRequestInterceptionEnabled = false;
16349
+ #protocolRequestInterceptionEnabled;
16271
16350
  #userCacheDisabled;
16272
16351
  #emulatedNetworkConditions;
16273
16352
  #userAgent;
16274
16353
  #userAgentMetadata;
16354
+ #platform;
16275
16355
  #handlers = [
16276
16356
  ["Fetch.requestPaused", this.#onRequestPaused],
16277
16357
  ["Fetch.authRequired", this.#onAuthRequired],
@@ -16379,7 +16459,7 @@ ${sourceUrlComment}
16379
16459
  async emulateNetworkConditions(networkConditions) {
16380
16460
  if (!this.#emulatedNetworkConditions) {
16381
16461
  this.#emulatedNetworkConditions = {
16382
- offline: false,
16462
+ offline: networkConditions?.offline ?? false,
16383
16463
  upload: -1,
16384
16464
  download: -1,
16385
16465
  latency: 0
@@ -16388,6 +16468,7 @@ ${sourceUrlComment}
16388
16468
  this.#emulatedNetworkConditions.upload = networkConditions ? networkConditions.upload : -1;
16389
16469
  this.#emulatedNetworkConditions.download = networkConditions ? networkConditions.download : -1;
16390
16470
  this.#emulatedNetworkConditions.latency = networkConditions ? networkConditions.latency : 0;
16471
+ this.#emulatedNetworkConditions.offline = networkConditions?.offline ?? false;
16391
16472
  await this.#applyToAllClients(this.#applyNetworkConditions.bind(this));
16392
16473
  }
16393
16474
  async #applyToAllClients(fn) {
@@ -16413,9 +16494,10 @@ ${sourceUrlComment}
16413
16494
  throw error;
16414
16495
  }
16415
16496
  }
16416
- async setUserAgent(userAgent, userAgentMetadata) {
16497
+ async setUserAgent(userAgent, userAgentMetadata, platform) {
16417
16498
  this.#userAgent = userAgent;
16418
16499
  this.#userAgentMetadata = userAgentMetadata;
16500
+ this.#platform = platform;
16419
16501
  await this.#applyToAllClients(this.#applyUserAgent.bind(this));
16420
16502
  }
16421
16503
  async #applyUserAgent(client) {
@@ -16425,7 +16507,8 @@ ${sourceUrlComment}
16425
16507
  try {
16426
16508
  await client.send("Network.setUserAgentOverride", {
16427
16509
  userAgent: this.#userAgent,
16428
- userAgentMetadata: this.#userAgentMetadata
16510
+ userAgentMetadata: this.#userAgentMetadata,
16511
+ platform: this.#platform
16429
16512
  });
16430
16513
  } catch (error) {
16431
16514
  if (this.#canIgnoreError(error)) {
@@ -16448,6 +16531,9 @@ ${sourceUrlComment}
16448
16531
  await this.#applyToAllClients(this.#applyProtocolRequestInterception.bind(this));
16449
16532
  }
16450
16533
  async #applyProtocolRequestInterception(client) {
16534
+ if (this.#protocolRequestInterceptionEnabled === void 0) {
16535
+ return;
16536
+ }
16451
16537
  if (this.#userCacheDisabled === void 0) {
16452
16538
  this.#userCacheDisabled = false;
16453
16539
  }
@@ -18588,6 +18674,14 @@ ${sourceUrlComment}
18588
18674
  }
18589
18675
  }
18590
18676
  }
18677
+ async resize(params) {
18678
+ const { windowId } = await this.#primaryTargetClient.send("Browser.getWindowForTarget");
18679
+ await this.#primaryTargetClient.send("Browser.setContentsSize", {
18680
+ windowId,
18681
+ width: params.contentWidth,
18682
+ height: params.contentHeight
18683
+ });
18684
+ }
18591
18685
  async #onFileChooser(event) {
18592
18686
  const env_1 = { stack: [], error: void 0, hasError: false };
18593
18687
  try {
@@ -18844,8 +18938,13 @@ ${sourceUrlComment}
18844
18938
  async setExtraHTTPHeaders(headers) {
18845
18939
  return await this.#frameManager.networkManager.setExtraHTTPHeaders(headers);
18846
18940
  }
18847
- async setUserAgent(userAgent, userAgentMetadata) {
18848
- return await this.#frameManager.networkManager.setUserAgent(userAgent, userAgentMetadata);
18941
+ async setUserAgent(userAgentOrOptions, userAgentMetadata) {
18942
+ if (typeof userAgentOrOptions === "string") {
18943
+ return await this.#frameManager.networkManager.setUserAgent(userAgentOrOptions, userAgentMetadata);
18944
+ } else {
18945
+ const userAgent = userAgentOrOptions.userAgent ?? await this.browser().userAgent();
18946
+ return await this.#frameManager.networkManager.setUserAgent(userAgent, userAgentOrOptions.userAgentMetadata, userAgentOrOptions.platform);
18947
+ }
18849
18948
  }
18850
18949
  async metrics() {
18851
18950
  const response = await this.#primaryTargetClient.send("Performance.getMetrics");
@@ -18953,7 +19052,7 @@ ${sourceUrlComment}
18953
19052
  const history = await this.#primaryTargetClient.send("Page.getNavigationHistory");
18954
19053
  const entry = history.entries[history.currentIndex + delta];
18955
19054
  if (!entry) {
18956
- return null;
19055
+ throw new Error("History entry to navigate to not found.");
18957
19056
  }
18958
19057
  const result = await Promise.all([
18959
19058
  this.waitForNavigation(options),
@@ -19096,7 +19195,7 @@ ${sourceUrlComment}
19096
19195
  try {
19097
19196
  const _guard = __addDisposableResource12(env_3, await this.browserContext().waitForScreenshotOperations(), false);
19098
19197
  const connection = this.#primaryTargetClient.connection();
19099
- assert(connection, "Protocol error: Connection closed. Most likely the page has been closed.");
19198
+ assert(connection, "Connection closed. Most likely the page has been closed.");
19100
19199
  const runBeforeUnload = !!options.runBeforeUnload;
19101
19200
  if (runBeforeUnload) {
19102
19201
  await this.#primaryTargetClient.send("Page.close");
@@ -20161,7 +20260,7 @@ puppeteer-core/lib/esm/puppeteer/common/Debug.js:
20161
20260
  puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js:
20162
20261
  puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js:
20163
20262
  puppeteer-core/lib/esm/puppeteer/common/FileChooser.js:
20164
- puppeteer-core/lib/esm/puppeteer/cdp/AriaQueryHandler.js:
20263
+ puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js:
20165
20264
  puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js:
20166
20265
  puppeteer-core/lib/esm/puppeteer/cdp/BrowserConnector.js:
20167
20266
  (**