isomorfeus-puppetmaster 0.5.5 → 0.5.6

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 (710) hide show
  1. checksums.yaml +4 -4
  2. data/lib/isomorfeus/puppetmaster/console_message.rb +18 -18
  3. data/lib/isomorfeus/puppetmaster/cookie.rb +46 -46
  4. data/lib/isomorfeus/puppetmaster/driver/puppeteer.rb +413 -415
  5. data/lib/isomorfeus/puppetmaster/driver/puppeteer_document.rb +953 -953
  6. data/lib/isomorfeus/puppetmaster/driver/puppeteer_node.rb +851 -851
  7. data/lib/isomorfeus/puppetmaster/errors.rb +90 -90
  8. data/lib/isomorfeus/puppetmaster/iframe.rb +16 -16
  9. data/lib/isomorfeus/puppetmaster/node/content_editable.rb +17 -17
  10. data/lib/isomorfeus/puppetmaster/node/input.rb +20 -20
  11. data/lib/isomorfeus/puppetmaster/node/select.rb +35 -35
  12. data/lib/isomorfeus/puppetmaster/node.rb +279 -279
  13. data/lib/isomorfeus/puppetmaster/request.rb +16 -16
  14. data/lib/isomorfeus/puppetmaster/response.rb +25 -25
  15. data/lib/isomorfeus/puppetmaster/self_forwardable.rb +38 -38
  16. data/lib/isomorfeus/puppetmaster/version.rb +3 -3
  17. data/lib/isomorfeus/puppetmaster.rb +85 -85
  18. data/lib/isomorfeus-puppetmaster.rb +1 -0
  19. data/node_modules/.bin/extract-zip +12 -12
  20. data/node_modules/.bin/extract-zip.ps1 +28 -28
  21. data/node_modules/.bin/rimraf +12 -12
  22. data/node_modules/.bin/rimraf.ps1 +28 -28
  23. data/node_modules/.package-lock.json +530 -585
  24. data/node_modules/@types/node/LICENSE +21 -21
  25. data/node_modules/@types/node/assert/strict.d.ts +8 -8
  26. data/node_modules/@types/node/assert.d.ts +912 -912
  27. data/node_modules/@types/node/async_hooks.d.ts +497 -497
  28. data/node_modules/@types/node/buffer.d.ts +2142 -2142
  29. data/node_modules/@types/node/child_process.d.ts +1355 -1355
  30. data/node_modules/@types/node/cluster.d.ts +414 -414
  31. data/node_modules/@types/node/console.d.ts +407 -407
  32. data/node_modules/@types/node/constants.d.ts +18 -18
  33. data/node_modules/@types/node/crypto.d.ts +3224 -3224
  34. data/node_modules/@types/node/dgram.d.ts +545 -545
  35. data/node_modules/@types/node/diagnostics_channel.d.ts +128 -128
  36. data/node_modules/@types/node/dns/promises.d.ts +357 -357
  37. data/node_modules/@types/node/dns.d.ts +643 -643
  38. data/node_modules/@types/node/domain.d.ts +169 -169
  39. data/node_modules/@types/node/events.d.ts +623 -623
  40. data/node_modules/@types/node/fs/promises.d.ts +997 -997
  41. data/node_modules/@types/node/fs.d.ts +3723 -3723
  42. data/node_modules/@types/node/globals.d.ts +285 -285
  43. data/node_modules/@types/node/globals.global.d.ts +1 -1
  44. data/node_modules/@types/node/http.d.ts +1358 -1358
  45. data/node_modules/@types/node/http2.d.ts +2100 -2100
  46. data/node_modules/@types/node/https.d.ts +391 -391
  47. data/node_modules/@types/node/index.d.ts +131 -131
  48. data/node_modules/@types/node/inspector.d.ts +2738 -2738
  49. data/node_modules/@types/node/module.d.ts +114 -114
  50. data/node_modules/@types/node/net.d.ts +783 -783
  51. data/node_modules/@types/node/os.d.ts +455 -455
  52. data/node_modules/@types/node/package.json +229 -229
  53. data/node_modules/@types/node/path.d.ts +172 -172
  54. data/node_modules/@types/node/perf_hooks.d.ts +555 -555
  55. data/node_modules/@types/node/process.d.ts +1477 -1477
  56. data/node_modules/@types/node/punycode.d.ts +117 -117
  57. data/node_modules/@types/node/querystring.d.ts +131 -131
  58. data/node_modules/@types/node/readline.d.ts +542 -542
  59. data/node_modules/@types/node/repl.d.ts +424 -424
  60. data/node_modules/@types/node/stream/consumers.d.ts +24 -24
  61. data/node_modules/@types/node/stream/promises.d.ts +42 -42
  62. data/node_modules/@types/node/stream/web.d.ts +6 -6
  63. data/node_modules/@types/node/stream.d.ts +1181 -1181
  64. data/node_modules/@types/node/string_decoder.d.ts +67 -67
  65. data/node_modules/@types/node/timers/promises.d.ts +68 -68
  66. data/node_modules/@types/node/timers.d.ts +94 -94
  67. data/node_modules/@types/node/tls.d.ts +1019 -1019
  68. data/node_modules/@types/node/trace_events.d.ts +161 -161
  69. data/node_modules/@types/node/tty.d.ts +206 -206
  70. data/node_modules/@types/node/url.d.ts +798 -798
  71. data/node_modules/@types/node/util.d.ts +1556 -1556
  72. data/node_modules/@types/node/v8.d.ts +378 -378
  73. data/node_modules/@types/node/vm.d.ts +504 -504
  74. data/node_modules/@types/node/wasi.d.ts +153 -153
  75. data/node_modules/@types/node/worker_threads.d.ts +649 -649
  76. data/node_modules/@types/node/zlib.d.ts +517 -517
  77. data/node_modules/@types/yauzl/LICENSE +21 -21
  78. data/node_modules/@types/yauzl/index.d.ts +98 -98
  79. data/node_modules/@types/yauzl/package.json +26 -26
  80. data/node_modules/agent-base/README.md +145 -145
  81. data/node_modules/agent-base/dist/src/index.d.ts +78 -78
  82. data/node_modules/agent-base/dist/src/index.js +202 -202
  83. data/node_modules/agent-base/dist/src/promisify.d.ts +4 -4
  84. data/node_modules/agent-base/dist/src/promisify.js +17 -17
  85. data/node_modules/agent-base/package.json +64 -64
  86. data/node_modules/agent-base/src/index.ts +345 -345
  87. data/node_modules/agent-base/src/promisify.ts +33 -33
  88. data/node_modules/balanced-match/.github/FUNDING.yml +2 -2
  89. data/node_modules/balanced-match/LICENSE.md +21 -21
  90. data/node_modules/balanced-match/README.md +97 -97
  91. data/node_modules/balanced-match/index.js +62 -62
  92. data/node_modules/balanced-match/package.json +48 -48
  93. data/node_modules/base64-js/LICENSE +21 -21
  94. data/node_modules/base64-js/README.md +34 -34
  95. data/node_modules/base64-js/index.d.ts +3 -3
  96. data/node_modules/base64-js/index.js +150 -150
  97. data/node_modules/base64-js/package.json +47 -47
  98. data/node_modules/bl/.travis.yml +17 -17
  99. data/node_modules/bl/BufferList.js +396 -396
  100. data/node_modules/bl/LICENSE.md +13 -13
  101. data/node_modules/bl/README.md +247 -247
  102. data/node_modules/bl/bl.js +84 -84
  103. data/node_modules/bl/package.json +37 -37
  104. data/node_modules/bl/test/convert.js +21 -21
  105. data/node_modules/bl/test/indexOf.js +492 -492
  106. data/node_modules/bl/test/isBufferList.js +32 -32
  107. data/node_modules/bl/test/test.js +869 -869
  108. data/node_modules/brace-expansion/LICENSE +21 -21
  109. data/node_modules/brace-expansion/README.md +129 -129
  110. data/node_modules/brace-expansion/index.js +201 -201
  111. data/node_modules/brace-expansion/package.json +47 -47
  112. data/node_modules/buffer/AUTHORS.md +70 -70
  113. data/node_modules/buffer/LICENSE +21 -21
  114. data/node_modules/buffer/README.md +410 -410
  115. data/node_modules/buffer/index.d.ts +186 -186
  116. data/node_modules/buffer/index.js +1817 -1817
  117. data/node_modules/buffer/package.json +96 -96
  118. data/node_modules/buffer-crc32/LICENSE +19 -19
  119. data/node_modules/buffer-crc32/README.md +47 -47
  120. data/node_modules/buffer-crc32/index.js +111 -111
  121. data/node_modules/buffer-crc32/package.json +39 -39
  122. data/node_modules/chownr/LICENSE +15 -15
  123. data/node_modules/chownr/README.md +3 -3
  124. data/node_modules/chownr/chownr.js +167 -167
  125. data/node_modules/chownr/package.json +29 -29
  126. data/node_modules/concat-map/.travis.yml +4 -4
  127. data/node_modules/concat-map/LICENSE +18 -18
  128. data/node_modules/concat-map/README.markdown +62 -62
  129. data/node_modules/concat-map/example/map.js +6 -6
  130. data/node_modules/concat-map/index.js +13 -13
  131. data/node_modules/concat-map/package.json +43 -43
  132. data/node_modules/concat-map/test/map.js +39 -39
  133. data/node_modules/debug/LICENSE +19 -19
  134. data/node_modules/debug/README.md +455 -455
  135. data/node_modules/debug/package.json +59 -59
  136. data/node_modules/debug/src/browser.js +269 -269
  137. data/node_modules/debug/src/common.js +274 -274
  138. data/node_modules/debug/src/index.js +10 -10
  139. data/node_modules/debug/src/node.js +263 -263
  140. data/node_modules/devtools-protocol/LICENSE +27 -27
  141. data/node_modules/devtools-protocol/README.md +12 -12
  142. data/node_modules/devtools-protocol/json/browser_protocol.json +20985 -20640
  143. data/node_modules/devtools-protocol/json/js_protocol.json +3531 -3580
  144. data/node_modules/devtools-protocol/package.json +17 -18
  145. data/node_modules/devtools-protocol/pdl/browser_protocol.pdl +9849 -9637
  146. data/node_modules/devtools-protocol/pdl/js_protocol.pdl +1653 -1678
  147. data/node_modules/devtools-protocol/types/protocol-mapping.d.ts +4333 -4321
  148. data/node_modules/devtools-protocol/types/protocol-proxy-api.d.ts +3695 -3683
  149. data/node_modules/devtools-protocol/types/protocol.d.ts +15714 -15538
  150. data/node_modules/end-of-stream/LICENSE +20 -20
  151. data/node_modules/end-of-stream/README.md +54 -54
  152. data/node_modules/end-of-stream/index.js +94 -94
  153. data/node_modules/end-of-stream/package.json +37 -37
  154. data/node_modules/extract-zip/LICENSE +23 -23
  155. data/node_modules/extract-zip/cli.js +19 -19
  156. data/node_modules/extract-zip/index.d.ts +21 -21
  157. data/node_modules/extract-zip/index.js +173 -173
  158. data/node_modules/extract-zip/package.json +80 -80
  159. data/node_modules/extract-zip/readme.md +57 -57
  160. data/node_modules/fd-slicer/.npmignore +2 -2
  161. data/node_modules/fd-slicer/.travis.yml +7 -7
  162. data/node_modules/fd-slicer/CHANGELOG.md +49 -49
  163. data/node_modules/fd-slicer/LICENSE +21 -21
  164. data/node_modules/fd-slicer/README.md +199 -199
  165. data/node_modules/fd-slicer/index.js +296 -296
  166. data/node_modules/fd-slicer/package.json +36 -36
  167. data/node_modules/fd-slicer/test/test.js +350 -350
  168. data/node_modules/find-up/index.d.ts +137 -137
  169. data/node_modules/find-up/index.js +89 -89
  170. data/node_modules/find-up/license +9 -9
  171. data/node_modules/find-up/package.json +53 -53
  172. data/node_modules/find-up/readme.md +156 -156
  173. data/node_modules/fs-constants/LICENSE +21 -21
  174. data/node_modules/fs-constants/README.md +26 -26
  175. data/node_modules/fs-constants/browser.js +1 -1
  176. data/node_modules/fs-constants/index.js +1 -1
  177. data/node_modules/fs-constants/package.json +19 -19
  178. data/node_modules/fs.realpath/LICENSE +43 -43
  179. data/node_modules/fs.realpath/README.md +33 -33
  180. data/node_modules/fs.realpath/index.js +66 -66
  181. data/node_modules/fs.realpath/old.js +303 -303
  182. data/node_modules/fs.realpath/package.json +26 -26
  183. data/node_modules/get-stream/buffer-stream.js +52 -52
  184. data/node_modules/get-stream/index.d.ts +108 -108
  185. data/node_modules/get-stream/index.js +60 -60
  186. data/node_modules/get-stream/license +9 -9
  187. data/node_modules/get-stream/package.json +50 -50
  188. data/node_modules/get-stream/readme.md +124 -124
  189. data/node_modules/glob/LICENSE +21 -21
  190. data/node_modules/glob/README.md +375 -375
  191. data/node_modules/glob/changelog.md +67 -67
  192. data/node_modules/glob/common.js +234 -234
  193. data/node_modules/glob/glob.js +788 -788
  194. data/node_modules/glob/package.json +51 -51
  195. data/node_modules/glob/sync.js +484 -484
  196. data/node_modules/https-proxy-agent/README.md +137 -137
  197. data/node_modules/https-proxy-agent/dist/agent.d.ts +30 -30
  198. data/node_modules/https-proxy-agent/dist/agent.js +179 -179
  199. data/node_modules/https-proxy-agent/dist/index.d.ts +23 -23
  200. data/node_modules/https-proxy-agent/dist/index.js +13 -13
  201. data/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -7
  202. data/node_modules/https-proxy-agent/dist/parse-proxy-response.js +65 -65
  203. data/node_modules/https-proxy-agent/package.json +56 -56
  204. data/node_modules/ieee754/LICENSE +11 -11
  205. data/node_modules/ieee754/README.md +51 -51
  206. data/node_modules/ieee754/index.d.ts +9 -9
  207. data/node_modules/ieee754/index.js +85 -85
  208. data/node_modules/ieee754/package.json +52 -52
  209. data/node_modules/inflight/LICENSE +15 -15
  210. data/node_modules/inflight/README.md +37 -37
  211. data/node_modules/inflight/inflight.js +54 -54
  212. data/node_modules/inflight/package.json +29 -29
  213. data/node_modules/inherits/LICENSE +16 -16
  214. data/node_modules/inherits/README.md +42 -42
  215. data/node_modules/inherits/inherits.js +9 -9
  216. data/node_modules/inherits/inherits_browser.js +27 -27
  217. data/node_modules/inherits/package.json +29 -29
  218. data/node_modules/locate-path/index.d.ts +83 -83
  219. data/node_modules/locate-path/index.js +65 -65
  220. data/node_modules/locate-path/license +9 -9
  221. data/node_modules/locate-path/package.json +45 -45
  222. data/node_modules/locate-path/readme.md +122 -122
  223. data/node_modules/minimatch/LICENSE +15 -15
  224. data/node_modules/minimatch/README.md +209 -209
  225. data/node_modules/minimatch/minimatch.js +923 -923
  226. data/node_modules/minimatch/package.json +30 -30
  227. data/node_modules/mkdirp-classic/LICENSE +21 -21
  228. data/node_modules/mkdirp-classic/README.md +18 -18
  229. data/node_modules/mkdirp-classic/index.js +98 -98
  230. data/node_modules/mkdirp-classic/package.json +18 -18
  231. data/node_modules/ms/index.js +162 -162
  232. data/node_modules/ms/license.md +21 -21
  233. data/node_modules/ms/package.json +37 -37
  234. data/node_modules/ms/readme.md +60 -60
  235. data/node_modules/node-fetch/LICENSE.md +22 -22
  236. data/node_modules/node-fetch/README.md +590 -590
  237. data/node_modules/node-fetch/browser.js +24 -24
  238. data/node_modules/node-fetch/lib/index.es.js +1662 -1662
  239. data/node_modules/node-fetch/lib/index.js +1671 -1671
  240. data/node_modules/node-fetch/lib/index.mjs +1660 -1660
  241. data/node_modules/node-fetch/package.json +68 -68
  242. data/node_modules/once/LICENSE +15 -15
  243. data/node_modules/once/README.md +79 -79
  244. data/node_modules/once/once.js +42 -42
  245. data/node_modules/once/package.json +33 -33
  246. data/node_modules/p-limit/index.d.ts +38 -38
  247. data/node_modules/p-limit/index.js +57 -57
  248. data/node_modules/p-limit/license +9 -9
  249. data/node_modules/p-limit/package.json +52 -52
  250. data/node_modules/p-limit/readme.md +101 -101
  251. data/node_modules/p-locate/index.d.ts +64 -64
  252. data/node_modules/p-locate/index.js +52 -52
  253. data/node_modules/p-locate/license +9 -9
  254. data/node_modules/p-locate/package.json +53 -53
  255. data/node_modules/p-locate/readme.md +90 -90
  256. data/node_modules/p-try/index.d.ts +39 -39
  257. data/node_modules/p-try/index.js +9 -9
  258. data/node_modules/p-try/license +9 -9
  259. data/node_modules/p-try/package.json +42 -42
  260. data/node_modules/p-try/readme.md +58 -58
  261. data/node_modules/path-exists/index.d.ts +28 -28
  262. data/node_modules/path-exists/index.js +23 -23
  263. data/node_modules/path-exists/license +9 -9
  264. data/node_modules/path-exists/package.json +39 -39
  265. data/node_modules/path-exists/readme.md +52 -52
  266. data/node_modules/path-is-absolute/index.js +20 -20
  267. data/node_modules/path-is-absolute/license +21 -21
  268. data/node_modules/path-is-absolute/package.json +43 -43
  269. data/node_modules/path-is-absolute/readme.md +59 -59
  270. data/node_modules/pend/LICENSE +23 -23
  271. data/node_modules/pend/README.md +41 -41
  272. data/node_modules/pend/index.js +55 -55
  273. data/node_modules/pend/package.json +18 -18
  274. data/node_modules/pend/test.js +137 -137
  275. data/node_modules/pkg-dir/index.d.ts +44 -44
  276. data/node_modules/pkg-dir/index.js +17 -17
  277. data/node_modules/pkg-dir/license +9 -9
  278. data/node_modules/pkg-dir/package.json +56 -56
  279. data/node_modules/pkg-dir/readme.md +66 -66
  280. data/node_modules/progress/CHANGELOG.md +115 -115
  281. data/node_modules/progress/LICENSE +22 -22
  282. data/node_modules/progress/Makefile +8 -8
  283. data/node_modules/progress/Readme.md +146 -146
  284. data/node_modules/progress/index.js +1 -1
  285. data/node_modules/progress/lib/node-progress.js +236 -236
  286. data/node_modules/progress/package.json +26 -26
  287. data/node_modules/proxy-from-env/.eslintrc +29 -29
  288. data/node_modules/proxy-from-env/.travis.yml +10 -10
  289. data/node_modules/proxy-from-env/LICENSE +20 -20
  290. data/node_modules/proxy-from-env/README.md +131 -131
  291. data/node_modules/proxy-from-env/index.js +108 -108
  292. data/node_modules/proxy-from-env/package.json +34 -34
  293. data/node_modules/proxy-from-env/test.js +483 -483
  294. data/node_modules/pump/.travis.yml +5 -5
  295. data/node_modules/pump/LICENSE +20 -20
  296. data/node_modules/pump/README.md +65 -65
  297. data/node_modules/pump/index.js +82 -82
  298. data/node_modules/pump/package.json +24 -24
  299. data/node_modules/pump/test-browser.js +66 -66
  300. data/node_modules/pump/test-node.js +53 -53
  301. data/node_modules/puppeteer-core/CHANGELOG.md +319 -290
  302. data/node_modules/puppeteer-core/LICENSE +202 -202
  303. data/node_modules/puppeteer-core/README.md +481 -481
  304. data/node_modules/puppeteer-core/cjs-entry-core.js +29 -29
  305. data/node_modules/puppeteer-core/cjs-entry.js +29 -29
  306. data/node_modules/puppeteer-core/install.js +89 -89
  307. data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.d.ts +110 -110
  308. data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.js +80 -80
  309. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.d.ts +175 -175
  310. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.js +360 -360
  311. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.d.ts +20 -20
  312. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js +84 -84
  313. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js.map +1 -1
  314. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.d.ts +455 -455
  315. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.js +540 -540
  316. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.d.ts +53 -53
  317. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.js +97 -97
  318. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
  319. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js +34 -34
  320. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.d.ts +135 -135
  321. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js +298 -298
  322. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.d.ts +24 -24
  323. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.js +17 -17
  324. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +72 -72
  325. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.js +64 -64
  326. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.d.ts +204 -204
  327. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.js +335 -335
  328. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.d.ts +175 -175
  329. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.js +662 -662
  330. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.d.ts +52 -52
  331. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.js +81 -81
  332. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.d.ts +40 -40
  333. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.js +1070 -1070
  334. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.d.ts +74 -74
  335. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.js +97 -97
  336. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.d.ts +24 -24
  337. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.js +37 -37
  338. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.d.ts +50 -50
  339. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.js +56 -56
  340. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.d.ts +60 -60
  341. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.js +17 -17
  342. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.d.ts +92 -92
  343. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js +116 -116
  344. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.d.ts +81 -81
  345. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.js +86 -86
  346. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.d.ts +193 -193
  347. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js +321 -321
  348. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.d.ts +58 -58
  349. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.js +71 -71
  350. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.d.ts +744 -744
  351. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js +1047 -1047
  352. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js.map +1 -1
  353. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts +350 -345
  354. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  355. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js +549 -549
  356. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js.map +1 -1
  357. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts +134 -125
  358. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  359. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js +184 -164
  360. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js.map +1 -1
  361. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.d.ts +358 -358
  362. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.js +543 -543
  363. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.d.ts +490 -490
  364. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.js +827 -827
  365. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts +65 -65
  366. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
  367. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js +149 -148
  368. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js.map +1 -1
  369. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.d.ts +26 -26
  370. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.js +33 -33
  371. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts +126 -97
  372. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts.map +1 -1
  373. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js +467 -342
  374. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js.map +1 -1
  375. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.d.ts +161 -161
  376. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.js +34 -34
  377. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.d.ts +2055 -2055
  378. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js +2533 -2533
  379. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.d.ts +20 -20
  380. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.js +17 -17
  381. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.d.ts +159 -159
  382. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.js +161 -161
  383. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.d.ts +51 -51
  384. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.js +2 -2
  385. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.d.ts +64 -64
  386. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.js +165 -165
  387. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.d.ts +60 -60
  388. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.js +76 -76
  389. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.d.ts +100 -100
  390. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.js +145 -145
  391. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.d.ts +20 -20
  392. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.js +29 -29
  393. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.d.ts +27 -27
  394. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.js +47 -47
  395. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.d.ts +46 -46
  396. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.js +109 -109
  397. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts +39 -39
  398. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.js +406 -406
  399. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.d.ts +98 -98
  400. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.js +112 -112
  401. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.d.ts +22 -22
  402. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.js +33 -33
  403. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.d.ts +16 -16
  404. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.js +43 -43
  405. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.d.ts +84 -84
  406. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.js +327 -327
  407. data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.d.ts +16 -16
  408. data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.js +19 -19
  409. data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.d.ts +16 -16
  410. data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.js +2 -2
  411. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.d.ts +17 -17
  412. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.js +44 -44
  413. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.d.ts +17 -17
  414. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.js +26 -26
  415. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.d.ts +133 -133
  416. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js +500 -500
  417. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts +40 -39
  418. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  419. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js +256 -230
  420. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js.map +1 -1
  421. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.d.ts +134 -134
  422. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.js +17 -17
  423. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts +16 -16
  424. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts.map +1 -1
  425. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js +655 -588
  426. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js.map +1 -1
  427. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
  428. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js +47 -47
  429. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.d.ts +29 -29
  430. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.js +64 -64
  431. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.d.ts +153 -153
  432. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.js +188 -188
  433. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.d.ts +17 -17
  434. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.js +173 -173
  435. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.d.ts +17 -17
  436. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.js +24 -24
  437. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.d.ts +17 -17
  438. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.js +23 -23
  439. data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.d.ts +21 -21
  440. data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.js +22 -22
  441. data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.d.ts +17 -17
  442. data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.js +23 -23
  443. data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.d.ts +27 -27
  444. data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.js +56 -56
  445. data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.d.ts +110 -110
  446. data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.js +80 -80
  447. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.d.ts +175 -175
  448. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.js +356 -356
  449. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.d.ts +20 -20
  450. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js +81 -81
  451. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js.map +1 -1
  452. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.d.ts +455 -455
  453. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.js +535 -535
  454. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.d.ts +53 -53
  455. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.js +74 -74
  456. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
  457. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +30 -30
  458. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.d.ts +135 -135
  459. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.js +293 -293
  460. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.d.ts +24 -24
  461. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.js +16 -16
  462. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.d.ts +72 -72
  463. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js +60 -60
  464. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.d.ts +204 -204
  465. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.js +329 -329
  466. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.d.ts +175 -175
  467. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.js +657 -657
  468. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.d.ts +52 -52
  469. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.js +77 -77
  470. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.d.ts +40 -40
  471. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.js +1067 -1067
  472. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.d.ts +74 -74
  473. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.js +93 -93
  474. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.d.ts +24 -24
  475. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.js +33 -33
  476. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.d.ts +50 -50
  477. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.js +50 -50
  478. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.d.ts +60 -60
  479. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.js +16 -16
  480. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.d.ts +92 -92
  481. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js +109 -109
  482. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.d.ts +81 -81
  483. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.js +83 -83
  484. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.d.ts +193 -193
  485. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.js +317 -317
  486. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.d.ts +58 -58
  487. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.js +67 -67
  488. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.d.ts +744 -744
  489. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js +1042 -1042
  490. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js.map +1 -1
  491. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts +350 -345
  492. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  493. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js +545 -545
  494. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js.map +1 -1
  495. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts +134 -125
  496. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  497. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js +180 -160
  498. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js.map +1 -1
  499. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.d.ts +358 -358
  500. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.js +537 -537
  501. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.d.ts +490 -490
  502. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.js +802 -802
  503. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts +65 -65
  504. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
  505. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js +145 -144
  506. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js.map +1 -1
  507. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.d.ts +26 -26
  508. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.js +30 -30
  509. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts +126 -97
  510. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -1
  511. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js +463 -338
  512. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js.map +1 -1
  513. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.d.ts +161 -161
  514. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js +31 -31
  515. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.d.ts +2055 -2055
  516. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.js +2529 -2529
  517. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.d.ts +20 -20
  518. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.js +16 -16
  519. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.d.ts +159 -159
  520. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.js +157 -157
  521. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.d.ts +51 -51
  522. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.js +1 -1
  523. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.d.ts +64 -64
  524. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js +157 -157
  525. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.d.ts +60 -60
  526. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js +72 -72
  527. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.d.ts +100 -100
  528. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.js +141 -141
  529. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.d.ts +20 -20
  530. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js +25 -25
  531. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.d.ts +27 -27
  532. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.js +43 -43
  533. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.d.ts +46 -46
  534. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.js +105 -105
  535. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.d.ts +39 -39
  536. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.js +403 -403
  537. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.d.ts +98 -98
  538. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.js +108 -108
  539. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.d.ts +22 -22
  540. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.js +28 -28
  541. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.d.ts +16 -16
  542. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.js +20 -20
  543. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.d.ts +84 -84
  544. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.js +305 -305
  545. data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.d.ts +16 -16
  546. data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.js +16 -16
  547. data/node_modules/puppeteer-core/lib/esm/puppeteer/global.d.ts +16 -16
  548. data/node_modules/puppeteer-core/lib/esm/puppeteer/global.js +1 -1
  549. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.d.ts +17 -17
  550. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.js +37 -37
  551. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.d.ts +17 -17
  552. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.js +22 -22
  553. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.d.ts +133 -133
  554. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.js +474 -474
  555. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts +40 -39
  556. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  557. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js +230 -204
  558. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js.map +1 -1
  559. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.d.ts +134 -134
  560. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.js +16 -16
  561. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts +16 -16
  562. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -1
  563. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js +633 -566
  564. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js.map +1 -1
  565. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
  566. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.js +40 -40
  567. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.d.ts +29 -29
  568. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.js +60 -60
  569. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.d.ts +153 -153
  570. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.js +181 -181
  571. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.d.ts +17 -17
  572. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.js +165 -165
  573. data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.d.ts +17 -17
  574. data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.js +22 -22
  575. data/node_modules/puppeteer-core/lib/esm/puppeteer/node.d.ts +17 -17
  576. data/node_modules/puppeteer-core/lib/esm/puppeteer/node.js +21 -21
  577. data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.d.ts +21 -21
  578. data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.js +19 -19
  579. data/node_modules/puppeteer-core/lib/esm/puppeteer/web.d.ts +17 -17
  580. data/node_modules/puppeteer-core/lib/esm/puppeteer/web.js +21 -21
  581. data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.d.ts +27 -27
  582. data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.js +53 -53
  583. data/node_modules/puppeteer-core/lib/types.d.ts +67 -25
  584. data/node_modules/puppeteer-core/package.json +115 -115
  585. data/node_modules/puppeteer-core/typescript-if-required.js +61 -61
  586. data/node_modules/readable-stream/CONTRIBUTING.md +38 -38
  587. data/node_modules/readable-stream/GOVERNANCE.md +136 -136
  588. data/node_modules/readable-stream/LICENSE +47 -47
  589. data/node_modules/readable-stream/README.md +106 -106
  590. data/node_modules/readable-stream/errors-browser.js +127 -127
  591. data/node_modules/readable-stream/errors.js +116 -116
  592. data/node_modules/readable-stream/experimentalWarning.js +17 -17
  593. data/node_modules/readable-stream/lib/_stream_duplex.js +138 -138
  594. data/node_modules/readable-stream/lib/_stream_passthrough.js +38 -38
  595. data/node_modules/readable-stream/lib/_stream_readable.js +1123 -1123
  596. data/node_modules/readable-stream/lib/_stream_transform.js +200 -200
  597. data/node_modules/readable-stream/lib/_stream_writable.js +696 -696
  598. data/node_modules/readable-stream/lib/internal/streams/async_iterator.js +206 -206
  599. data/node_modules/readable-stream/lib/internal/streams/buffer_list.js +209 -209
  600. data/node_modules/readable-stream/lib/internal/streams/destroy.js +104 -104
  601. data/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +103 -103
  602. data/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -3
  603. data/node_modules/readable-stream/lib/internal/streams/from.js +63 -63
  604. data/node_modules/readable-stream/lib/internal/streams/pipeline.js +96 -96
  605. data/node_modules/readable-stream/lib/internal/streams/state.js +26 -26
  606. data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -1
  607. data/node_modules/readable-stream/lib/internal/streams/stream.js +1 -1
  608. data/node_modules/readable-stream/package.json +68 -68
  609. data/node_modules/readable-stream/readable-browser.js +9 -9
  610. data/node_modules/readable-stream/readable.js +16 -16
  611. data/node_modules/rimraf/CHANGELOG.md +65 -65
  612. data/node_modules/rimraf/LICENSE +15 -15
  613. data/node_modules/rimraf/README.md +101 -101
  614. data/node_modules/rimraf/bin.js +68 -68
  615. data/node_modules/rimraf/package.json +32 -32
  616. data/node_modules/rimraf/rimraf.js +360 -360
  617. data/node_modules/safe-buffer/LICENSE +21 -21
  618. data/node_modules/safe-buffer/README.md +584 -584
  619. data/node_modules/safe-buffer/index.d.ts +186 -186
  620. data/node_modules/safe-buffer/index.js +65 -65
  621. data/node_modules/safe-buffer/package.json +51 -51
  622. data/node_modules/string_decoder/LICENSE +48 -48
  623. data/node_modules/string_decoder/README.md +47 -47
  624. data/node_modules/string_decoder/lib/string_decoder.js +295 -295
  625. data/node_modules/string_decoder/package.json +34 -34
  626. data/node_modules/tar-fs/.travis.yml +6 -6
  627. data/node_modules/tar-fs/LICENSE +20 -20
  628. data/node_modules/tar-fs/README.md +165 -165
  629. data/node_modules/tar-fs/index.js +351 -351
  630. data/node_modules/tar-fs/package.json +41 -41
  631. data/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -1
  632. data/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -1
  633. data/node_modules/tar-fs/test/index.js +346 -346
  634. data/node_modules/tar-stream/LICENSE +20 -20
  635. data/node_modules/tar-stream/README.md +168 -168
  636. data/node_modules/tar-stream/extract.js +257 -257
  637. data/node_modules/tar-stream/headers.js +295 -295
  638. data/node_modules/tar-stream/index.js +2 -2
  639. data/node_modules/tar-stream/pack.js +255 -255
  640. data/node_modules/tar-stream/package.json +58 -58
  641. data/node_modules/tar-stream/sandbox.js +11 -11
  642. data/node_modules/through/.travis.yml +5 -5
  643. data/node_modules/through/LICENSE.APACHE2 +15 -15
  644. data/node_modules/through/LICENSE.MIT +24 -24
  645. data/node_modules/through/index.js +108 -108
  646. data/node_modules/through/package.json +36 -36
  647. data/node_modules/through/readme.markdown +64 -64
  648. data/node_modules/through/test/async.js +28 -28
  649. data/node_modules/through/test/auto-destroy.js +30 -30
  650. data/node_modules/through/test/buffering.js +71 -71
  651. data/node_modules/through/test/end.js +45 -45
  652. data/node_modules/through/test/index.js +133 -133
  653. data/node_modules/tr46/.npmignore +4 -4
  654. data/node_modules/tr46/index.js +193 -193
  655. data/node_modules/tr46/package.json +31 -31
  656. data/node_modules/unbzip2-stream/LICENSE +24 -24
  657. data/node_modules/unbzip2-stream/README.md +59 -59
  658. data/node_modules/unbzip2-stream/dist/unbzip2-stream.min.js +1 -1
  659. data/node_modules/unbzip2-stream/index.js +93 -93
  660. data/node_modules/unbzip2-stream/lib/bit_iterator.js +39 -39
  661. data/node_modules/unbzip2-stream/lib/bzip2.js +365 -365
  662. data/node_modules/unbzip2-stream/package.json +51 -51
  663. data/node_modules/util-deprecate/History.md +16 -16
  664. data/node_modules/util-deprecate/LICENSE +24 -24
  665. data/node_modules/util-deprecate/README.md +53 -53
  666. data/node_modules/util-deprecate/browser.js +67 -67
  667. data/node_modules/util-deprecate/node.js +6 -6
  668. data/node_modules/util-deprecate/package.json +27 -27
  669. data/node_modules/webidl-conversions/LICENSE.md +12 -12
  670. data/node_modules/webidl-conversions/README.md +53 -53
  671. data/node_modules/webidl-conversions/lib/index.js +189 -189
  672. data/node_modules/webidl-conversions/package.json +23 -23
  673. data/node_modules/whatwg-url/LICENSE.txt +21 -21
  674. data/node_modules/whatwg-url/README.md +67 -67
  675. data/node_modules/whatwg-url/lib/URL-impl.js +200 -200
  676. data/node_modules/whatwg-url/lib/URL.js +196 -196
  677. data/node_modules/whatwg-url/lib/public-api.js +11 -11
  678. data/node_modules/whatwg-url/lib/utils.js +20 -20
  679. data/node_modules/whatwg-url/package.json +32 -32
  680. data/node_modules/wrappy/LICENSE +15 -15
  681. data/node_modules/wrappy/README.md +36 -36
  682. data/node_modules/wrappy/package.json +29 -29
  683. data/node_modules/wrappy/wrappy.js +33 -33
  684. data/node_modules/ws/LICENSE +19 -19
  685. data/node_modules/ws/README.md +493 -493
  686. data/node_modules/ws/browser.js +8 -8
  687. data/node_modules/ws/index.js +13 -13
  688. data/node_modules/ws/lib/buffer-util.js +126 -126
  689. data/node_modules/ws/lib/constants.js +12 -12
  690. data/node_modules/ws/lib/event-target.js +266 -266
  691. data/node_modules/ws/lib/extension.js +203 -203
  692. data/node_modules/ws/lib/limiter.js +55 -55
  693. data/node_modules/ws/lib/permessage-deflate.js +511 -511
  694. data/node_modules/ws/lib/receiver.js +612 -612
  695. data/node_modules/ws/lib/sender.js +422 -422
  696. data/node_modules/ws/lib/stream.js +180 -180
  697. data/node_modules/ws/lib/subprotocol.js +62 -62
  698. data/node_modules/ws/lib/validation.js +124 -124
  699. data/node_modules/ws/lib/websocket-server.js +485 -485
  700. data/node_modules/ws/lib/websocket.js +1149 -1149
  701. data/node_modules/ws/package.json +61 -61
  702. data/node_modules/ws/wrapper.mjs +8 -8
  703. data/node_modules/yauzl/LICENSE +21 -21
  704. data/node_modules/yauzl/README.md +658 -658
  705. data/node_modules/yauzl/index.js +796 -796
  706. data/node_modules/yauzl/package.json +40 -40
  707. data/package.json +1 -1
  708. metadata +23 -25
  709. data/node_modules/devtools-protocol/changelog.md +0 -10491
  710. data/node_modules/devtools-protocol/externs/protocol_externs.js +0 -9734
@@ -1,828 +1,828 @@
1
- "use strict";
2
- /**
3
- * Copyright 2019 Google Inc. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
- };
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.ElementHandle = exports.JSHandle = exports.createJSHandle = void 0;
38
- const assert_js_1 = require("./assert.js");
39
- const helper_js_1 = require("./helper.js");
40
- const QueryHandler_js_1 = require("./QueryHandler.js");
41
- const environment_js_1 = require("../environment.js");
42
- /**
43
- * @internal
44
- */
45
- function createJSHandle(context, remoteObject) {
46
- const frame = context.frame();
47
- if (remoteObject.subtype === 'node' && frame) {
48
- const frameManager = frame._frameManager;
49
- return new ElementHandle(context, context._client, remoteObject, frameManager.page(), frameManager);
50
- }
51
- return new JSHandle(context, context._client, remoteObject);
52
- }
53
- exports.createJSHandle = createJSHandle;
54
- /**
55
- * Represents an in-page JavaScript object. JSHandles can be created with the
56
- * {@link Page.evaluateHandle | page.evaluateHandle} method.
57
- *
58
- * @example
59
- * ```js
60
- * const windowHandle = await page.evaluateHandle(() => window);
61
- * ```
62
- *
63
- * JSHandle prevents the referenced JavaScript object from being garbage-collected
64
- * unless the handle is {@link JSHandle.dispose | disposed}. JSHandles are auto-
65
- * disposed when their origin frame gets navigated or the parent context gets destroyed.
66
- *
67
- * JSHandle instances can be used as arguments for {@link Page.$eval},
68
- * {@link Page.evaluate}, and {@link Page.evaluateHandle}.
69
- *
70
- * @public
71
- */
72
- class JSHandle {
73
- /**
74
- * @internal
75
- */
76
- constructor(context, client, remoteObject) {
77
- /**
78
- * @internal
79
- */
80
- this._disposed = false;
81
- this._context = context;
82
- this._client = client;
83
- this._remoteObject = remoteObject;
84
- }
85
- /** Returns the execution context the handle belongs to.
86
- */
87
- executionContext() {
88
- return this._context;
89
- }
90
- /**
91
- * This method passes this handle as the first argument to `pageFunction`.
92
- * If `pageFunction` returns a Promise, then `handle.evaluate` would wait
93
- * for the promise to resolve and return its value.
94
- *
95
- * @example
96
- * ```js
97
- * const tweetHandle = await page.$('.tweet .retweets');
98
- * expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10');
99
- * ```
100
- */
101
- async evaluate(pageFunction, ...args) {
102
- return await this.executionContext().evaluate(pageFunction, this, ...args);
103
- }
104
- /**
105
- * This method passes this handle as the first argument to `pageFunction`.
106
- *
107
- * @remarks
108
- *
109
- * The only difference between `jsHandle.evaluate` and
110
- * `jsHandle.evaluateHandle` is that `jsHandle.evaluateHandle`
111
- * returns an in-page object (JSHandle).
112
- *
113
- * If the function passed to `jsHandle.evaluateHandle` returns a Promise,
114
- * then `evaluateHandle.evaluateHandle` waits for the promise to resolve and
115
- * returns its value.
116
- *
117
- * See {@link Page.evaluateHandle} for more details.
118
- */
119
- async evaluateHandle(pageFunction, ...args) {
120
- return await this.executionContext().evaluateHandle(pageFunction, this, ...args);
121
- }
122
- /** Fetches a single property from the referenced object.
123
- */
124
- async getProperty(propertyName) {
125
- const objectHandle = await this.evaluateHandle((object, propertyName) => {
126
- const result = { __proto__: null };
127
- result[propertyName] = object[propertyName];
128
- return result;
129
- }, propertyName);
130
- const properties = await objectHandle.getProperties();
131
- const result = properties.get(propertyName);
132
- (0, assert_js_1.assert)(result instanceof JSHandle);
133
- await objectHandle.dispose();
134
- return result;
135
- }
136
- /**
137
- * The method returns a map with property names as keys and JSHandle
138
- * instances for the property values.
139
- *
140
- * @example
141
- * ```js
142
- * const listHandle = await page.evaluateHandle(() => document.body.children);
143
- * const properties = await listHandle.getProperties();
144
- * const children = [];
145
- * for (const property of properties.values()) {
146
- * const element = property.asElement();
147
- * if (element)
148
- * children.push(element);
149
- * }
150
- * children; // holds elementHandles to all children of document.body
151
- * ```
152
- */
153
- async getProperties() {
154
- const response = await this._client.send('Runtime.getProperties', {
155
- objectId: this._remoteObject.objectId,
156
- ownProperties: true,
157
- });
158
- const result = new Map();
159
- for (const property of response.result) {
160
- if (!property.enumerable)
161
- continue;
162
- result.set(property.name, createJSHandle(this._context, property.value));
163
- }
164
- return result;
165
- }
166
- /**
167
- * @returns Returns a JSON representation of the object.If the object has a
168
- * `toJSON` function, it will not be called.
169
- * @remarks
170
- *
171
- * The JSON is generated by running {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify | JSON.stringify}
172
- * on the object in page and consequent {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse | JSON.parse} in puppeteer.
173
- * **NOTE** The method throws if the referenced object is not stringifiable.
174
- */
175
- async jsonValue() {
176
- if (this._remoteObject.objectId) {
177
- const response = await this._client.send('Runtime.callFunctionOn', {
178
- functionDeclaration: 'function() { return this; }',
179
- objectId: this._remoteObject.objectId,
180
- returnByValue: true,
181
- awaitPromise: true,
182
- });
183
- return helper_js_1.helper.valueFromRemoteObject(response.result);
184
- }
185
- return helper_js_1.helper.valueFromRemoteObject(this._remoteObject);
186
- }
187
- /**
188
- * @returns Either `null` or the object handle itself, if the object
189
- * handle is an instance of {@link ElementHandle}.
190
- */
191
- asElement() {
192
- /* This always returns null, but subclasses can override this and return an
193
- ElementHandle.
194
- */
195
- return null;
196
- }
197
- /**
198
- * Stops referencing the element handle, and resolves when the object handle is
199
- * successfully disposed of.
200
- */
201
- async dispose() {
202
- if (this._disposed)
203
- return;
204
- this._disposed = true;
205
- await helper_js_1.helper.releaseObject(this._client, this._remoteObject);
206
- }
207
- /**
208
- * Returns a string representation of the JSHandle.
209
- *
210
- * @remarks Useful during debugging.
211
- */
212
- toString() {
213
- if (this._remoteObject.objectId) {
214
- const type = this._remoteObject.subtype || this._remoteObject.type;
215
- return 'JSHandle@' + type;
216
- }
217
- return 'JSHandle:' + helper_js_1.helper.valueFromRemoteObject(this._remoteObject);
218
- }
219
- }
220
- exports.JSHandle = JSHandle;
221
- /**
222
- * ElementHandle represents an in-page DOM element.
223
- *
224
- * @remarks
225
- *
226
- * ElementHandles can be created with the {@link Page.$} method.
227
- *
228
- * ```js
229
- * const puppeteer = require('puppeteer');
230
- *
231
- * (async () => {
232
- * const browser = await puppeteer.launch();
233
- * const page = await browser.newPage();
234
- * await page.goto('https://example.com');
235
- * const hrefElement = await page.$('a');
236
- * await hrefElement.click();
237
- * // ...
238
- * })();
239
- * ```
240
- *
241
- * ElementHandle prevents the DOM element from being garbage-collected unless the
242
- * handle is {@link JSHandle.dispose | disposed}. ElementHandles are auto-disposed
243
- * when their origin frame gets navigated.
244
- *
245
- * ElementHandle instances can be used as arguments in {@link Page.$eval} and
246
- * {@link Page.evaluate} methods.
247
- *
248
- * If you're using TypeScript, ElementHandle takes a generic argument that
249
- * denotes the type of element the handle is holding within. For example, if you
250
- * have a handle to a `<select>` element, you can type it as
251
- * `ElementHandle<HTMLSelectElement>` and you get some nicer type checks.
252
- *
253
- * @public
254
- */
255
- class ElementHandle extends JSHandle {
256
- /**
257
- * @internal
258
- */
259
- constructor(context, client, remoteObject, page, frameManager) {
260
- super(context, client, remoteObject);
261
- this._client = client;
262
- this._remoteObject = remoteObject;
263
- this._page = page;
264
- this._frameManager = frameManager;
265
- }
266
- asElement() {
267
- return this;
268
- }
269
- /**
270
- * Resolves to the content frame for element handles referencing
271
- * iframe nodes, or null otherwise
272
- */
273
- async contentFrame() {
274
- const nodeInfo = await this._client.send('DOM.describeNode', {
275
- objectId: this._remoteObject.objectId,
276
- });
277
- if (typeof nodeInfo.node.frameId !== 'string')
278
- return null;
279
- return this._frameManager.frame(nodeInfo.node.frameId);
280
- }
281
- async _scrollIntoViewIfNeeded() {
282
- const error = await this.evaluate(async (element, pageJavascriptEnabled) => {
283
- if (!element.isConnected)
284
- return 'Node is detached from document';
285
- if (element.nodeType !== Node.ELEMENT_NODE)
286
- return 'Node is not of type HTMLElement';
287
- // force-scroll if page's javascript is disabled.
288
- if (!pageJavascriptEnabled) {
289
- element.scrollIntoView({
290
- block: 'center',
291
- inline: 'center',
292
- // @ts-expect-error Chrome still supports behavior: instant but
293
- // it's not in the spec so TS shouts We don't want to make this
294
- // breaking change in Puppeteer yet so we'll ignore the line.
295
- behavior: 'instant',
296
- });
297
- return false;
298
- }
299
- const visibleRatio = await new Promise((resolve) => {
300
- const observer = new IntersectionObserver((entries) => {
301
- resolve(entries[0].intersectionRatio);
302
- observer.disconnect();
303
- });
304
- observer.observe(element);
305
- });
306
- if (visibleRatio !== 1.0) {
307
- element.scrollIntoView({
308
- block: 'center',
309
- inline: 'center',
310
- // @ts-expect-error Chrome still supports behavior: instant but
311
- // it's not in the spec so TS shouts We don't want to make this
312
- // breaking change in Puppeteer yet so we'll ignore the line.
313
- behavior: 'instant',
314
- });
315
- }
316
- return false;
317
- }, this._page.isJavaScriptEnabled());
318
- if (error)
319
- throw new Error(error);
320
- }
321
- /**
322
- * Returns the middle point within an element unless a specific offset is provided.
323
- */
324
- async clickablePoint(offset) {
325
- const [result, layoutMetrics] = await Promise.all([
326
- this._client
327
- .send('DOM.getContentQuads', {
328
- objectId: this._remoteObject.objectId,
329
- })
330
- .catch(helper_js_1.debugError),
331
- this._client.send('Page.getLayoutMetrics'),
332
- ]);
333
- if (!result || !result.quads.length)
334
- throw new Error('Node is either not clickable or not an HTMLElement');
335
- // Filter out quads that have too small area to click into.
336
- // Fallback to `layoutViewport` in case of using Firefox.
337
- const { clientWidth, clientHeight } = layoutMetrics.cssLayoutViewport || layoutMetrics.layoutViewport;
338
- const quads = result.quads
339
- .map((quad) => this._fromProtocolQuad(quad))
340
- .map((quad) => this._intersectQuadWithViewport(quad, clientWidth, clientHeight))
341
- .filter((quad) => computeQuadArea(quad) > 1);
342
- if (!quads.length)
343
- throw new Error('Node is either not clickable or not an HTMLElement');
344
- const quad = quads[0];
345
- if (offset) {
346
- // Return the point of the first quad identified by offset.
347
- let minX = Number.MAX_SAFE_INTEGER;
348
- let minY = Number.MAX_SAFE_INTEGER;
349
- for (const point of quad) {
350
- if (point.x < minX) {
351
- minX = point.x;
352
- }
353
- if (point.y < minY) {
354
- minY = point.y;
355
- }
356
- }
357
- if (minX !== Number.MAX_SAFE_INTEGER &&
358
- minY !== Number.MAX_SAFE_INTEGER) {
359
- return {
360
- x: minX + offset.x,
361
- y: minY + offset.y,
362
- };
363
- }
364
- }
365
- // Return the middle point of the first quad.
366
- let x = 0;
367
- let y = 0;
368
- for (const point of quad) {
369
- x += point.x;
370
- y += point.y;
371
- }
372
- return {
373
- x: x / 4,
374
- y: y / 4,
375
- };
376
- }
377
- _getBoxModel() {
378
- const params = {
379
- objectId: this._remoteObject.objectId,
380
- };
381
- return this._client
382
- .send('DOM.getBoxModel', params)
383
- .catch((error) => (0, helper_js_1.debugError)(error));
384
- }
385
- _fromProtocolQuad(quad) {
386
- return [
387
- { x: quad[0], y: quad[1] },
388
- { x: quad[2], y: quad[3] },
389
- { x: quad[4], y: quad[5] },
390
- { x: quad[6], y: quad[7] },
391
- ];
392
- }
393
- _intersectQuadWithViewport(quad, width, height) {
394
- return quad.map((point) => ({
395
- x: Math.min(Math.max(point.x, 0), width),
396
- y: Math.min(Math.max(point.y, 0), height),
397
- }));
398
- }
399
- /**
400
- * This method scrolls element into view if needed, and then
401
- * uses {@link Page.mouse} to hover over the center of the element.
402
- * If the element is detached from DOM, the method throws an error.
403
- */
404
- async hover() {
405
- await this._scrollIntoViewIfNeeded();
406
- const { x, y } = await this.clickablePoint();
407
- await this._page.mouse.move(x, y);
408
- }
409
- /**
410
- * This method scrolls element into view if needed, and then
411
- * uses {@link Page.mouse} to click in the center of the element.
412
- * If the element is detached from DOM, the method throws an error.
413
- */
414
- async click(options = {}) {
415
- await this._scrollIntoViewIfNeeded();
416
- const { x, y } = await this.clickablePoint(options.offset);
417
- await this._page.mouse.click(x, y, options);
418
- }
419
- /**
420
- * This method creates and captures a dragevent from the element.
421
- */
422
- async drag(target) {
423
- (0, assert_js_1.assert)(this._page.isDragInterceptionEnabled(), 'Drag Interception is not enabled!');
424
- await this._scrollIntoViewIfNeeded();
425
- const start = await this.clickablePoint();
426
- return await this._page.mouse.drag(start, target);
427
- }
428
- /**
429
- * This method creates a `dragenter` event on the element.
430
- */
431
- async dragEnter(data = { items: [], dragOperationsMask: 1 }) {
432
- await this._scrollIntoViewIfNeeded();
433
- const target = await this.clickablePoint();
434
- await this._page.mouse.dragEnter(target, data);
435
- }
436
- /**
437
- * This method creates a `dragover` event on the element.
438
- */
439
- async dragOver(data = { items: [], dragOperationsMask: 1 }) {
440
- await this._scrollIntoViewIfNeeded();
441
- const target = await this.clickablePoint();
442
- await this._page.mouse.dragOver(target, data);
443
- }
444
- /**
445
- * This method triggers a drop on the element.
446
- */
447
- async drop(data = { items: [], dragOperationsMask: 1 }) {
448
- await this._scrollIntoViewIfNeeded();
449
- const destination = await this.clickablePoint();
450
- await this._page.mouse.drop(destination, data);
451
- }
452
- /**
453
- * This method triggers a dragenter, dragover, and drop on the element.
454
- */
455
- async dragAndDrop(target, options) {
456
- await this._scrollIntoViewIfNeeded();
457
- const startPoint = await this.clickablePoint();
458
- const targetPoint = await target.clickablePoint();
459
- await this._page.mouse.dragAndDrop(startPoint, targetPoint, options);
460
- }
461
- /**
462
- * Triggers a `change` and `input` event once all the provided options have been
463
- * selected. If there's no `<select>` element matching `selector`, the method
464
- * throws an error.
465
- *
466
- * @example
467
- * ```js
468
- * handle.select('blue'); // single selection
469
- * handle.select('red', 'green', 'blue'); // multiple selections
470
- * ```
471
- * @param values - Values of options to select. If the `<select>` has the
472
- * `multiple` attribute, all values are considered, otherwise only the first
473
- * one is taken into account.
474
- */
475
- async select(...values) {
476
- for (const value of values)
477
- (0, assert_js_1.assert)(helper_js_1.helper.isString(value), 'Values must be strings. Found value "' +
478
- value +
479
- '" of type "' +
480
- typeof value +
481
- '"');
482
- return this.evaluate((element, values) => {
483
- if (!(element instanceof HTMLSelectElement))
484
- throw new Error('Element is not a <select> element.');
485
- const options = Array.from(element.options);
486
- element.value = undefined;
487
- for (const option of options) {
488
- option.selected = values.includes(option.value);
489
- if (option.selected && !element.multiple)
490
- break;
491
- }
492
- element.dispatchEvent(new Event('input', { bubbles: true }));
493
- element.dispatchEvent(new Event('change', { bubbles: true }));
494
- return options
495
- .filter((option) => option.selected)
496
- .map((option) => option.value);
497
- }, values);
498
- }
499
- /**
500
- * This method expects `elementHandle` to point to an
501
- * {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input | input element}.
502
- * @param filePaths - Sets the value of the file input to these paths.
503
- * If some of the `filePaths` are relative paths, then they are resolved
504
- * relative to the {@link https://nodejs.org/api/process.html#process_process_cwd | current working directory}
505
- */
506
- async uploadFile(...filePaths) {
507
- const isMultiple = await this.evaluate((element) => {
508
- if (!(element instanceof HTMLInputElement)) {
509
- throw new Error('uploadFile can only be called on an input element.');
510
- }
511
- return element.multiple;
512
- });
513
- (0, assert_js_1.assert)(filePaths.length <= 1 || isMultiple, 'Multiple file uploads only work with <input type=file multiple>');
514
- if (!environment_js_1.isNode) {
515
- throw new Error(`JSHandle#uploadFile can only be used in Node environments.`);
516
- }
517
- /*
518
- This import is only needed for `uploadFile`, so keep it scoped here to
519
- avoid paying the cost unnecessarily.
520
- */
521
- const path = await Promise.resolve().then(() => __importStar(require('path')));
522
- const fs = await helper_js_1.helper.importFSModule();
523
- // Locate all files and confirm that they exist.
524
- const files = await Promise.all(filePaths.map(async (filePath) => {
525
- const resolvedPath = path.resolve(filePath);
526
- try {
527
- await fs.promises.access(resolvedPath, fs.constants.R_OK);
528
- }
529
- catch (error) {
530
- if (error.code === 'ENOENT')
531
- throw new Error(`${filePath} does not exist or is not readable`);
532
- }
533
- return resolvedPath;
534
- }));
535
- const { objectId } = this._remoteObject;
536
- const { node } = await this._client.send('DOM.describeNode', { objectId });
537
- const { backendNodeId } = node;
538
- /* The zero-length array is a special case, it seems that
539
- DOM.setFileInputFiles does not actually update the files in that case,
540
- so the solution is to eval the element value to a new FileList directly.
541
- */
542
- if (files.length === 0) {
543
- await this.evaluate((element) => {
544
- element.files = new DataTransfer().files;
545
- // Dispatch events for this case because it should behave akin to a user action.
546
- element.dispatchEvent(new Event('input', { bubbles: true }));
547
- element.dispatchEvent(new Event('change', { bubbles: true }));
548
- });
549
- }
550
- else {
551
- await this._client.send('DOM.setFileInputFiles', {
552
- objectId,
553
- files,
554
- backendNodeId,
555
- });
556
- }
557
- }
558
- /**
559
- * This method scrolls element into view if needed, and then uses
560
- * {@link Touchscreen.tap} to tap in the center of the element.
561
- * If the element is detached from DOM, the method throws an error.
562
- */
563
- async tap() {
564
- await this._scrollIntoViewIfNeeded();
565
- const { x, y } = await this.clickablePoint();
566
- await this._page.touchscreen.tap(x, y);
567
- }
568
- /**
569
- * Calls {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus | focus} on the element.
570
- */
571
- async focus() {
572
- await this.evaluate((element) => element.focus());
573
- }
574
- /**
575
- * Focuses the element, and then sends a `keydown`, `keypress`/`input`, and
576
- * `keyup` event for each character in the text.
577
- *
578
- * To press a special key, like `Control` or `ArrowDown`,
579
- * use {@link ElementHandle.press}.
580
- *
581
- * @example
582
- * ```js
583
- * await elementHandle.type('Hello'); // Types instantly
584
- * await elementHandle.type('World', {delay: 100}); // Types slower, like a user
585
- * ```
586
- *
587
- * @example
588
- * An example of typing into a text field and then submitting the form:
589
- *
590
- * ```js
591
- * const elementHandle = await page.$('input');
592
- * await elementHandle.type('some text');
593
- * await elementHandle.press('Enter');
594
- * ```
595
- */
596
- async type(text, options) {
597
- await this.focus();
598
- await this._page.keyboard.type(text, options);
599
- }
600
- /**
601
- * Focuses the element, and then uses {@link Keyboard.down} and {@link Keyboard.up}.
602
- *
603
- * @remarks
604
- * If `key` is a single character and no modifier keys besides `Shift`
605
- * are being held down, a `keypress`/`input` event will also be generated.
606
- * The `text` option can be specified to force an input event to be generated.
607
- *
608
- * **NOTE** Modifier keys DO affect `elementHandle.press`. Holding down `Shift`
609
- * will type the text in upper case.
610
- *
611
- * @param key - Name of key to press, such as `ArrowLeft`.
612
- * See {@link KeyInput} for a list of all key names.
613
- */
614
- async press(key, options) {
615
- await this.focus();
616
- await this._page.keyboard.press(key, options);
617
- }
618
- /**
619
- * This method returns the bounding box of the element (relative to the main frame),
620
- * or `null` if the element is not visible.
621
- */
622
- async boundingBox() {
623
- const result = await this._getBoxModel();
624
- if (!result)
625
- return null;
626
- const quad = result.model.border;
627
- const x = Math.min(quad[0], quad[2], quad[4], quad[6]);
628
- const y = Math.min(quad[1], quad[3], quad[5], quad[7]);
629
- const width = Math.max(quad[0], quad[2], quad[4], quad[6]) - x;
630
- const height = Math.max(quad[1], quad[3], quad[5], quad[7]) - y;
631
- return { x, y, width, height };
632
- }
633
- /**
634
- * This method returns boxes of the element, or `null` if the element is not visible.
635
- *
636
- * @remarks
637
- *
638
- * Boxes are represented as an array of points;
639
- * Each Point is an object `{x, y}`. Box points are sorted clock-wise.
640
- */
641
- async boxModel() {
642
- const result = await this._getBoxModel();
643
- if (!result)
644
- return null;
645
- const { content, padding, border, margin, width, height } = result.model;
646
- return {
647
- content: this._fromProtocolQuad(content),
648
- padding: this._fromProtocolQuad(padding),
649
- border: this._fromProtocolQuad(border),
650
- margin: this._fromProtocolQuad(margin),
651
- width,
652
- height,
653
- };
654
- }
655
- /**
656
- * This method scrolls element into view if needed, and then uses
657
- * {@link Page.screenshot} to take a screenshot of the element.
658
- * If the element is detached from DOM, the method throws an error.
659
- */
660
- async screenshot(options = {}) {
661
- let needsViewportReset = false;
662
- let boundingBox = await this.boundingBox();
663
- (0, assert_js_1.assert)(boundingBox, 'Node is either not visible or not an HTMLElement');
664
- const viewport = this._page.viewport();
665
- if (viewport &&
666
- (boundingBox.width > viewport.width ||
667
- boundingBox.height > viewport.height)) {
668
- const newViewport = {
669
- width: Math.max(viewport.width, Math.ceil(boundingBox.width)),
670
- height: Math.max(viewport.height, Math.ceil(boundingBox.height)),
671
- };
672
- await this._page.setViewport(Object.assign({}, viewport, newViewport));
673
- needsViewportReset = true;
674
- }
675
- await this._scrollIntoViewIfNeeded();
676
- boundingBox = await this.boundingBox();
677
- (0, assert_js_1.assert)(boundingBox, 'Node is either not visible or not an HTMLElement');
678
- (0, assert_js_1.assert)(boundingBox.width !== 0, 'Node has 0 width.');
679
- (0, assert_js_1.assert)(boundingBox.height !== 0, 'Node has 0 height.');
680
- const layoutMetrics = await this._client.send('Page.getLayoutMetrics');
681
- // Fallback to `layoutViewport` in case of using Firefox.
682
- const { pageX, pageY } = layoutMetrics.cssLayoutViewport || layoutMetrics.layoutViewport;
683
- const clip = Object.assign({}, boundingBox);
684
- clip.x += pageX;
685
- clip.y += pageY;
686
- const imageData = await this._page.screenshot(Object.assign({}, {
687
- clip,
688
- }, options));
689
- if (needsViewportReset)
690
- await this._page.setViewport(viewport);
691
- return imageData;
692
- }
693
- /**
694
- * Runs `element.querySelector` within the page. If no element matches the selector,
695
- * the return value resolves to `null`.
696
- */
697
- async $(selector) {
698
- const { updatedSelector, queryHandler } = (0, QueryHandler_js_1.getQueryHandlerAndSelector)(selector);
699
- return queryHandler.queryOne(this, updatedSelector);
700
- }
701
- /**
702
- * Runs `element.querySelectorAll` within the page. If no elements match the selector,
703
- * the return value resolves to `[]`.
704
- */
705
- async $$(selector) {
706
- const { updatedSelector, queryHandler } = (0, QueryHandler_js_1.getQueryHandlerAndSelector)(selector);
707
- return queryHandler.queryAll(this, updatedSelector);
708
- }
709
- /**
710
- * This method runs `document.querySelector` within the element and passes it as
711
- * the first argument to `pageFunction`. If there's no element matching `selector`,
712
- * the method throws an error.
713
- *
714
- * If `pageFunction` returns a Promise, then `frame.$eval` would wait for the promise
715
- * to resolve and return its value.
716
- *
717
- * @example
718
- * ```js
719
- * const tweetHandle = await page.$('.tweet');
720
- * expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
721
- * expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
722
- * ```
723
- */
724
- async $eval(selector, pageFunction, ...args) {
725
- const elementHandle = await this.$(selector);
726
- if (!elementHandle)
727
- throw new Error(`Error: failed to find element matching selector "${selector}"`);
728
- const result = await elementHandle.evaluate(pageFunction, ...args);
729
- await elementHandle.dispose();
730
- /**
731
- * This `as` is a little unfortunate but helps TS understand the behavior of
732
- * `elementHandle.evaluate`. If evaluate returns an element it will return an
733
- * ElementHandle instance, rather than the plain object. All the
734
- * WrapElementHandle type does is wrap ReturnType into
735
- * ElementHandle<ReturnType> if it is an ElementHandle, or leave it alone as
736
- * ReturnType if it isn't.
737
- */
738
- return result;
739
- }
740
- /**
741
- * This method runs `document.querySelectorAll` within the element and passes it as
742
- * the first argument to `pageFunction`. If there's no element matching `selector`,
743
- * the method throws an error.
744
- *
745
- * If `pageFunction` returns a Promise, then `frame.$$eval` would wait for the
746
- * promise to resolve and return its value.
747
- *
748
- * @example
749
- * ```html
750
- * <div class="feed">
751
- * <div class="tweet">Hello!</div>
752
- * <div class="tweet">Hi!</div>
753
- * </div>
754
- * ```
755
- *
756
- * @example
757
- * ```js
758
- * const feedHandle = await page.$('.feed');
759
- * expect(await feedHandle.$$eval('.tweet', nodes => nodes.map(n => n.innerText)))
760
- * .toEqual(['Hello!', 'Hi!']);
761
- * ```
762
- */
763
- async $$eval(selector, pageFunction, ...args) {
764
- const { updatedSelector, queryHandler } = (0, QueryHandler_js_1.getQueryHandlerAndSelector)(selector);
765
- const arrayHandle = await queryHandler.queryAllArray(this, updatedSelector);
766
- const result = await arrayHandle.evaluate(pageFunction, ...args);
767
- await arrayHandle.dispose();
768
- /* This `as` exists for the same reason as the `as` in $eval above.
769
- * See the comment there for a full explanation.
770
- */
771
- return result;
772
- }
773
- /**
774
- * The method evaluates the XPath expression relative to the elementHandle.
775
- * If there are no such elements, the method will resolve to an empty array.
776
- * @param expression - Expression to {@link https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate | evaluate}
777
- */
778
- async $x(expression) {
779
- const arrayHandle = await this.evaluateHandle((element, expression) => {
780
- const document = element.ownerDocument || element;
781
- const iterator = document.evaluate(expression, element, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE);
782
- const array = [];
783
- let item;
784
- while ((item = iterator.iterateNext()))
785
- array.push(item);
786
- return array;
787
- }, expression);
788
- const properties = await arrayHandle.getProperties();
789
- await arrayHandle.dispose();
790
- const result = [];
791
- for (const property of properties.values()) {
792
- const elementHandle = property.asElement();
793
- if (elementHandle)
794
- result.push(elementHandle);
795
- }
796
- return result;
797
- }
798
- /**
799
- * Resolves to true if the element is visible in the current viewport.
800
- */
801
- async isIntersectingViewport(options) {
802
- const { threshold = 0 } = options || {};
803
- return await this.evaluate(async (element, threshold) => {
804
- const visibleRatio = await new Promise((resolve) => {
805
- const observer = new IntersectionObserver((entries) => {
806
- resolve(entries[0].intersectionRatio);
807
- observer.disconnect();
808
- });
809
- observer.observe(element);
810
- });
811
- return threshold === 1 ? visibleRatio === 1 : visibleRatio > threshold;
812
- }, threshold);
813
- }
814
- }
815
- exports.ElementHandle = ElementHandle;
816
- function computeQuadArea(quad) {
817
- /* Compute sum of all directed areas of adjacent triangles
818
- https://en.wikipedia.org/wiki/Polygon#Simple_polygons
819
- */
820
- let area = 0;
821
- for (let i = 0; i < quad.length; ++i) {
822
- const p1 = quad[i];
823
- const p2 = quad[(i + 1) % quad.length];
824
- area += (p1.x * p2.y - p2.x * p1.y) / 2;
825
- }
826
- return Math.abs(area);
827
- }
1
+ "use strict";
2
+ /**
3
+ * Copyright 2019 Google Inc. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.ElementHandle = exports.JSHandle = exports.createJSHandle = void 0;
38
+ const assert_js_1 = require("./assert.js");
39
+ const helper_js_1 = require("./helper.js");
40
+ const QueryHandler_js_1 = require("./QueryHandler.js");
41
+ const environment_js_1 = require("../environment.js");
42
+ /**
43
+ * @internal
44
+ */
45
+ function createJSHandle(context, remoteObject) {
46
+ const frame = context.frame();
47
+ if (remoteObject.subtype === 'node' && frame) {
48
+ const frameManager = frame._frameManager;
49
+ return new ElementHandle(context, context._client, remoteObject, frameManager.page(), frameManager);
50
+ }
51
+ return new JSHandle(context, context._client, remoteObject);
52
+ }
53
+ exports.createJSHandle = createJSHandle;
54
+ /**
55
+ * Represents an in-page JavaScript object. JSHandles can be created with the
56
+ * {@link Page.evaluateHandle | page.evaluateHandle} method.
57
+ *
58
+ * @example
59
+ * ```js
60
+ * const windowHandle = await page.evaluateHandle(() => window);
61
+ * ```
62
+ *
63
+ * JSHandle prevents the referenced JavaScript object from being garbage-collected
64
+ * unless the handle is {@link JSHandle.dispose | disposed}. JSHandles are auto-
65
+ * disposed when their origin frame gets navigated or the parent context gets destroyed.
66
+ *
67
+ * JSHandle instances can be used as arguments for {@link Page.$eval},
68
+ * {@link Page.evaluate}, and {@link Page.evaluateHandle}.
69
+ *
70
+ * @public
71
+ */
72
+ class JSHandle {
73
+ /**
74
+ * @internal
75
+ */
76
+ constructor(context, client, remoteObject) {
77
+ /**
78
+ * @internal
79
+ */
80
+ this._disposed = false;
81
+ this._context = context;
82
+ this._client = client;
83
+ this._remoteObject = remoteObject;
84
+ }
85
+ /** Returns the execution context the handle belongs to.
86
+ */
87
+ executionContext() {
88
+ return this._context;
89
+ }
90
+ /**
91
+ * This method passes this handle as the first argument to `pageFunction`.
92
+ * If `pageFunction` returns a Promise, then `handle.evaluate` would wait
93
+ * for the promise to resolve and return its value.
94
+ *
95
+ * @example
96
+ * ```js
97
+ * const tweetHandle = await page.$('.tweet .retweets');
98
+ * expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10');
99
+ * ```
100
+ */
101
+ async evaluate(pageFunction, ...args) {
102
+ return await this.executionContext().evaluate(pageFunction, this, ...args);
103
+ }
104
+ /**
105
+ * This method passes this handle as the first argument to `pageFunction`.
106
+ *
107
+ * @remarks
108
+ *
109
+ * The only difference between `jsHandle.evaluate` and
110
+ * `jsHandle.evaluateHandle` is that `jsHandle.evaluateHandle`
111
+ * returns an in-page object (JSHandle).
112
+ *
113
+ * If the function passed to `jsHandle.evaluateHandle` returns a Promise,
114
+ * then `evaluateHandle.evaluateHandle` waits for the promise to resolve and
115
+ * returns its value.
116
+ *
117
+ * See {@link Page.evaluateHandle} for more details.
118
+ */
119
+ async evaluateHandle(pageFunction, ...args) {
120
+ return await this.executionContext().evaluateHandle(pageFunction, this, ...args);
121
+ }
122
+ /** Fetches a single property from the referenced object.
123
+ */
124
+ async getProperty(propertyName) {
125
+ const objectHandle = await this.evaluateHandle((object, propertyName) => {
126
+ const result = { __proto__: null };
127
+ result[propertyName] = object[propertyName];
128
+ return result;
129
+ }, propertyName);
130
+ const properties = await objectHandle.getProperties();
131
+ const result = properties.get(propertyName);
132
+ (0, assert_js_1.assert)(result instanceof JSHandle);
133
+ await objectHandle.dispose();
134
+ return result;
135
+ }
136
+ /**
137
+ * The method returns a map with property names as keys and JSHandle
138
+ * instances for the property values.
139
+ *
140
+ * @example
141
+ * ```js
142
+ * const listHandle = await page.evaluateHandle(() => document.body.children);
143
+ * const properties = await listHandle.getProperties();
144
+ * const children = [];
145
+ * for (const property of properties.values()) {
146
+ * const element = property.asElement();
147
+ * if (element)
148
+ * children.push(element);
149
+ * }
150
+ * children; // holds elementHandles to all children of document.body
151
+ * ```
152
+ */
153
+ async getProperties() {
154
+ const response = await this._client.send('Runtime.getProperties', {
155
+ objectId: this._remoteObject.objectId,
156
+ ownProperties: true,
157
+ });
158
+ const result = new Map();
159
+ for (const property of response.result) {
160
+ if (!property.enumerable)
161
+ continue;
162
+ result.set(property.name, createJSHandle(this._context, property.value));
163
+ }
164
+ return result;
165
+ }
166
+ /**
167
+ * @returns Returns a JSON representation of the object.If the object has a
168
+ * `toJSON` function, it will not be called.
169
+ * @remarks
170
+ *
171
+ * The JSON is generated by running {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify | JSON.stringify}
172
+ * on the object in page and consequent {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse | JSON.parse} in puppeteer.
173
+ * **NOTE** The method throws if the referenced object is not stringifiable.
174
+ */
175
+ async jsonValue() {
176
+ if (this._remoteObject.objectId) {
177
+ const response = await this._client.send('Runtime.callFunctionOn', {
178
+ functionDeclaration: 'function() { return this; }',
179
+ objectId: this._remoteObject.objectId,
180
+ returnByValue: true,
181
+ awaitPromise: true,
182
+ });
183
+ return helper_js_1.helper.valueFromRemoteObject(response.result);
184
+ }
185
+ return helper_js_1.helper.valueFromRemoteObject(this._remoteObject);
186
+ }
187
+ /**
188
+ * @returns Either `null` or the object handle itself, if the object
189
+ * handle is an instance of {@link ElementHandle}.
190
+ */
191
+ asElement() {
192
+ /* This always returns null, but subclasses can override this and return an
193
+ ElementHandle.
194
+ */
195
+ return null;
196
+ }
197
+ /**
198
+ * Stops referencing the element handle, and resolves when the object handle is
199
+ * successfully disposed of.
200
+ */
201
+ async dispose() {
202
+ if (this._disposed)
203
+ return;
204
+ this._disposed = true;
205
+ await helper_js_1.helper.releaseObject(this._client, this._remoteObject);
206
+ }
207
+ /**
208
+ * Returns a string representation of the JSHandle.
209
+ *
210
+ * @remarks Useful during debugging.
211
+ */
212
+ toString() {
213
+ if (this._remoteObject.objectId) {
214
+ const type = this._remoteObject.subtype || this._remoteObject.type;
215
+ return 'JSHandle@' + type;
216
+ }
217
+ return 'JSHandle:' + helper_js_1.helper.valueFromRemoteObject(this._remoteObject);
218
+ }
219
+ }
220
+ exports.JSHandle = JSHandle;
221
+ /**
222
+ * ElementHandle represents an in-page DOM element.
223
+ *
224
+ * @remarks
225
+ *
226
+ * ElementHandles can be created with the {@link Page.$} method.
227
+ *
228
+ * ```js
229
+ * const puppeteer = require('puppeteer');
230
+ *
231
+ * (async () => {
232
+ * const browser = await puppeteer.launch();
233
+ * const page = await browser.newPage();
234
+ * await page.goto('https://example.com');
235
+ * const hrefElement = await page.$('a');
236
+ * await hrefElement.click();
237
+ * // ...
238
+ * })();
239
+ * ```
240
+ *
241
+ * ElementHandle prevents the DOM element from being garbage-collected unless the
242
+ * handle is {@link JSHandle.dispose | disposed}. ElementHandles are auto-disposed
243
+ * when their origin frame gets navigated.
244
+ *
245
+ * ElementHandle instances can be used as arguments in {@link Page.$eval} and
246
+ * {@link Page.evaluate} methods.
247
+ *
248
+ * If you're using TypeScript, ElementHandle takes a generic argument that
249
+ * denotes the type of element the handle is holding within. For example, if you
250
+ * have a handle to a `<select>` element, you can type it as
251
+ * `ElementHandle<HTMLSelectElement>` and you get some nicer type checks.
252
+ *
253
+ * @public
254
+ */
255
+ class ElementHandle extends JSHandle {
256
+ /**
257
+ * @internal
258
+ */
259
+ constructor(context, client, remoteObject, page, frameManager) {
260
+ super(context, client, remoteObject);
261
+ this._client = client;
262
+ this._remoteObject = remoteObject;
263
+ this._page = page;
264
+ this._frameManager = frameManager;
265
+ }
266
+ asElement() {
267
+ return this;
268
+ }
269
+ /**
270
+ * Resolves to the content frame for element handles referencing
271
+ * iframe nodes, or null otherwise
272
+ */
273
+ async contentFrame() {
274
+ const nodeInfo = await this._client.send('DOM.describeNode', {
275
+ objectId: this._remoteObject.objectId,
276
+ });
277
+ if (typeof nodeInfo.node.frameId !== 'string')
278
+ return null;
279
+ return this._frameManager.frame(nodeInfo.node.frameId);
280
+ }
281
+ async _scrollIntoViewIfNeeded() {
282
+ const error = await this.evaluate(async (element, pageJavascriptEnabled) => {
283
+ if (!element.isConnected)
284
+ return 'Node is detached from document';
285
+ if (element.nodeType !== Node.ELEMENT_NODE)
286
+ return 'Node is not of type HTMLElement';
287
+ // force-scroll if page's javascript is disabled.
288
+ if (!pageJavascriptEnabled) {
289
+ element.scrollIntoView({
290
+ block: 'center',
291
+ inline: 'center',
292
+ // @ts-expect-error Chrome still supports behavior: instant but
293
+ // it's not in the spec so TS shouts We don't want to make this
294
+ // breaking change in Puppeteer yet so we'll ignore the line.
295
+ behavior: 'instant',
296
+ });
297
+ return false;
298
+ }
299
+ const visibleRatio = await new Promise((resolve) => {
300
+ const observer = new IntersectionObserver((entries) => {
301
+ resolve(entries[0].intersectionRatio);
302
+ observer.disconnect();
303
+ });
304
+ observer.observe(element);
305
+ });
306
+ if (visibleRatio !== 1.0) {
307
+ element.scrollIntoView({
308
+ block: 'center',
309
+ inline: 'center',
310
+ // @ts-expect-error Chrome still supports behavior: instant but
311
+ // it's not in the spec so TS shouts We don't want to make this
312
+ // breaking change in Puppeteer yet so we'll ignore the line.
313
+ behavior: 'instant',
314
+ });
315
+ }
316
+ return false;
317
+ }, this._page.isJavaScriptEnabled());
318
+ if (error)
319
+ throw new Error(error);
320
+ }
321
+ /**
322
+ * Returns the middle point within an element unless a specific offset is provided.
323
+ */
324
+ async clickablePoint(offset) {
325
+ const [result, layoutMetrics] = await Promise.all([
326
+ this._client
327
+ .send('DOM.getContentQuads', {
328
+ objectId: this._remoteObject.objectId,
329
+ })
330
+ .catch(helper_js_1.debugError),
331
+ this._client.send('Page.getLayoutMetrics'),
332
+ ]);
333
+ if (!result || !result.quads.length)
334
+ throw new Error('Node is either not clickable or not an HTMLElement');
335
+ // Filter out quads that have too small area to click into.
336
+ // Fallback to `layoutViewport` in case of using Firefox.
337
+ const { clientWidth, clientHeight } = layoutMetrics.cssLayoutViewport || layoutMetrics.layoutViewport;
338
+ const quads = result.quads
339
+ .map((quad) => this._fromProtocolQuad(quad))
340
+ .map((quad) => this._intersectQuadWithViewport(quad, clientWidth, clientHeight))
341
+ .filter((quad) => computeQuadArea(quad) > 1);
342
+ if (!quads.length)
343
+ throw new Error('Node is either not clickable or not an HTMLElement');
344
+ const quad = quads[0];
345
+ if (offset) {
346
+ // Return the point of the first quad identified by offset.
347
+ let minX = Number.MAX_SAFE_INTEGER;
348
+ let minY = Number.MAX_SAFE_INTEGER;
349
+ for (const point of quad) {
350
+ if (point.x < minX) {
351
+ minX = point.x;
352
+ }
353
+ if (point.y < minY) {
354
+ minY = point.y;
355
+ }
356
+ }
357
+ if (minX !== Number.MAX_SAFE_INTEGER &&
358
+ minY !== Number.MAX_SAFE_INTEGER) {
359
+ return {
360
+ x: minX + offset.x,
361
+ y: minY + offset.y,
362
+ };
363
+ }
364
+ }
365
+ // Return the middle point of the first quad.
366
+ let x = 0;
367
+ let y = 0;
368
+ for (const point of quad) {
369
+ x += point.x;
370
+ y += point.y;
371
+ }
372
+ return {
373
+ x: x / 4,
374
+ y: y / 4,
375
+ };
376
+ }
377
+ _getBoxModel() {
378
+ const params = {
379
+ objectId: this._remoteObject.objectId,
380
+ };
381
+ return this._client
382
+ .send('DOM.getBoxModel', params)
383
+ .catch((error) => (0, helper_js_1.debugError)(error));
384
+ }
385
+ _fromProtocolQuad(quad) {
386
+ return [
387
+ { x: quad[0], y: quad[1] },
388
+ { x: quad[2], y: quad[3] },
389
+ { x: quad[4], y: quad[5] },
390
+ { x: quad[6], y: quad[7] },
391
+ ];
392
+ }
393
+ _intersectQuadWithViewport(quad, width, height) {
394
+ return quad.map((point) => ({
395
+ x: Math.min(Math.max(point.x, 0), width),
396
+ y: Math.min(Math.max(point.y, 0), height),
397
+ }));
398
+ }
399
+ /**
400
+ * This method scrolls element into view if needed, and then
401
+ * uses {@link Page.mouse} to hover over the center of the element.
402
+ * If the element is detached from DOM, the method throws an error.
403
+ */
404
+ async hover() {
405
+ await this._scrollIntoViewIfNeeded();
406
+ const { x, y } = await this.clickablePoint();
407
+ await this._page.mouse.move(x, y);
408
+ }
409
+ /**
410
+ * This method scrolls element into view if needed, and then
411
+ * uses {@link Page.mouse} to click in the center of the element.
412
+ * If the element is detached from DOM, the method throws an error.
413
+ */
414
+ async click(options = {}) {
415
+ await this._scrollIntoViewIfNeeded();
416
+ const { x, y } = await this.clickablePoint(options.offset);
417
+ await this._page.mouse.click(x, y, options);
418
+ }
419
+ /**
420
+ * This method creates and captures a dragevent from the element.
421
+ */
422
+ async drag(target) {
423
+ (0, assert_js_1.assert)(this._page.isDragInterceptionEnabled(), 'Drag Interception is not enabled!');
424
+ await this._scrollIntoViewIfNeeded();
425
+ const start = await this.clickablePoint();
426
+ return await this._page.mouse.drag(start, target);
427
+ }
428
+ /**
429
+ * This method creates a `dragenter` event on the element.
430
+ */
431
+ async dragEnter(data = { items: [], dragOperationsMask: 1 }) {
432
+ await this._scrollIntoViewIfNeeded();
433
+ const target = await this.clickablePoint();
434
+ await this._page.mouse.dragEnter(target, data);
435
+ }
436
+ /**
437
+ * This method creates a `dragover` event on the element.
438
+ */
439
+ async dragOver(data = { items: [], dragOperationsMask: 1 }) {
440
+ await this._scrollIntoViewIfNeeded();
441
+ const target = await this.clickablePoint();
442
+ await this._page.mouse.dragOver(target, data);
443
+ }
444
+ /**
445
+ * This method triggers a drop on the element.
446
+ */
447
+ async drop(data = { items: [], dragOperationsMask: 1 }) {
448
+ await this._scrollIntoViewIfNeeded();
449
+ const destination = await this.clickablePoint();
450
+ await this._page.mouse.drop(destination, data);
451
+ }
452
+ /**
453
+ * This method triggers a dragenter, dragover, and drop on the element.
454
+ */
455
+ async dragAndDrop(target, options) {
456
+ await this._scrollIntoViewIfNeeded();
457
+ const startPoint = await this.clickablePoint();
458
+ const targetPoint = await target.clickablePoint();
459
+ await this._page.mouse.dragAndDrop(startPoint, targetPoint, options);
460
+ }
461
+ /**
462
+ * Triggers a `change` and `input` event once all the provided options have been
463
+ * selected. If there's no `<select>` element matching `selector`, the method
464
+ * throws an error.
465
+ *
466
+ * @example
467
+ * ```js
468
+ * handle.select('blue'); // single selection
469
+ * handle.select('red', 'green', 'blue'); // multiple selections
470
+ * ```
471
+ * @param values - Values of options to select. If the `<select>` has the
472
+ * `multiple` attribute, all values are considered, otherwise only the first
473
+ * one is taken into account.
474
+ */
475
+ async select(...values) {
476
+ for (const value of values)
477
+ (0, assert_js_1.assert)(helper_js_1.helper.isString(value), 'Values must be strings. Found value "' +
478
+ value +
479
+ '" of type "' +
480
+ typeof value +
481
+ '"');
482
+ return this.evaluate((element, values) => {
483
+ if (!(element instanceof HTMLSelectElement))
484
+ throw new Error('Element is not a <select> element.');
485
+ const options = Array.from(element.options);
486
+ element.value = undefined;
487
+ for (const option of options) {
488
+ option.selected = values.includes(option.value);
489
+ if (option.selected && !element.multiple)
490
+ break;
491
+ }
492
+ element.dispatchEvent(new Event('input', { bubbles: true }));
493
+ element.dispatchEvent(new Event('change', { bubbles: true }));
494
+ return options
495
+ .filter((option) => option.selected)
496
+ .map((option) => option.value);
497
+ }, values);
498
+ }
499
+ /**
500
+ * This method expects `elementHandle` to point to an
501
+ * {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input | input element}.
502
+ * @param filePaths - Sets the value of the file input to these paths.
503
+ * If some of the `filePaths` are relative paths, then they are resolved
504
+ * relative to the {@link https://nodejs.org/api/process.html#process_process_cwd | current working directory}
505
+ */
506
+ async uploadFile(...filePaths) {
507
+ const isMultiple = await this.evaluate((element) => {
508
+ if (!(element instanceof HTMLInputElement)) {
509
+ throw new Error('uploadFile can only be called on an input element.');
510
+ }
511
+ return element.multiple;
512
+ });
513
+ (0, assert_js_1.assert)(filePaths.length <= 1 || isMultiple, 'Multiple file uploads only work with <input type=file multiple>');
514
+ if (!environment_js_1.isNode) {
515
+ throw new Error(`JSHandle#uploadFile can only be used in Node environments.`);
516
+ }
517
+ /*
518
+ This import is only needed for `uploadFile`, so keep it scoped here to
519
+ avoid paying the cost unnecessarily.
520
+ */
521
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
522
+ const fs = await helper_js_1.helper.importFSModule();
523
+ // Locate all files and confirm that they exist.
524
+ const files = await Promise.all(filePaths.map(async (filePath) => {
525
+ const resolvedPath = path.resolve(filePath);
526
+ try {
527
+ await fs.promises.access(resolvedPath, fs.constants.R_OK);
528
+ }
529
+ catch (error) {
530
+ if (error.code === 'ENOENT')
531
+ throw new Error(`${filePath} does not exist or is not readable`);
532
+ }
533
+ return resolvedPath;
534
+ }));
535
+ const { objectId } = this._remoteObject;
536
+ const { node } = await this._client.send('DOM.describeNode', { objectId });
537
+ const { backendNodeId } = node;
538
+ /* The zero-length array is a special case, it seems that
539
+ DOM.setFileInputFiles does not actually update the files in that case,
540
+ so the solution is to eval the element value to a new FileList directly.
541
+ */
542
+ if (files.length === 0) {
543
+ await this.evaluate((element) => {
544
+ element.files = new DataTransfer().files;
545
+ // Dispatch events for this case because it should behave akin to a user action.
546
+ element.dispatchEvent(new Event('input', { bubbles: true }));
547
+ element.dispatchEvent(new Event('change', { bubbles: true }));
548
+ });
549
+ }
550
+ else {
551
+ await this._client.send('DOM.setFileInputFiles', {
552
+ objectId,
553
+ files,
554
+ backendNodeId,
555
+ });
556
+ }
557
+ }
558
+ /**
559
+ * This method scrolls element into view if needed, and then uses
560
+ * {@link Touchscreen.tap} to tap in the center of the element.
561
+ * If the element is detached from DOM, the method throws an error.
562
+ */
563
+ async tap() {
564
+ await this._scrollIntoViewIfNeeded();
565
+ const { x, y } = await this.clickablePoint();
566
+ await this._page.touchscreen.tap(x, y);
567
+ }
568
+ /**
569
+ * Calls {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus | focus} on the element.
570
+ */
571
+ async focus() {
572
+ await this.evaluate((element) => element.focus());
573
+ }
574
+ /**
575
+ * Focuses the element, and then sends a `keydown`, `keypress`/`input`, and
576
+ * `keyup` event for each character in the text.
577
+ *
578
+ * To press a special key, like `Control` or `ArrowDown`,
579
+ * use {@link ElementHandle.press}.
580
+ *
581
+ * @example
582
+ * ```js
583
+ * await elementHandle.type('Hello'); // Types instantly
584
+ * await elementHandle.type('World', {delay: 100}); // Types slower, like a user
585
+ * ```
586
+ *
587
+ * @example
588
+ * An example of typing into a text field and then submitting the form:
589
+ *
590
+ * ```js
591
+ * const elementHandle = await page.$('input');
592
+ * await elementHandle.type('some text');
593
+ * await elementHandle.press('Enter');
594
+ * ```
595
+ */
596
+ async type(text, options) {
597
+ await this.focus();
598
+ await this._page.keyboard.type(text, options);
599
+ }
600
+ /**
601
+ * Focuses the element, and then uses {@link Keyboard.down} and {@link Keyboard.up}.
602
+ *
603
+ * @remarks
604
+ * If `key` is a single character and no modifier keys besides `Shift`
605
+ * are being held down, a `keypress`/`input` event will also be generated.
606
+ * The `text` option can be specified to force an input event to be generated.
607
+ *
608
+ * **NOTE** Modifier keys DO affect `elementHandle.press`. Holding down `Shift`
609
+ * will type the text in upper case.
610
+ *
611
+ * @param key - Name of key to press, such as `ArrowLeft`.
612
+ * See {@link KeyInput} for a list of all key names.
613
+ */
614
+ async press(key, options) {
615
+ await this.focus();
616
+ await this._page.keyboard.press(key, options);
617
+ }
618
+ /**
619
+ * This method returns the bounding box of the element (relative to the main frame),
620
+ * or `null` if the element is not visible.
621
+ */
622
+ async boundingBox() {
623
+ const result = await this._getBoxModel();
624
+ if (!result)
625
+ return null;
626
+ const quad = result.model.border;
627
+ const x = Math.min(quad[0], quad[2], quad[4], quad[6]);
628
+ const y = Math.min(quad[1], quad[3], quad[5], quad[7]);
629
+ const width = Math.max(quad[0], quad[2], quad[4], quad[6]) - x;
630
+ const height = Math.max(quad[1], quad[3], quad[5], quad[7]) - y;
631
+ return { x, y, width, height };
632
+ }
633
+ /**
634
+ * This method returns boxes of the element, or `null` if the element is not visible.
635
+ *
636
+ * @remarks
637
+ *
638
+ * Boxes are represented as an array of points;
639
+ * Each Point is an object `{x, y}`. Box points are sorted clock-wise.
640
+ */
641
+ async boxModel() {
642
+ const result = await this._getBoxModel();
643
+ if (!result)
644
+ return null;
645
+ const { content, padding, border, margin, width, height } = result.model;
646
+ return {
647
+ content: this._fromProtocolQuad(content),
648
+ padding: this._fromProtocolQuad(padding),
649
+ border: this._fromProtocolQuad(border),
650
+ margin: this._fromProtocolQuad(margin),
651
+ width,
652
+ height,
653
+ };
654
+ }
655
+ /**
656
+ * This method scrolls element into view if needed, and then uses
657
+ * {@link Page.screenshot} to take a screenshot of the element.
658
+ * If the element is detached from DOM, the method throws an error.
659
+ */
660
+ async screenshot(options = {}) {
661
+ let needsViewportReset = false;
662
+ let boundingBox = await this.boundingBox();
663
+ (0, assert_js_1.assert)(boundingBox, 'Node is either not visible or not an HTMLElement');
664
+ const viewport = this._page.viewport();
665
+ if (viewport &&
666
+ (boundingBox.width > viewport.width ||
667
+ boundingBox.height > viewport.height)) {
668
+ const newViewport = {
669
+ width: Math.max(viewport.width, Math.ceil(boundingBox.width)),
670
+ height: Math.max(viewport.height, Math.ceil(boundingBox.height)),
671
+ };
672
+ await this._page.setViewport(Object.assign({}, viewport, newViewport));
673
+ needsViewportReset = true;
674
+ }
675
+ await this._scrollIntoViewIfNeeded();
676
+ boundingBox = await this.boundingBox();
677
+ (0, assert_js_1.assert)(boundingBox, 'Node is either not visible or not an HTMLElement');
678
+ (0, assert_js_1.assert)(boundingBox.width !== 0, 'Node has 0 width.');
679
+ (0, assert_js_1.assert)(boundingBox.height !== 0, 'Node has 0 height.');
680
+ const layoutMetrics = await this._client.send('Page.getLayoutMetrics');
681
+ // Fallback to `layoutViewport` in case of using Firefox.
682
+ const { pageX, pageY } = layoutMetrics.cssLayoutViewport || layoutMetrics.layoutViewport;
683
+ const clip = Object.assign({}, boundingBox);
684
+ clip.x += pageX;
685
+ clip.y += pageY;
686
+ const imageData = await this._page.screenshot(Object.assign({}, {
687
+ clip,
688
+ }, options));
689
+ if (needsViewportReset)
690
+ await this._page.setViewport(viewport);
691
+ return imageData;
692
+ }
693
+ /**
694
+ * Runs `element.querySelector` within the page. If no element matches the selector,
695
+ * the return value resolves to `null`.
696
+ */
697
+ async $(selector) {
698
+ const { updatedSelector, queryHandler } = (0, QueryHandler_js_1.getQueryHandlerAndSelector)(selector);
699
+ return queryHandler.queryOne(this, updatedSelector);
700
+ }
701
+ /**
702
+ * Runs `element.querySelectorAll` within the page. If no elements match the selector,
703
+ * the return value resolves to `[]`.
704
+ */
705
+ async $$(selector) {
706
+ const { updatedSelector, queryHandler } = (0, QueryHandler_js_1.getQueryHandlerAndSelector)(selector);
707
+ return queryHandler.queryAll(this, updatedSelector);
708
+ }
709
+ /**
710
+ * This method runs `document.querySelector` within the element and passes it as
711
+ * the first argument to `pageFunction`. If there's no element matching `selector`,
712
+ * the method throws an error.
713
+ *
714
+ * If `pageFunction` returns a Promise, then `frame.$eval` would wait for the promise
715
+ * to resolve and return its value.
716
+ *
717
+ * @example
718
+ * ```js
719
+ * const tweetHandle = await page.$('.tweet');
720
+ * expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
721
+ * expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
722
+ * ```
723
+ */
724
+ async $eval(selector, pageFunction, ...args) {
725
+ const elementHandle = await this.$(selector);
726
+ if (!elementHandle)
727
+ throw new Error(`Error: failed to find element matching selector "${selector}"`);
728
+ const result = await elementHandle.evaluate(pageFunction, ...args);
729
+ await elementHandle.dispose();
730
+ /**
731
+ * This `as` is a little unfortunate but helps TS understand the behavior of
732
+ * `elementHandle.evaluate`. If evaluate returns an element it will return an
733
+ * ElementHandle instance, rather than the plain object. All the
734
+ * WrapElementHandle type does is wrap ReturnType into
735
+ * ElementHandle<ReturnType> if it is an ElementHandle, or leave it alone as
736
+ * ReturnType if it isn't.
737
+ */
738
+ return result;
739
+ }
740
+ /**
741
+ * This method runs `document.querySelectorAll` within the element and passes it as
742
+ * the first argument to `pageFunction`. If there's no element matching `selector`,
743
+ * the method throws an error.
744
+ *
745
+ * If `pageFunction` returns a Promise, then `frame.$$eval` would wait for the
746
+ * promise to resolve and return its value.
747
+ *
748
+ * @example
749
+ * ```html
750
+ * <div class="feed">
751
+ * <div class="tweet">Hello!</div>
752
+ * <div class="tweet">Hi!</div>
753
+ * </div>
754
+ * ```
755
+ *
756
+ * @example
757
+ * ```js
758
+ * const feedHandle = await page.$('.feed');
759
+ * expect(await feedHandle.$$eval('.tweet', nodes => nodes.map(n => n.innerText)))
760
+ * .toEqual(['Hello!', 'Hi!']);
761
+ * ```
762
+ */
763
+ async $$eval(selector, pageFunction, ...args) {
764
+ const { updatedSelector, queryHandler } = (0, QueryHandler_js_1.getQueryHandlerAndSelector)(selector);
765
+ const arrayHandle = await queryHandler.queryAllArray(this, updatedSelector);
766
+ const result = await arrayHandle.evaluate(pageFunction, ...args);
767
+ await arrayHandle.dispose();
768
+ /* This `as` exists for the same reason as the `as` in $eval above.
769
+ * See the comment there for a full explanation.
770
+ */
771
+ return result;
772
+ }
773
+ /**
774
+ * The method evaluates the XPath expression relative to the elementHandle.
775
+ * If there are no such elements, the method will resolve to an empty array.
776
+ * @param expression - Expression to {@link https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate | evaluate}
777
+ */
778
+ async $x(expression) {
779
+ const arrayHandle = await this.evaluateHandle((element, expression) => {
780
+ const document = element.ownerDocument || element;
781
+ const iterator = document.evaluate(expression, element, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE);
782
+ const array = [];
783
+ let item;
784
+ while ((item = iterator.iterateNext()))
785
+ array.push(item);
786
+ return array;
787
+ }, expression);
788
+ const properties = await arrayHandle.getProperties();
789
+ await arrayHandle.dispose();
790
+ const result = [];
791
+ for (const property of properties.values()) {
792
+ const elementHandle = property.asElement();
793
+ if (elementHandle)
794
+ result.push(elementHandle);
795
+ }
796
+ return result;
797
+ }
798
+ /**
799
+ * Resolves to true if the element is visible in the current viewport.
800
+ */
801
+ async isIntersectingViewport(options) {
802
+ const { threshold = 0 } = options || {};
803
+ return await this.evaluate(async (element, threshold) => {
804
+ const visibleRatio = await new Promise((resolve) => {
805
+ const observer = new IntersectionObserver((entries) => {
806
+ resolve(entries[0].intersectionRatio);
807
+ observer.disconnect();
808
+ });
809
+ observer.observe(element);
810
+ });
811
+ return threshold === 1 ? visibleRatio === 1 : visibleRatio > threshold;
812
+ }, threshold);
813
+ }
814
+ }
815
+ exports.ElementHandle = ElementHandle;
816
+ function computeQuadArea(quad) {
817
+ /* Compute sum of all directed areas of adjacent triangles
818
+ https://en.wikipedia.org/wiki/Polygon#Simple_polygons
819
+ */
820
+ let area = 0;
821
+ for (let i = 0; i < quad.length; ++i) {
822
+ const p1 = quad[i];
823
+ const p2 = quad[(i + 1) % quad.length];
824
+ area += (p1.x * p2.y - p2.x * p1.y) / 2;
825
+ }
826
+ return Math.abs(area);
827
+ }
828
828
  //# sourceMappingURL=JSHandle.js.map