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,1048 +1,1048 @@
1
- "use strict";
2
- /**
3
- * Copyright 2017 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
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.Frame = exports.FrameManager = exports.FrameManagerEmittedEvents = void 0;
19
- const EventEmitter_js_1 = require("./EventEmitter.js");
20
- const assert_js_1 = require("./assert.js");
21
- const helper_js_1 = require("./helper.js");
22
- const ExecutionContext_js_1 = require("./ExecutionContext.js");
23
- const LifecycleWatcher_js_1 = require("./LifecycleWatcher.js");
24
- const DOMWorld_js_1 = require("./DOMWorld.js");
25
- const NetworkManager_js_1 = require("./NetworkManager.js");
26
- const Connection_js_1 = require("./Connection.js");
27
- const UTILITY_WORLD_NAME = '__puppeteer_utility_world__';
28
- const xPathPattern = /^\(\/\/[^\)]+\)|^\/\//;
29
- /**
30
- * We use symbols to prevent external parties listening to these events.
31
- * They are internal to Puppeteer.
32
- *
33
- * @internal
34
- */
35
- exports.FrameManagerEmittedEvents = {
36
- FrameAttached: Symbol('FrameManager.FrameAttached'),
37
- FrameNavigated: Symbol('FrameManager.FrameNavigated'),
38
- FrameDetached: Symbol('FrameManager.FrameDetached'),
39
- LifecycleEvent: Symbol('FrameManager.LifecycleEvent'),
40
- FrameNavigatedWithinDocument: Symbol('FrameManager.FrameNavigatedWithinDocument'),
41
- ExecutionContextCreated: Symbol('FrameManager.ExecutionContextCreated'),
42
- ExecutionContextDestroyed: Symbol('FrameManager.ExecutionContextDestroyed'),
43
- };
44
- /**
45
- * @internal
46
- */
47
- class FrameManager extends EventEmitter_js_1.EventEmitter {
48
- constructor(client, page, ignoreHTTPSErrors, timeoutSettings) {
49
- super();
50
- this._frames = new Map();
51
- this._contextIdToContext = new Map();
52
- this._isolatedWorlds = new Set();
53
- this._client = client;
54
- this._page = page;
55
- this._networkManager = new NetworkManager_js_1.NetworkManager(client, ignoreHTTPSErrors, this);
56
- this._timeoutSettings = timeoutSettings;
57
- this.setupEventListeners(this._client);
58
- }
59
- setupEventListeners(session) {
60
- session.on('Page.frameAttached', (event) => {
61
- this._onFrameAttached(session, event.frameId, event.parentFrameId);
62
- });
63
- session.on('Page.frameNavigated', (event) => {
64
- this._onFrameNavigated(event.frame);
65
- });
66
- session.on('Page.navigatedWithinDocument', (event) => {
67
- this._onFrameNavigatedWithinDocument(event.frameId, event.url);
68
- });
69
- session.on('Page.frameDetached', (event) => {
70
- this._onFrameDetached(event.frameId, event.reason);
71
- });
72
- session.on('Page.frameStoppedLoading', (event) => {
73
- this._onFrameStoppedLoading(event.frameId);
74
- });
75
- session.on('Runtime.executionContextCreated', (event) => {
76
- this._onExecutionContextCreated(event.context, session);
77
- });
78
- session.on('Runtime.executionContextDestroyed', (event) => {
79
- this._onExecutionContextDestroyed(event.executionContextId, session);
80
- });
81
- session.on('Runtime.executionContextsCleared', () => {
82
- this._onExecutionContextsCleared(session);
83
- });
84
- session.on('Page.lifecycleEvent', (event) => {
85
- this._onLifecycleEvent(event);
86
- });
87
- session.on('Target.attachedToTarget', async (event) => {
88
- this._onAttachedToTarget(event);
89
- });
90
- session.on('Target.detachedFromTarget', async (event) => {
91
- this._onDetachedFromTarget(event);
92
- });
93
- }
94
- async initialize(client = this._client) {
95
- try {
96
- const result = await Promise.all([
97
- client.send('Page.enable'),
98
- client.send('Page.getFrameTree'),
99
- ]);
100
- const { frameTree } = result[1];
101
- this._handleFrameTree(client, frameTree);
102
- await Promise.all([
103
- client.send('Page.setLifecycleEventsEnabled', { enabled: true }),
104
- client
105
- .send('Runtime.enable')
106
- .then(() => this._ensureIsolatedWorld(client, UTILITY_WORLD_NAME)),
107
- // TODO: Network manager is not aware of OOP iframes yet.
108
- client === this._client
109
- ? this._networkManager.initialize()
110
- : Promise.resolve(),
111
- ]);
112
- }
113
- catch (error) {
114
- // The target might have been closed before the initialization finished.
115
- if (error.message.includes('Target closed') ||
116
- error.message.includes('Session closed')) {
117
- return;
118
- }
119
- throw error;
120
- }
121
- }
122
- networkManager() {
123
- return this._networkManager;
124
- }
125
- async navigateFrame(frame, url, options = {}) {
126
- assertNoLegacyNavigationOptions(options);
127
- const { referer = this._networkManager.extraHTTPHeaders()['referer'], waitUntil = ['load'], timeout = this._timeoutSettings.navigationTimeout(), } = options;
128
- const watcher = new LifecycleWatcher_js_1.LifecycleWatcher(this, frame, waitUntil, timeout);
129
- let ensureNewDocumentNavigation = false;
130
- let error = await Promise.race([
131
- navigate(this._client, url, referer, frame._id),
132
- watcher.timeoutOrTerminationPromise(),
133
- ]);
134
- if (!error) {
135
- error = await Promise.race([
136
- watcher.timeoutOrTerminationPromise(),
137
- ensureNewDocumentNavigation
138
- ? watcher.newDocumentNavigationPromise()
139
- : watcher.sameDocumentNavigationPromise(),
140
- ]);
141
- }
142
- watcher.dispose();
143
- if (error)
144
- throw error;
145
- return watcher.navigationResponse();
146
- async function navigate(client, url, referrer, frameId) {
147
- try {
148
- const response = await client.send('Page.navigate', {
149
- url,
150
- referrer,
151
- frameId,
152
- });
153
- ensureNewDocumentNavigation = !!response.loaderId;
154
- return response.errorText
155
- ? new Error(`${response.errorText} at ${url}`)
156
- : null;
157
- }
158
- catch (error) {
159
- return error;
160
- }
161
- }
162
- }
163
- async waitForFrameNavigation(frame, options = {}) {
164
- assertNoLegacyNavigationOptions(options);
165
- const { waitUntil = ['load'], timeout = this._timeoutSettings.navigationTimeout(), } = options;
166
- const watcher = new LifecycleWatcher_js_1.LifecycleWatcher(this, frame, waitUntil, timeout);
167
- const error = await Promise.race([
168
- watcher.timeoutOrTerminationPromise(),
169
- watcher.sameDocumentNavigationPromise(),
170
- watcher.newDocumentNavigationPromise(),
171
- ]);
172
- watcher.dispose();
173
- if (error)
174
- throw error;
175
- return watcher.navigationResponse();
176
- }
177
- async _onAttachedToTarget(event) {
178
- if (event.targetInfo.type !== 'iframe') {
179
- return;
180
- }
181
- const frame = this._frames.get(event.targetInfo.targetId);
182
- const session = Connection_js_1.Connection.fromSession(this._client).session(event.sessionId);
183
- frame._updateClient(session);
184
- this.setupEventListeners(session);
185
- await this.initialize(session);
186
- }
187
- async _onDetachedFromTarget(event) {
188
- const frame = this._frames.get(event.targetId);
189
- if (frame && frame.isOOPFrame()) {
190
- // When an OOP iframe is removed from the page, it
191
- // will only get a Target.detachedFromTarget event.
192
- this._removeFramesRecursively(frame);
193
- }
194
- }
195
- _onLifecycleEvent(event) {
196
- const frame = this._frames.get(event.frameId);
197
- if (!frame)
198
- return;
199
- frame._onLifecycleEvent(event.loaderId, event.name);
200
- this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
201
- }
202
- _onFrameStoppedLoading(frameId) {
203
- const frame = this._frames.get(frameId);
204
- if (!frame)
205
- return;
206
- frame._onLoadingStopped();
207
- this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
208
- }
209
- _handleFrameTree(session, frameTree) {
210
- if (frameTree.frame.parentId) {
211
- this._onFrameAttached(session, frameTree.frame.id, frameTree.frame.parentId);
212
- }
213
- this._onFrameNavigated(frameTree.frame);
214
- if (!frameTree.childFrames)
215
- return;
216
- for (const child of frameTree.childFrames) {
217
- this._handleFrameTree(session, child);
218
- }
219
- }
220
- page() {
221
- return this._page;
222
- }
223
- mainFrame() {
224
- return this._mainFrame;
225
- }
226
- frames() {
227
- return Array.from(this._frames.values());
228
- }
229
- frame(frameId) {
230
- return this._frames.get(frameId) || null;
231
- }
232
- _onFrameAttached(session, frameId, parentFrameId) {
233
- if (this._frames.has(frameId)) {
234
- const frame = this._frames.get(frameId);
235
- if (session && frame.isOOPFrame()) {
236
- // If an OOP iframes becomes a normal iframe again
237
- // it is first attached to the parent page before
238
- // the target is removed.
239
- frame._updateClient(session);
240
- }
241
- return;
242
- }
243
- (0, assert_js_1.assert)(parentFrameId);
244
- const parentFrame = this._frames.get(parentFrameId);
245
- const frame = new Frame(this, parentFrame, frameId, session);
246
- this._frames.set(frame._id, frame);
247
- this.emit(exports.FrameManagerEmittedEvents.FrameAttached, frame);
248
- }
249
- _onFrameNavigated(framePayload) {
250
- const isMainFrame = !framePayload.parentId;
251
- let frame = isMainFrame
252
- ? this._mainFrame
253
- : this._frames.get(framePayload.id);
254
- (0, assert_js_1.assert)(isMainFrame || frame, 'We either navigate top level or have old version of the navigated frame');
255
- // Detach all child frames first.
256
- if (frame) {
257
- for (const child of frame.childFrames())
258
- this._removeFramesRecursively(child);
259
- }
260
- // Update or create main frame.
261
- if (isMainFrame) {
262
- if (frame) {
263
- // Update frame id to retain frame identity on cross-process navigation.
264
- this._frames.delete(frame._id);
265
- frame._id = framePayload.id;
266
- }
267
- else {
268
- // Initial main frame navigation.
269
- frame = new Frame(this, null, framePayload.id, this._client);
270
- }
271
- this._frames.set(framePayload.id, frame);
272
- this._mainFrame = frame;
273
- }
274
- // Update frame payload.
275
- frame._navigated(framePayload);
276
- this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
277
- }
278
- async _ensureIsolatedWorld(session, name) {
279
- const key = `${session.id()}:${name}`;
280
- if (this._isolatedWorlds.has(key))
281
- return;
282
- this._isolatedWorlds.add(key);
283
- await session.send('Page.addScriptToEvaluateOnNewDocument', {
284
- source: `//# sourceURL=${ExecutionContext_js_1.EVALUATION_SCRIPT_URL}`,
285
- worldName: name,
286
- });
287
- // Frames might be removed before we send this.
288
- await Promise.all(this.frames()
289
- .filter((frame) => frame._client === session)
290
- .map((frame) => session.send('Page.createIsolatedWorld', {
291
- frameId: frame._id,
292
- worldName: name,
293
- grantUniveralAccess: true,
294
- })));
295
- }
296
- _onFrameNavigatedWithinDocument(frameId, url) {
297
- const frame = this._frames.get(frameId);
298
- if (!frame)
299
- return;
300
- frame._navigatedWithinDocument(url);
301
- this.emit(exports.FrameManagerEmittedEvents.FrameNavigatedWithinDocument, frame);
302
- this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
303
- }
304
- _onFrameDetached(frameId, reason) {
305
- const frame = this._frames.get(frameId);
306
- if (reason === 'remove') {
307
- // Only remove the frame if the reason for the detached event is
308
- // an actual removement of the frame.
309
- // For frames that become OOP iframes, the reason would be 'swap'.
310
- if (frame)
311
- this._removeFramesRecursively(frame);
312
- }
313
- }
314
- _onExecutionContextCreated(contextPayload, session) {
315
- const auxData = contextPayload.auxData;
316
- const frameId = auxData ? auxData.frameId : null;
317
- const frame = this._frames.get(frameId) || null;
318
- let world = null;
319
- if (frame) {
320
- // Only care about execution contexts created for the current session.
321
- if (frame._client !== session)
322
- return;
323
- if (contextPayload.auxData && !!contextPayload.auxData['isDefault']) {
324
- world = frame._mainWorld;
325
- }
326
- else if (contextPayload.name === UTILITY_WORLD_NAME &&
327
- !frame._secondaryWorld._hasContext()) {
328
- // In case of multiple sessions to the same target, there's a race between
329
- // connections so we might end up creating multiple isolated worlds.
330
- // We can use either.
331
- world = frame._secondaryWorld;
332
- }
333
- }
334
- const context = new ExecutionContext_js_1.ExecutionContext(frame._client || this._client, contextPayload, world);
335
- if (world)
336
- world._setContext(context);
337
- const key = `${session.id()}:${contextPayload.id}`;
338
- this._contextIdToContext.set(key, context);
339
- }
340
- _onExecutionContextDestroyed(executionContextId, session) {
341
- const key = `${session.id()}:${executionContextId}`;
342
- const context = this._contextIdToContext.get(key);
343
- if (!context)
344
- return;
345
- this._contextIdToContext.delete(key);
346
- if (context._world)
347
- context._world._setContext(null);
348
- }
349
- _onExecutionContextsCleared(session) {
350
- for (const [key, context] of this._contextIdToContext.entries()) {
351
- // Make sure to only clear execution contexts that belong
352
- // to the current session.
353
- if (context._client !== session)
354
- continue;
355
- if (context._world)
356
- context._world._setContext(null);
357
- this._contextIdToContext.delete(key);
358
- }
359
- }
360
- executionContextById(contextId, session = this._client) {
361
- const key = `${session.id()}:${contextId}`;
362
- const context = this._contextIdToContext.get(key);
363
- (0, assert_js_1.assert)(context, 'INTERNAL ERROR: missing context with id = ' + contextId);
364
- return context;
365
- }
366
- _removeFramesRecursively(frame) {
367
- for (const child of frame.childFrames())
368
- this._removeFramesRecursively(child);
369
- frame._detach();
370
- this._frames.delete(frame._id);
371
- this.emit(exports.FrameManagerEmittedEvents.FrameDetached, frame);
372
- }
373
- }
374
- exports.FrameManager = FrameManager;
375
- /**
376
- * At every point of time, page exposes its current frame tree via the
377
- * {@link Page.mainFrame | page.mainFrame} and
378
- * {@link Frame.childFrames | frame.childFrames} methods.
379
- *
380
- * @remarks
381
- *
382
- * `Frame` object lifecycles are controlled by three events that are all
383
- * dispatched on the page object:
384
- *
385
- * - {@link PageEmittedEvents.FrameAttached}
386
- *
387
- * - {@link PageEmittedEvents.FrameNavigated}
388
- *
389
- * - {@link PageEmittedEvents.FrameDetached}
390
- *
391
- * @Example
392
- * An example of dumping frame tree:
393
- *
394
- * ```js
395
- * const puppeteer = require('puppeteer');
396
- *
397
- * (async () => {
398
- * const browser = await puppeteer.launch();
399
- * const page = await browser.newPage();
400
- * await page.goto('https://www.google.com/chrome/browser/canary.html');
401
- * dumpFrameTree(page.mainFrame(), '');
402
- * await browser.close();
403
- *
404
- * function dumpFrameTree(frame, indent) {
405
- * console.log(indent + frame.url());
406
- * for (const child of frame.childFrames()) {
407
- * dumpFrameTree(child, indent + ' ');
408
- * }
409
- * }
410
- * })();
411
- * ```
412
- *
413
- * @Example
414
- * An example of getting text from an iframe element:
415
- *
416
- * ```js
417
- * const frame = page.frames().find(frame => frame.name() === 'myframe');
418
- * const text = await frame.$eval('.selector', element => element.textContent);
419
- * console.log(text);
420
- * ```
421
- *
422
- * @public
423
- */
424
- class Frame {
425
- /**
426
- * @internal
427
- */
428
- constructor(frameManager, parentFrame, frameId, client) {
429
- this._url = '';
430
- this._detached = false;
431
- /**
432
- * @internal
433
- */
434
- this._loaderId = '';
435
- /**
436
- * @internal
437
- */
438
- this._lifecycleEvents = new Set();
439
- this._frameManager = frameManager;
440
- this._parentFrame = parentFrame;
441
- this._url = '';
442
- this._id = frameId;
443
- this._detached = false;
444
- this._loaderId = '';
445
- this._childFrames = new Set();
446
- if (this._parentFrame)
447
- this._parentFrame._childFrames.add(this);
448
- this._updateClient(client);
449
- }
450
- /**
451
- * @internal
452
- */
453
- _updateClient(client) {
454
- this._client = client;
455
- this._mainWorld = new DOMWorld_js_1.DOMWorld(this._client, this._frameManager, this, this._frameManager._timeoutSettings);
456
- this._secondaryWorld = new DOMWorld_js_1.DOMWorld(this._client, this._frameManager, this, this._frameManager._timeoutSettings);
457
- }
458
- isOOPFrame() {
459
- return this._client !== this._frameManager._client;
460
- }
461
- /**
462
- * @remarks
463
- *
464
- * `frame.goto` will throw an error if:
465
- * - there's an SSL error (e.g. in case of self-signed certificates).
466
- *
467
- * - target URL is invalid.
468
- *
469
- * - the `timeout` is exceeded during navigation.
470
- *
471
- * - the remote server does not respond or is unreachable.
472
- *
473
- * - the main resource failed to load.
474
- *
475
- * `frame.goto` will not throw an error when any valid HTTP status code is
476
- * returned by the remote server, including 404 "Not Found" and 500 "Internal
477
- * Server Error". The status code for such responses can be retrieved by
478
- * calling {@link HTTPResponse.status}.
479
- *
480
- * NOTE: `frame.goto` either throws an error or returns a main resource
481
- * response. The only exceptions are navigation to `about:blank` or
482
- * navigation to the same URL with a different hash, which would succeed and
483
- * return `null`.
484
- *
485
- * NOTE: Headless mode doesn't support navigation to a PDF document. See
486
- * the {@link https://bugs.chromium.org/p/chromium/issues/detail?id=761295 | upstream
487
- * issue}.
488
- *
489
- * @param url - the URL to navigate the frame to. This should include the
490
- * scheme, e.g. `https://`.
491
- * @param options - navigation options. `waitUntil` is useful to define when
492
- * the navigation should be considered successful - see the docs for
493
- * {@link PuppeteerLifeCycleEvent} for more details.
494
- *
495
- * @returns A promise which resolves to the main resource response. In case of
496
- * multiple redirects, the navigation will resolve with the response of the
497
- * last redirect.
498
- */
499
- async goto(url, options = {}) {
500
- return await this._frameManager.navigateFrame(this, url, options);
501
- }
502
- /**
503
- * @remarks
504
- *
505
- * This resolves when the frame navigates to a new URL. It is useful for when
506
- * you run code which will indirectly cause the frame to navigate. Consider
507
- * this example:
508
- *
509
- * ```js
510
- * const [response] = await Promise.all([
511
- * // The navigation promise resolves after navigation has finished
512
- * frame.waitForNavigation(),
513
- * // Clicking the link will indirectly cause a navigation
514
- * frame.click('a.my-link'),
515
- * ]);
516
- * ```
517
- *
518
- * Usage of the {@link https://developer.mozilla.org/en-US/docs/Web/API/History_API | History API} to change the URL is considered a navigation.
519
- *
520
- * @param options - options to configure when the navigation is consided finished.
521
- * @returns a promise that resolves when the frame navigates to a new URL.
522
- */
523
- async waitForNavigation(options = {}) {
524
- return await this._frameManager.waitForFrameNavigation(this, options);
525
- }
526
- /**
527
- * @returns a promise that resolves to the frame's default execution context.
528
- */
529
- executionContext() {
530
- return this._mainWorld.executionContext();
531
- }
532
- /**
533
- * @remarks
534
- *
535
- * The only difference between {@link Frame.evaluate} and
536
- * `frame.evaluateHandle` is that `evaluateHandle` will return the value
537
- * wrapped in an in-page object.
538
- *
539
- * This method behaves identically to {@link Page.evaluateHandle} except it's
540
- * run within the context of the `frame`, rather than the entire page.
541
- *
542
- * @param pageFunction - a function that is run within the frame
543
- * @param args - arguments to be passed to the pageFunction
544
- */
545
- async evaluateHandle(pageFunction, ...args) {
546
- return this._mainWorld.evaluateHandle(pageFunction, ...args);
547
- }
548
- /**
549
- * @remarks
550
- *
551
- * This method behaves identically to {@link Page.evaluate} except it's run
552
- * within the context of the `frame`, rather than the entire page.
553
- *
554
- * @param pageFunction - a function that is run within the frame
555
- * @param args - arguments to be passed to the pageFunction
556
- */
557
- async evaluate(pageFunction, ...args) {
558
- return this._mainWorld.evaluate(pageFunction, ...args);
559
- }
560
- /**
561
- * This method queries the frame for the given selector.
562
- *
563
- * @param selector - a selector to query for.
564
- * @returns A promise which resolves to an `ElementHandle` pointing at the
565
- * element, or `null` if it was not found.
566
- */
567
- async $(selector) {
568
- return this._mainWorld.$(selector);
569
- }
570
- /**
571
- * This method evaluates the given XPath expression and returns the results.
572
- *
573
- * @param expression - the XPath expression to evaluate.
574
- */
575
- async $x(expression) {
576
- return this._mainWorld.$x(expression);
577
- }
578
- /**
579
- * @remarks
580
- *
581
- * This method runs `document.querySelector` within
582
- * the frame and passes it as the first argument to `pageFunction`.
583
- *
584
- * If `pageFunction` returns a Promise, then `frame.$eval` would wait for
585
- * the promise to resolve and return its value.
586
- *
587
- * @example
588
- *
589
- * ```js
590
- * const searchValue = await frame.$eval('#search', el => el.value);
591
- * ```
592
- *
593
- * @param selector - the selector to query for
594
- * @param pageFunction - the function to be evaluated in the frame's context
595
- * @param args - additional arguments to pass to `pageFuncton`
596
- */
597
- async $eval(selector, pageFunction, ...args) {
598
- return this._mainWorld.$eval(selector, pageFunction, ...args);
599
- }
600
- /**
601
- * @remarks
602
- *
603
- * This method runs `Array.from(document.querySelectorAll(selector))` within
604
- * the frame and passes it as the first argument to `pageFunction`.
605
- *
606
- * If `pageFunction` returns a Promise, then `frame.$$eval` would wait for
607
- * the promise to resolve and return its value.
608
- *
609
- * @example
610
- *
611
- * ```js
612
- * const divsCounts = await frame.$$eval('div', divs => divs.length);
613
- * ```
614
- *
615
- * @param selector - the selector to query for
616
- * @param pageFunction - the function to be evaluated in the frame's context
617
- * @param args - additional arguments to pass to `pageFuncton`
618
- */
619
- async $$eval(selector, pageFunction, ...args) {
620
- return this._mainWorld.$$eval(selector, pageFunction, ...args);
621
- }
622
- /**
623
- * This runs `document.querySelectorAll` in the frame and returns the result.
624
- *
625
- * @param selector - a selector to search for
626
- * @returns An array of element handles pointing to the found frame elements.
627
- */
628
- async $$(selector) {
629
- return this._mainWorld.$$(selector);
630
- }
631
- /**
632
- * @returns the full HTML contents of the frame, including the doctype.
633
- */
634
- async content() {
635
- return this._secondaryWorld.content();
636
- }
637
- /**
638
- * Set the content of the frame.
639
- *
640
- * @param html - HTML markup to assign to the page.
641
- * @param options - options to configure how long before timing out and at
642
- * what point to consider the content setting successful.
643
- */
644
- async setContent(html, options = {}) {
645
- return this._secondaryWorld.setContent(html, options);
646
- }
647
- /**
648
- * @remarks
649
- *
650
- * If the name is empty, it returns the `id` attribute instead.
651
- *
652
- * Note: This value is calculated once when the frame is created, and will not
653
- * update if the attribute is changed later.
654
- *
655
- * @returns the frame's `name` attribute as specified in the tag.
656
- */
657
- name() {
658
- return this._name || '';
659
- }
660
- /**
661
- * @returns the frame's URL.
662
- */
663
- url() {
664
- return this._url;
665
- }
666
- /**
667
- * @returns the parent `Frame`, if any. Detached and main frames return `null`.
668
- */
669
- parentFrame() {
670
- return this._parentFrame;
671
- }
672
- /**
673
- * @returns an array of child frames.
674
- */
675
- childFrames() {
676
- return Array.from(this._childFrames);
677
- }
678
- /**
679
- * @returns `true` if the frame has been detached, or `false` otherwise.
680
- */
681
- isDetached() {
682
- return this._detached;
683
- }
684
- /**
685
- * Adds a `<script>` tag into the page with the desired url or content.
686
- *
687
- * @param options - configure the script to add to the page.
688
- *
689
- * @returns a promise that resolves to the added tag when the script's
690
- * `onload` event fires or when the script content was injected into the
691
- * frame.
692
- */
693
- async addScriptTag(options) {
694
- return this._mainWorld.addScriptTag(options);
695
- }
696
- /**
697
- * Adds a `<link rel="stylesheet">` tag into the page with the desired url or
698
- * a `<style type="text/css">` tag with the content.
699
- *
700
- * @param options - configure the CSS to add to the page.
701
- *
702
- * @returns a promise that resolves to the added tag when the stylesheets's
703
- * `onload` event fires or when the CSS content was injected into the
704
- * frame.
705
- */
706
- async addStyleTag(options) {
707
- return this._mainWorld.addStyleTag(options);
708
- }
709
- /**
710
- *
711
- * This method clicks the first element found that matches `selector`.
712
- *
713
- * @remarks
714
- *
715
- * This method scrolls the element into view if needed, and then uses
716
- * {@link Page.mouse} to click in the center of the element. If there's no
717
- * element matching `selector`, the method throws an error.
718
- *
719
- * Bear in mind that if `click()` triggers a navigation event and there's a
720
- * separate `page.waitForNavigation()` promise to be resolved, you may end up
721
- * with a race condition that yields unexpected results. The correct pattern
722
- * for click and wait for navigation is the following:
723
- *
724
- * ```javascript
725
- * const [response] = await Promise.all([
726
- * page.waitForNavigation(waitOptions),
727
- * frame.click(selector, clickOptions),
728
- * ]);
729
- * ```
730
- * @param selector - the selector to search for to click. If there are
731
- * multiple elements, the first will be clicked.
732
- */
733
- async click(selector, options = {}) {
734
- return this._secondaryWorld.click(selector, options);
735
- }
736
- /**
737
- * This method fetches an element with `selector` and focuses it.
738
- *
739
- * @remarks
740
- * If there's no element matching `selector`, the method throws an error.
741
- *
742
- * @param selector - the selector for the element to focus. If there are
743
- * multiple elements, the first will be focused.
744
- */
745
- async focus(selector) {
746
- return this._secondaryWorld.focus(selector);
747
- }
748
- /**
749
- * This method fetches an element with `selector`, scrolls it into view if
750
- * needed, and then uses {@link Page.mouse} to hover over the center of the
751
- * element.
752
- *
753
- * @remarks
754
- * If there's no element matching `selector`, the method throws an
755
- *
756
- * @param selector - the selector for the element to hover. If there are
757
- * multiple elements, the first will be hovered.
758
- */
759
- async hover(selector) {
760
- return this._secondaryWorld.hover(selector);
761
- }
762
- /**
763
- * Triggers a `change` and `input` event once all the provided options have
764
- * been selected.
765
- *
766
- * @remarks
767
- *
768
- * If there's no `<select>` element matching `selector`, the
769
- * method throws an error.
770
- *
771
- * @example
772
- * ```js
773
- * frame.select('select#colors', 'blue'); // single selection
774
- * frame.select('select#colors', 'red', 'green', 'blue'); // multiple selections
775
- * ```
776
- *
777
- * @param selector - a selector to query the frame for
778
- * @param values - an array of values to select. If the `<select>` has the
779
- * `multiple` attribute, all values are considered, otherwise only the first
780
- * one is taken into account.
781
- * @returns the list of values that were successfully selected.
782
- */
783
- select(selector, ...values) {
784
- return this._secondaryWorld.select(selector, ...values);
785
- }
786
- /**
787
- * This method fetches an element with `selector`, scrolls it into view if
788
- * needed, and then uses {@link Page.touchscreen} to tap in the center of the
789
- * element.
790
- *
791
- * @remarks
792
- *
793
- * If there's no element matching `selector`, the method throws an error.
794
- *
795
- * @param selector - the selector to tap.
796
- * @returns a promise that resolves when the element has been tapped.
797
- */
798
- async tap(selector) {
799
- return this._secondaryWorld.tap(selector);
800
- }
801
- /**
802
- * Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character
803
- * in the text.
804
- *
805
- * @remarks
806
- * To press a special key, like `Control` or `ArrowDown`, use
807
- * {@link Keyboard.press}.
808
- *
809
- * @example
810
- * ```js
811
- * await frame.type('#mytextarea', 'Hello'); // Types instantly
812
- * await frame.type('#mytextarea', 'World', {delay: 100}); // Types slower, like a user
813
- * ```
814
- *
815
- * @param selector - the selector for the element to type into. If there are
816
- * multiple the first will be used.
817
- * @param text - text to type into the element
818
- * @param options - takes one option, `delay`, which sets the time to wait
819
- * between key presses in milliseconds. Defaults to `0`.
820
- *
821
- * @returns a promise that resolves when the typing is complete.
822
- */
823
- async type(selector, text, options) {
824
- return this._mainWorld.type(selector, text, options);
825
- }
826
- /**
827
- * @remarks
828
- *
829
- * This method behaves differently depending on the first parameter. If it's a
830
- * `string`, it will be treated as a `selector` or `xpath` (if the string
831
- * starts with `//`). This method then is a shortcut for
832
- * {@link Frame.waitForSelector} or {@link Frame.waitForXPath}.
833
- *
834
- * If the first argument is a function this method is a shortcut for
835
- * {@link Frame.waitForFunction}.
836
- *
837
- * If the first argument is a `number`, it's treated as a timeout in
838
- * milliseconds and the method returns a promise which resolves after the
839
- * timeout.
840
- *
841
- * @param selectorOrFunctionOrTimeout - a selector, predicate or timeout to
842
- * wait for.
843
- * @param options - optional waiting parameters.
844
- * @param args - arguments to pass to `pageFunction`.
845
- *
846
- * @deprecated Don't use this method directly. Instead use the more explicit
847
- * methods available: {@link Frame.waitForSelector},
848
- * {@link Frame.waitForXPath}, {@link Frame.waitForFunction} or
849
- * {@link Frame.waitForTimeout}.
850
- */
851
- waitFor(selectorOrFunctionOrTimeout, options = {}, ...args) {
852
- console.warn('waitFor is deprecated and will be removed in a future release. See https://github.com/puppeteer/puppeteer/issues/6214 for details and how to migrate your code.');
853
- if (helper_js_1.helper.isString(selectorOrFunctionOrTimeout)) {
854
- const string = selectorOrFunctionOrTimeout;
855
- if (xPathPattern.test(string))
856
- return this.waitForXPath(string, options);
857
- return this.waitForSelector(string, options);
858
- }
859
- if (helper_js_1.helper.isNumber(selectorOrFunctionOrTimeout))
860
- return new Promise((fulfill) => setTimeout(fulfill, selectorOrFunctionOrTimeout));
861
- if (typeof selectorOrFunctionOrTimeout === 'function')
862
- return this.waitForFunction(selectorOrFunctionOrTimeout, options, ...args);
863
- return Promise.reject(new Error('Unsupported target type: ' + typeof selectorOrFunctionOrTimeout));
864
- }
865
- /**
866
- * Causes your script to wait for the given number of milliseconds.
867
- *
868
- * @remarks
869
- * It's generally recommended to not wait for a number of seconds, but instead
870
- * use {@link Frame.waitForSelector}, {@link Frame.waitForXPath} or
871
- * {@link Frame.waitForFunction} to wait for exactly the conditions you want.
872
- *
873
- * @example
874
- *
875
- * Wait for 1 second:
876
- *
877
- * ```
878
- * await frame.waitForTimeout(1000);
879
- * ```
880
- *
881
- * @param milliseconds - the number of milliseconds to wait.
882
- */
883
- waitForTimeout(milliseconds) {
884
- return new Promise((resolve) => {
885
- setTimeout(resolve, milliseconds);
886
- });
887
- }
888
- /**
889
- * @remarks
890
- *
891
- *
892
- * Wait for the `selector` to appear in page. If at the moment of calling the
893
- * method the `selector` already exists, the method will return immediately.
894
- * If the selector doesn't appear after the `timeout` milliseconds of waiting,
895
- * the function will throw.
896
- *
897
- * This method works across navigations.
898
- *
899
- * @example
900
- * ```js
901
- * const puppeteer = require('puppeteer');
902
- *
903
- * (async () => {
904
- * const browser = await puppeteer.launch();
905
- * const page = await browser.newPage();
906
- * let currentURL;
907
- * page.mainFrame()
908
- * .waitForSelector('img')
909
- * .then(() => console.log('First URL with image: ' + currentURL));
910
- *
911
- * for (currentURL of ['https://example.com', 'https://google.com', 'https://bbc.com']) {
912
- * await page.goto(currentURL);
913
- * }
914
- * await browser.close();
915
- * })();
916
- * ```
917
- * @param selector - the selector to wait for.
918
- * @param options - options to define if the element should be visible and how
919
- * long to wait before timing out.
920
- * @returns a promise which resolves when an element matching the selector
921
- * string is added to the DOM.
922
- */
923
- async waitForSelector(selector, options = {}) {
924
- const handle = await this._secondaryWorld.waitForSelector(selector, options);
925
- if (!handle)
926
- return null;
927
- const mainExecutionContext = await this._mainWorld.executionContext();
928
- const result = await mainExecutionContext._adoptElementHandle(handle);
929
- await handle.dispose();
930
- return result;
931
- }
932
- /**
933
- * @remarks
934
- * Wait for the `xpath` to appear in page. If at the moment of calling the
935
- * method the `xpath` already exists, the method will return immediately. If
936
- * the xpath doesn't appear after the `timeout` milliseconds of waiting, the
937
- * function will throw.
938
- *
939
- * For a code example, see the example for {@link Frame.waitForSelector}. That
940
- * function behaves identically other than taking a CSS selector rather than
941
- * an XPath.
942
- *
943
- * @param xpath - the XPath expression to wait for.
944
- * @param options - options to configure the visiblity of the element and how
945
- * long to wait before timing out.
946
- */
947
- async waitForXPath(xpath, options = {}) {
948
- const handle = await this._secondaryWorld.waitForXPath(xpath, options);
949
- if (!handle)
950
- return null;
951
- const mainExecutionContext = await this._mainWorld.executionContext();
952
- const result = await mainExecutionContext._adoptElementHandle(handle);
953
- await handle.dispose();
954
- return result;
955
- }
956
- /**
957
- * @remarks
958
- *
959
- * @example
960
- *
961
- * The `waitForFunction` can be used to observe viewport size change:
962
- * ```js
963
- * const puppeteer = require('puppeteer');
964
- *
965
- * (async () => {
966
- * . const browser = await puppeteer.launch();
967
- * . const page = await browser.newPage();
968
- * . const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100');
969
- * . page.setViewport({width: 50, height: 50});
970
- * . await watchDog;
971
- * . await browser.close();
972
- * })();
973
- * ```
974
- *
975
- * To pass arguments from Node.js to the predicate of `page.waitForFunction` function:
976
- *
977
- * ```js
978
- * const selector = '.foo';
979
- * await frame.waitForFunction(
980
- * selector => !!document.querySelector(selector),
981
- * {}, // empty options object
982
- * selector
983
- *);
984
- * ```
985
- *
986
- * @param pageFunction - the function to evaluate in the frame context.
987
- * @param options - options to configure the polling method and timeout.
988
- * @param args - arguments to pass to the `pageFunction`.
989
- * @returns the promise which resolve when the `pageFunction` returns a truthy value.
990
- */
991
- waitForFunction(pageFunction, options = {}, ...args) {
992
- return this._mainWorld.waitForFunction(pageFunction, options, ...args);
993
- }
994
- /**
995
- * @returns the frame's title.
996
- */
997
- async title() {
998
- return this._secondaryWorld.title();
999
- }
1000
- /**
1001
- * @internal
1002
- */
1003
- _navigated(framePayload) {
1004
- this._name = framePayload.name;
1005
- this._url = `${framePayload.url}${framePayload.urlFragment || ''}`;
1006
- }
1007
- /**
1008
- * @internal
1009
- */
1010
- _navigatedWithinDocument(url) {
1011
- this._url = url;
1012
- }
1013
- /**
1014
- * @internal
1015
- */
1016
- _onLifecycleEvent(loaderId, name) {
1017
- if (name === 'init') {
1018
- this._loaderId = loaderId;
1019
- this._lifecycleEvents.clear();
1020
- }
1021
- this._lifecycleEvents.add(name);
1022
- }
1023
- /**
1024
- * @internal
1025
- */
1026
- _onLoadingStopped() {
1027
- this._lifecycleEvents.add('DOMContentLoaded');
1028
- this._lifecycleEvents.add('load');
1029
- }
1030
- /**
1031
- * @internal
1032
- */
1033
- _detach() {
1034
- this._detached = true;
1035
- this._mainWorld._detach();
1036
- this._secondaryWorld._detach();
1037
- if (this._parentFrame)
1038
- this._parentFrame._childFrames.delete(this);
1039
- this._parentFrame = null;
1040
- }
1041
- }
1042
- exports.Frame = Frame;
1043
- function assertNoLegacyNavigationOptions(options) {
1044
- (0, assert_js_1.assert)(options['networkIdleTimeout'] === undefined, 'ERROR: networkIdleTimeout option is no longer supported.');
1045
- (0, assert_js_1.assert)(options['networkIdleInflight'] === undefined, 'ERROR: networkIdleInflight option is no longer supported.');
1046
- (0, assert_js_1.assert)(options.waitUntil !== 'networkidle', 'ERROR: "networkidle" option is no longer supported. Use "networkidle2" instead');
1047
- }
1
+ "use strict";
2
+ /**
3
+ * Copyright 2017 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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.Frame = exports.FrameManager = exports.FrameManagerEmittedEvents = void 0;
19
+ const EventEmitter_js_1 = require("./EventEmitter.js");
20
+ const assert_js_1 = require("./assert.js");
21
+ const helper_js_1 = require("./helper.js");
22
+ const ExecutionContext_js_1 = require("./ExecutionContext.js");
23
+ const LifecycleWatcher_js_1 = require("./LifecycleWatcher.js");
24
+ const DOMWorld_js_1 = require("./DOMWorld.js");
25
+ const NetworkManager_js_1 = require("./NetworkManager.js");
26
+ const Connection_js_1 = require("./Connection.js");
27
+ const UTILITY_WORLD_NAME = '__puppeteer_utility_world__';
28
+ const xPathPattern = /^\(\/\/[^\)]+\)|^\/\//;
29
+ /**
30
+ * We use symbols to prevent external parties listening to these events.
31
+ * They are internal to Puppeteer.
32
+ *
33
+ * @internal
34
+ */
35
+ exports.FrameManagerEmittedEvents = {
36
+ FrameAttached: Symbol('FrameManager.FrameAttached'),
37
+ FrameNavigated: Symbol('FrameManager.FrameNavigated'),
38
+ FrameDetached: Symbol('FrameManager.FrameDetached'),
39
+ LifecycleEvent: Symbol('FrameManager.LifecycleEvent'),
40
+ FrameNavigatedWithinDocument: Symbol('FrameManager.FrameNavigatedWithinDocument'),
41
+ ExecutionContextCreated: Symbol('FrameManager.ExecutionContextCreated'),
42
+ ExecutionContextDestroyed: Symbol('FrameManager.ExecutionContextDestroyed'),
43
+ };
44
+ /**
45
+ * @internal
46
+ */
47
+ class FrameManager extends EventEmitter_js_1.EventEmitter {
48
+ constructor(client, page, ignoreHTTPSErrors, timeoutSettings) {
49
+ super();
50
+ this._frames = new Map();
51
+ this._contextIdToContext = new Map();
52
+ this._isolatedWorlds = new Set();
53
+ this._client = client;
54
+ this._page = page;
55
+ this._networkManager = new NetworkManager_js_1.NetworkManager(client, ignoreHTTPSErrors, this);
56
+ this._timeoutSettings = timeoutSettings;
57
+ this.setupEventListeners(this._client);
58
+ }
59
+ setupEventListeners(session) {
60
+ session.on('Page.frameAttached', (event) => {
61
+ this._onFrameAttached(session, event.frameId, event.parentFrameId);
62
+ });
63
+ session.on('Page.frameNavigated', (event) => {
64
+ this._onFrameNavigated(event.frame);
65
+ });
66
+ session.on('Page.navigatedWithinDocument', (event) => {
67
+ this._onFrameNavigatedWithinDocument(event.frameId, event.url);
68
+ });
69
+ session.on('Page.frameDetached', (event) => {
70
+ this._onFrameDetached(event.frameId, event.reason);
71
+ });
72
+ session.on('Page.frameStoppedLoading', (event) => {
73
+ this._onFrameStoppedLoading(event.frameId);
74
+ });
75
+ session.on('Runtime.executionContextCreated', (event) => {
76
+ this._onExecutionContextCreated(event.context, session);
77
+ });
78
+ session.on('Runtime.executionContextDestroyed', (event) => {
79
+ this._onExecutionContextDestroyed(event.executionContextId, session);
80
+ });
81
+ session.on('Runtime.executionContextsCleared', () => {
82
+ this._onExecutionContextsCleared(session);
83
+ });
84
+ session.on('Page.lifecycleEvent', (event) => {
85
+ this._onLifecycleEvent(event);
86
+ });
87
+ session.on('Target.attachedToTarget', async (event) => {
88
+ this._onAttachedToTarget(event);
89
+ });
90
+ session.on('Target.detachedFromTarget', async (event) => {
91
+ this._onDetachedFromTarget(event);
92
+ });
93
+ }
94
+ async initialize(client = this._client) {
95
+ try {
96
+ const result = await Promise.all([
97
+ client.send('Page.enable'),
98
+ client.send('Page.getFrameTree'),
99
+ ]);
100
+ const { frameTree } = result[1];
101
+ this._handleFrameTree(client, frameTree);
102
+ await Promise.all([
103
+ client.send('Page.setLifecycleEventsEnabled', { enabled: true }),
104
+ client
105
+ .send('Runtime.enable')
106
+ .then(() => this._ensureIsolatedWorld(client, UTILITY_WORLD_NAME)),
107
+ // TODO: Network manager is not aware of OOP iframes yet.
108
+ client === this._client
109
+ ? this._networkManager.initialize()
110
+ : Promise.resolve(),
111
+ ]);
112
+ }
113
+ catch (error) {
114
+ // The target might have been closed before the initialization finished.
115
+ if (error.message.includes('Target closed') ||
116
+ error.message.includes('Session closed')) {
117
+ return;
118
+ }
119
+ throw error;
120
+ }
121
+ }
122
+ networkManager() {
123
+ return this._networkManager;
124
+ }
125
+ async navigateFrame(frame, url, options = {}) {
126
+ assertNoLegacyNavigationOptions(options);
127
+ const { referer = this._networkManager.extraHTTPHeaders()['referer'], waitUntil = ['load'], timeout = this._timeoutSettings.navigationTimeout(), } = options;
128
+ const watcher = new LifecycleWatcher_js_1.LifecycleWatcher(this, frame, waitUntil, timeout);
129
+ let ensureNewDocumentNavigation = false;
130
+ let error = await Promise.race([
131
+ navigate(this._client, url, referer, frame._id),
132
+ watcher.timeoutOrTerminationPromise(),
133
+ ]);
134
+ if (!error) {
135
+ error = await Promise.race([
136
+ watcher.timeoutOrTerminationPromise(),
137
+ ensureNewDocumentNavigation
138
+ ? watcher.newDocumentNavigationPromise()
139
+ : watcher.sameDocumentNavigationPromise(),
140
+ ]);
141
+ }
142
+ watcher.dispose();
143
+ if (error)
144
+ throw error;
145
+ return await watcher.navigationResponse();
146
+ async function navigate(client, url, referrer, frameId) {
147
+ try {
148
+ const response = await client.send('Page.navigate', {
149
+ url,
150
+ referrer,
151
+ frameId,
152
+ });
153
+ ensureNewDocumentNavigation = !!response.loaderId;
154
+ return response.errorText
155
+ ? new Error(`${response.errorText} at ${url}`)
156
+ : null;
157
+ }
158
+ catch (error) {
159
+ return error;
160
+ }
161
+ }
162
+ }
163
+ async waitForFrameNavigation(frame, options = {}) {
164
+ assertNoLegacyNavigationOptions(options);
165
+ const { waitUntil = ['load'], timeout = this._timeoutSettings.navigationTimeout(), } = options;
166
+ const watcher = new LifecycleWatcher_js_1.LifecycleWatcher(this, frame, waitUntil, timeout);
167
+ const error = await Promise.race([
168
+ watcher.timeoutOrTerminationPromise(),
169
+ watcher.sameDocumentNavigationPromise(),
170
+ watcher.newDocumentNavigationPromise(),
171
+ ]);
172
+ watcher.dispose();
173
+ if (error)
174
+ throw error;
175
+ return await watcher.navigationResponse();
176
+ }
177
+ async _onAttachedToTarget(event) {
178
+ if (event.targetInfo.type !== 'iframe') {
179
+ return;
180
+ }
181
+ const frame = this._frames.get(event.targetInfo.targetId);
182
+ const session = Connection_js_1.Connection.fromSession(this._client).session(event.sessionId);
183
+ frame._updateClient(session);
184
+ this.setupEventListeners(session);
185
+ await this.initialize(session);
186
+ }
187
+ async _onDetachedFromTarget(event) {
188
+ const frame = this._frames.get(event.targetId);
189
+ if (frame && frame.isOOPFrame()) {
190
+ // When an OOP iframe is removed from the page, it
191
+ // will only get a Target.detachedFromTarget event.
192
+ this._removeFramesRecursively(frame);
193
+ }
194
+ }
195
+ _onLifecycleEvent(event) {
196
+ const frame = this._frames.get(event.frameId);
197
+ if (!frame)
198
+ return;
199
+ frame._onLifecycleEvent(event.loaderId, event.name);
200
+ this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
201
+ }
202
+ _onFrameStoppedLoading(frameId) {
203
+ const frame = this._frames.get(frameId);
204
+ if (!frame)
205
+ return;
206
+ frame._onLoadingStopped();
207
+ this.emit(exports.FrameManagerEmittedEvents.LifecycleEvent, frame);
208
+ }
209
+ _handleFrameTree(session, frameTree) {
210
+ if (frameTree.frame.parentId) {
211
+ this._onFrameAttached(session, frameTree.frame.id, frameTree.frame.parentId);
212
+ }
213
+ this._onFrameNavigated(frameTree.frame);
214
+ if (!frameTree.childFrames)
215
+ return;
216
+ for (const child of frameTree.childFrames) {
217
+ this._handleFrameTree(session, child);
218
+ }
219
+ }
220
+ page() {
221
+ return this._page;
222
+ }
223
+ mainFrame() {
224
+ return this._mainFrame;
225
+ }
226
+ frames() {
227
+ return Array.from(this._frames.values());
228
+ }
229
+ frame(frameId) {
230
+ return this._frames.get(frameId) || null;
231
+ }
232
+ _onFrameAttached(session, frameId, parentFrameId) {
233
+ if (this._frames.has(frameId)) {
234
+ const frame = this._frames.get(frameId);
235
+ if (session && frame.isOOPFrame()) {
236
+ // If an OOP iframes becomes a normal iframe again
237
+ // it is first attached to the parent page before
238
+ // the target is removed.
239
+ frame._updateClient(session);
240
+ }
241
+ return;
242
+ }
243
+ (0, assert_js_1.assert)(parentFrameId);
244
+ const parentFrame = this._frames.get(parentFrameId);
245
+ const frame = new Frame(this, parentFrame, frameId, session);
246
+ this._frames.set(frame._id, frame);
247
+ this.emit(exports.FrameManagerEmittedEvents.FrameAttached, frame);
248
+ }
249
+ _onFrameNavigated(framePayload) {
250
+ const isMainFrame = !framePayload.parentId;
251
+ let frame = isMainFrame
252
+ ? this._mainFrame
253
+ : this._frames.get(framePayload.id);
254
+ (0, assert_js_1.assert)(isMainFrame || frame, 'We either navigate top level or have old version of the navigated frame');
255
+ // Detach all child frames first.
256
+ if (frame) {
257
+ for (const child of frame.childFrames())
258
+ this._removeFramesRecursively(child);
259
+ }
260
+ // Update or create main frame.
261
+ if (isMainFrame) {
262
+ if (frame) {
263
+ // Update frame id to retain frame identity on cross-process navigation.
264
+ this._frames.delete(frame._id);
265
+ frame._id = framePayload.id;
266
+ }
267
+ else {
268
+ // Initial main frame navigation.
269
+ frame = new Frame(this, null, framePayload.id, this._client);
270
+ }
271
+ this._frames.set(framePayload.id, frame);
272
+ this._mainFrame = frame;
273
+ }
274
+ // Update frame payload.
275
+ frame._navigated(framePayload);
276
+ this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
277
+ }
278
+ async _ensureIsolatedWorld(session, name) {
279
+ const key = `${session.id()}:${name}`;
280
+ if (this._isolatedWorlds.has(key))
281
+ return;
282
+ this._isolatedWorlds.add(key);
283
+ await session.send('Page.addScriptToEvaluateOnNewDocument', {
284
+ source: `//# sourceURL=${ExecutionContext_js_1.EVALUATION_SCRIPT_URL}`,
285
+ worldName: name,
286
+ });
287
+ // Frames might be removed before we send this.
288
+ await Promise.all(this.frames()
289
+ .filter((frame) => frame._client === session)
290
+ .map((frame) => session.send('Page.createIsolatedWorld', {
291
+ frameId: frame._id,
292
+ worldName: name,
293
+ grantUniveralAccess: true,
294
+ })));
295
+ }
296
+ _onFrameNavigatedWithinDocument(frameId, url) {
297
+ const frame = this._frames.get(frameId);
298
+ if (!frame)
299
+ return;
300
+ frame._navigatedWithinDocument(url);
301
+ this.emit(exports.FrameManagerEmittedEvents.FrameNavigatedWithinDocument, frame);
302
+ this.emit(exports.FrameManagerEmittedEvents.FrameNavigated, frame);
303
+ }
304
+ _onFrameDetached(frameId, reason) {
305
+ const frame = this._frames.get(frameId);
306
+ if (reason === 'remove') {
307
+ // Only remove the frame if the reason for the detached event is
308
+ // an actual removement of the frame.
309
+ // For frames that become OOP iframes, the reason would be 'swap'.
310
+ if (frame)
311
+ this._removeFramesRecursively(frame);
312
+ }
313
+ }
314
+ _onExecutionContextCreated(contextPayload, session) {
315
+ const auxData = contextPayload.auxData;
316
+ const frameId = auxData ? auxData.frameId : null;
317
+ const frame = this._frames.get(frameId) || null;
318
+ let world = null;
319
+ if (frame) {
320
+ // Only care about execution contexts created for the current session.
321
+ if (frame._client !== session)
322
+ return;
323
+ if (contextPayload.auxData && !!contextPayload.auxData['isDefault']) {
324
+ world = frame._mainWorld;
325
+ }
326
+ else if (contextPayload.name === UTILITY_WORLD_NAME &&
327
+ !frame._secondaryWorld._hasContext()) {
328
+ // In case of multiple sessions to the same target, there's a race between
329
+ // connections so we might end up creating multiple isolated worlds.
330
+ // We can use either.
331
+ world = frame._secondaryWorld;
332
+ }
333
+ }
334
+ const context = new ExecutionContext_js_1.ExecutionContext((frame === null || frame === void 0 ? void 0 : frame._client) || this._client, contextPayload, world);
335
+ if (world)
336
+ world._setContext(context);
337
+ const key = `${session.id()}:${contextPayload.id}`;
338
+ this._contextIdToContext.set(key, context);
339
+ }
340
+ _onExecutionContextDestroyed(executionContextId, session) {
341
+ const key = `${session.id()}:${executionContextId}`;
342
+ const context = this._contextIdToContext.get(key);
343
+ if (!context)
344
+ return;
345
+ this._contextIdToContext.delete(key);
346
+ if (context._world)
347
+ context._world._setContext(null);
348
+ }
349
+ _onExecutionContextsCleared(session) {
350
+ for (const [key, context] of this._contextIdToContext.entries()) {
351
+ // Make sure to only clear execution contexts that belong
352
+ // to the current session.
353
+ if (context._client !== session)
354
+ continue;
355
+ if (context._world)
356
+ context._world._setContext(null);
357
+ this._contextIdToContext.delete(key);
358
+ }
359
+ }
360
+ executionContextById(contextId, session = this._client) {
361
+ const key = `${session.id()}:${contextId}`;
362
+ const context = this._contextIdToContext.get(key);
363
+ (0, assert_js_1.assert)(context, 'INTERNAL ERROR: missing context with id = ' + contextId);
364
+ return context;
365
+ }
366
+ _removeFramesRecursively(frame) {
367
+ for (const child of frame.childFrames())
368
+ this._removeFramesRecursively(child);
369
+ frame._detach();
370
+ this._frames.delete(frame._id);
371
+ this.emit(exports.FrameManagerEmittedEvents.FrameDetached, frame);
372
+ }
373
+ }
374
+ exports.FrameManager = FrameManager;
375
+ /**
376
+ * At every point of time, page exposes its current frame tree via the
377
+ * {@link Page.mainFrame | page.mainFrame} and
378
+ * {@link Frame.childFrames | frame.childFrames} methods.
379
+ *
380
+ * @remarks
381
+ *
382
+ * `Frame` object lifecycles are controlled by three events that are all
383
+ * dispatched on the page object:
384
+ *
385
+ * - {@link PageEmittedEvents.FrameAttached}
386
+ *
387
+ * - {@link PageEmittedEvents.FrameNavigated}
388
+ *
389
+ * - {@link PageEmittedEvents.FrameDetached}
390
+ *
391
+ * @Example
392
+ * An example of dumping frame tree:
393
+ *
394
+ * ```js
395
+ * const puppeteer = require('puppeteer');
396
+ *
397
+ * (async () => {
398
+ * const browser = await puppeteer.launch();
399
+ * const page = await browser.newPage();
400
+ * await page.goto('https://www.google.com/chrome/browser/canary.html');
401
+ * dumpFrameTree(page.mainFrame(), '');
402
+ * await browser.close();
403
+ *
404
+ * function dumpFrameTree(frame, indent) {
405
+ * console.log(indent + frame.url());
406
+ * for (const child of frame.childFrames()) {
407
+ * dumpFrameTree(child, indent + ' ');
408
+ * }
409
+ * }
410
+ * })();
411
+ * ```
412
+ *
413
+ * @Example
414
+ * An example of getting text from an iframe element:
415
+ *
416
+ * ```js
417
+ * const frame = page.frames().find(frame => frame.name() === 'myframe');
418
+ * const text = await frame.$eval('.selector', element => element.textContent);
419
+ * console.log(text);
420
+ * ```
421
+ *
422
+ * @public
423
+ */
424
+ class Frame {
425
+ /**
426
+ * @internal
427
+ */
428
+ constructor(frameManager, parentFrame, frameId, client) {
429
+ this._url = '';
430
+ this._detached = false;
431
+ /**
432
+ * @internal
433
+ */
434
+ this._loaderId = '';
435
+ /**
436
+ * @internal
437
+ */
438
+ this._lifecycleEvents = new Set();
439
+ this._frameManager = frameManager;
440
+ this._parentFrame = parentFrame;
441
+ this._url = '';
442
+ this._id = frameId;
443
+ this._detached = false;
444
+ this._loaderId = '';
445
+ this._childFrames = new Set();
446
+ if (this._parentFrame)
447
+ this._parentFrame._childFrames.add(this);
448
+ this._updateClient(client);
449
+ }
450
+ /**
451
+ * @internal
452
+ */
453
+ _updateClient(client) {
454
+ this._client = client;
455
+ this._mainWorld = new DOMWorld_js_1.DOMWorld(this._client, this._frameManager, this, this._frameManager._timeoutSettings);
456
+ this._secondaryWorld = new DOMWorld_js_1.DOMWorld(this._client, this._frameManager, this, this._frameManager._timeoutSettings);
457
+ }
458
+ isOOPFrame() {
459
+ return this._client !== this._frameManager._client;
460
+ }
461
+ /**
462
+ * @remarks
463
+ *
464
+ * `frame.goto` will throw an error if:
465
+ * - there's an SSL error (e.g. in case of self-signed certificates).
466
+ *
467
+ * - target URL is invalid.
468
+ *
469
+ * - the `timeout` is exceeded during navigation.
470
+ *
471
+ * - the remote server does not respond or is unreachable.
472
+ *
473
+ * - the main resource failed to load.
474
+ *
475
+ * `frame.goto` will not throw an error when any valid HTTP status code is
476
+ * returned by the remote server, including 404 "Not Found" and 500 "Internal
477
+ * Server Error". The status code for such responses can be retrieved by
478
+ * calling {@link HTTPResponse.status}.
479
+ *
480
+ * NOTE: `frame.goto` either throws an error or returns a main resource
481
+ * response. The only exceptions are navigation to `about:blank` or
482
+ * navigation to the same URL with a different hash, which would succeed and
483
+ * return `null`.
484
+ *
485
+ * NOTE: Headless mode doesn't support navigation to a PDF document. See
486
+ * the {@link https://bugs.chromium.org/p/chromium/issues/detail?id=761295 | upstream
487
+ * issue}.
488
+ *
489
+ * @param url - the URL to navigate the frame to. This should include the
490
+ * scheme, e.g. `https://`.
491
+ * @param options - navigation options. `waitUntil` is useful to define when
492
+ * the navigation should be considered successful - see the docs for
493
+ * {@link PuppeteerLifeCycleEvent} for more details.
494
+ *
495
+ * @returns A promise which resolves to the main resource response. In case of
496
+ * multiple redirects, the navigation will resolve with the response of the
497
+ * last redirect.
498
+ */
499
+ async goto(url, options = {}) {
500
+ return await this._frameManager.navigateFrame(this, url, options);
501
+ }
502
+ /**
503
+ * @remarks
504
+ *
505
+ * This resolves when the frame navigates to a new URL. It is useful for when
506
+ * you run code which will indirectly cause the frame to navigate. Consider
507
+ * this example:
508
+ *
509
+ * ```js
510
+ * const [response] = await Promise.all([
511
+ * // The navigation promise resolves after navigation has finished
512
+ * frame.waitForNavigation(),
513
+ * // Clicking the link will indirectly cause a navigation
514
+ * frame.click('a.my-link'),
515
+ * ]);
516
+ * ```
517
+ *
518
+ * Usage of the {@link https://developer.mozilla.org/en-US/docs/Web/API/History_API | History API} to change the URL is considered a navigation.
519
+ *
520
+ * @param options - options to configure when the navigation is consided finished.
521
+ * @returns a promise that resolves when the frame navigates to a new URL.
522
+ */
523
+ async waitForNavigation(options = {}) {
524
+ return await this._frameManager.waitForFrameNavigation(this, options);
525
+ }
526
+ /**
527
+ * @returns a promise that resolves to the frame's default execution context.
528
+ */
529
+ executionContext() {
530
+ return this._mainWorld.executionContext();
531
+ }
532
+ /**
533
+ * @remarks
534
+ *
535
+ * The only difference between {@link Frame.evaluate} and
536
+ * `frame.evaluateHandle` is that `evaluateHandle` will return the value
537
+ * wrapped in an in-page object.
538
+ *
539
+ * This method behaves identically to {@link Page.evaluateHandle} except it's
540
+ * run within the context of the `frame`, rather than the entire page.
541
+ *
542
+ * @param pageFunction - a function that is run within the frame
543
+ * @param args - arguments to be passed to the pageFunction
544
+ */
545
+ async evaluateHandle(pageFunction, ...args) {
546
+ return this._mainWorld.evaluateHandle(pageFunction, ...args);
547
+ }
548
+ /**
549
+ * @remarks
550
+ *
551
+ * This method behaves identically to {@link Page.evaluate} except it's run
552
+ * within the context of the `frame`, rather than the entire page.
553
+ *
554
+ * @param pageFunction - a function that is run within the frame
555
+ * @param args - arguments to be passed to the pageFunction
556
+ */
557
+ async evaluate(pageFunction, ...args) {
558
+ return this._mainWorld.evaluate(pageFunction, ...args);
559
+ }
560
+ /**
561
+ * This method queries the frame for the given selector.
562
+ *
563
+ * @param selector - a selector to query for.
564
+ * @returns A promise which resolves to an `ElementHandle` pointing at the
565
+ * element, or `null` if it was not found.
566
+ */
567
+ async $(selector) {
568
+ return this._mainWorld.$(selector);
569
+ }
570
+ /**
571
+ * This method evaluates the given XPath expression and returns the results.
572
+ *
573
+ * @param expression - the XPath expression to evaluate.
574
+ */
575
+ async $x(expression) {
576
+ return this._mainWorld.$x(expression);
577
+ }
578
+ /**
579
+ * @remarks
580
+ *
581
+ * This method runs `document.querySelector` within
582
+ * the frame and passes it as the first argument to `pageFunction`.
583
+ *
584
+ * If `pageFunction` returns a Promise, then `frame.$eval` would wait for
585
+ * the promise to resolve and return its value.
586
+ *
587
+ * @example
588
+ *
589
+ * ```js
590
+ * const searchValue = await frame.$eval('#search', el => el.value);
591
+ * ```
592
+ *
593
+ * @param selector - the selector to query for
594
+ * @param pageFunction - the function to be evaluated in the frame's context
595
+ * @param args - additional arguments to pass to `pageFuncton`
596
+ */
597
+ async $eval(selector, pageFunction, ...args) {
598
+ return this._mainWorld.$eval(selector, pageFunction, ...args);
599
+ }
600
+ /**
601
+ * @remarks
602
+ *
603
+ * This method runs `Array.from(document.querySelectorAll(selector))` within
604
+ * the frame and passes it as the first argument to `pageFunction`.
605
+ *
606
+ * If `pageFunction` returns a Promise, then `frame.$$eval` would wait for
607
+ * the promise to resolve and return its value.
608
+ *
609
+ * @example
610
+ *
611
+ * ```js
612
+ * const divsCounts = await frame.$$eval('div', divs => divs.length);
613
+ * ```
614
+ *
615
+ * @param selector - the selector to query for
616
+ * @param pageFunction - the function to be evaluated in the frame's context
617
+ * @param args - additional arguments to pass to `pageFuncton`
618
+ */
619
+ async $$eval(selector, pageFunction, ...args) {
620
+ return this._mainWorld.$$eval(selector, pageFunction, ...args);
621
+ }
622
+ /**
623
+ * This runs `document.querySelectorAll` in the frame and returns the result.
624
+ *
625
+ * @param selector - a selector to search for
626
+ * @returns An array of element handles pointing to the found frame elements.
627
+ */
628
+ async $$(selector) {
629
+ return this._mainWorld.$$(selector);
630
+ }
631
+ /**
632
+ * @returns the full HTML contents of the frame, including the doctype.
633
+ */
634
+ async content() {
635
+ return this._secondaryWorld.content();
636
+ }
637
+ /**
638
+ * Set the content of the frame.
639
+ *
640
+ * @param html - HTML markup to assign to the page.
641
+ * @param options - options to configure how long before timing out and at
642
+ * what point to consider the content setting successful.
643
+ */
644
+ async setContent(html, options = {}) {
645
+ return this._secondaryWorld.setContent(html, options);
646
+ }
647
+ /**
648
+ * @remarks
649
+ *
650
+ * If the name is empty, it returns the `id` attribute instead.
651
+ *
652
+ * Note: This value is calculated once when the frame is created, and will not
653
+ * update if the attribute is changed later.
654
+ *
655
+ * @returns the frame's `name` attribute as specified in the tag.
656
+ */
657
+ name() {
658
+ return this._name || '';
659
+ }
660
+ /**
661
+ * @returns the frame's URL.
662
+ */
663
+ url() {
664
+ return this._url;
665
+ }
666
+ /**
667
+ * @returns the parent `Frame`, if any. Detached and main frames return `null`.
668
+ */
669
+ parentFrame() {
670
+ return this._parentFrame;
671
+ }
672
+ /**
673
+ * @returns an array of child frames.
674
+ */
675
+ childFrames() {
676
+ return Array.from(this._childFrames);
677
+ }
678
+ /**
679
+ * @returns `true` if the frame has been detached, or `false` otherwise.
680
+ */
681
+ isDetached() {
682
+ return this._detached;
683
+ }
684
+ /**
685
+ * Adds a `<script>` tag into the page with the desired url or content.
686
+ *
687
+ * @param options - configure the script to add to the page.
688
+ *
689
+ * @returns a promise that resolves to the added tag when the script's
690
+ * `onload` event fires or when the script content was injected into the
691
+ * frame.
692
+ */
693
+ async addScriptTag(options) {
694
+ return this._mainWorld.addScriptTag(options);
695
+ }
696
+ /**
697
+ * Adds a `<link rel="stylesheet">` tag into the page with the desired url or
698
+ * a `<style type="text/css">` tag with the content.
699
+ *
700
+ * @param options - configure the CSS to add to the page.
701
+ *
702
+ * @returns a promise that resolves to the added tag when the stylesheets's
703
+ * `onload` event fires or when the CSS content was injected into the
704
+ * frame.
705
+ */
706
+ async addStyleTag(options) {
707
+ return this._mainWorld.addStyleTag(options);
708
+ }
709
+ /**
710
+ *
711
+ * This method clicks the first element found that matches `selector`.
712
+ *
713
+ * @remarks
714
+ *
715
+ * This method scrolls the element into view if needed, and then uses
716
+ * {@link Page.mouse} to click in the center of the element. If there's no
717
+ * element matching `selector`, the method throws an error.
718
+ *
719
+ * Bear in mind that if `click()` triggers a navigation event and there's a
720
+ * separate `page.waitForNavigation()` promise to be resolved, you may end up
721
+ * with a race condition that yields unexpected results. The correct pattern
722
+ * for click and wait for navigation is the following:
723
+ *
724
+ * ```javascript
725
+ * const [response] = await Promise.all([
726
+ * page.waitForNavigation(waitOptions),
727
+ * frame.click(selector, clickOptions),
728
+ * ]);
729
+ * ```
730
+ * @param selector - the selector to search for to click. If there are
731
+ * multiple elements, the first will be clicked.
732
+ */
733
+ async click(selector, options = {}) {
734
+ return this._secondaryWorld.click(selector, options);
735
+ }
736
+ /**
737
+ * This method fetches an element with `selector` and focuses it.
738
+ *
739
+ * @remarks
740
+ * If there's no element matching `selector`, the method throws an error.
741
+ *
742
+ * @param selector - the selector for the element to focus. If there are
743
+ * multiple elements, the first will be focused.
744
+ */
745
+ async focus(selector) {
746
+ return this._secondaryWorld.focus(selector);
747
+ }
748
+ /**
749
+ * This method fetches an element with `selector`, scrolls it into view if
750
+ * needed, and then uses {@link Page.mouse} to hover over the center of the
751
+ * element.
752
+ *
753
+ * @remarks
754
+ * If there's no element matching `selector`, the method throws an
755
+ *
756
+ * @param selector - the selector for the element to hover. If there are
757
+ * multiple elements, the first will be hovered.
758
+ */
759
+ async hover(selector) {
760
+ return this._secondaryWorld.hover(selector);
761
+ }
762
+ /**
763
+ * Triggers a `change` and `input` event once all the provided options have
764
+ * been selected.
765
+ *
766
+ * @remarks
767
+ *
768
+ * If there's no `<select>` element matching `selector`, the
769
+ * method throws an error.
770
+ *
771
+ * @example
772
+ * ```js
773
+ * frame.select('select#colors', 'blue'); // single selection
774
+ * frame.select('select#colors', 'red', 'green', 'blue'); // multiple selections
775
+ * ```
776
+ *
777
+ * @param selector - a selector to query the frame for
778
+ * @param values - an array of values to select. If the `<select>` has the
779
+ * `multiple` attribute, all values are considered, otherwise only the first
780
+ * one is taken into account.
781
+ * @returns the list of values that were successfully selected.
782
+ */
783
+ select(selector, ...values) {
784
+ return this._secondaryWorld.select(selector, ...values);
785
+ }
786
+ /**
787
+ * This method fetches an element with `selector`, scrolls it into view if
788
+ * needed, and then uses {@link Page.touchscreen} to tap in the center of the
789
+ * element.
790
+ *
791
+ * @remarks
792
+ *
793
+ * If there's no element matching `selector`, the method throws an error.
794
+ *
795
+ * @param selector - the selector to tap.
796
+ * @returns a promise that resolves when the element has been tapped.
797
+ */
798
+ async tap(selector) {
799
+ return this._secondaryWorld.tap(selector);
800
+ }
801
+ /**
802
+ * Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character
803
+ * in the text.
804
+ *
805
+ * @remarks
806
+ * To press a special key, like `Control` or `ArrowDown`, use
807
+ * {@link Keyboard.press}.
808
+ *
809
+ * @example
810
+ * ```js
811
+ * await frame.type('#mytextarea', 'Hello'); // Types instantly
812
+ * await frame.type('#mytextarea', 'World', {delay: 100}); // Types slower, like a user
813
+ * ```
814
+ *
815
+ * @param selector - the selector for the element to type into. If there are
816
+ * multiple the first will be used.
817
+ * @param text - text to type into the element
818
+ * @param options - takes one option, `delay`, which sets the time to wait
819
+ * between key presses in milliseconds. Defaults to `0`.
820
+ *
821
+ * @returns a promise that resolves when the typing is complete.
822
+ */
823
+ async type(selector, text, options) {
824
+ return this._mainWorld.type(selector, text, options);
825
+ }
826
+ /**
827
+ * @remarks
828
+ *
829
+ * This method behaves differently depending on the first parameter. If it's a
830
+ * `string`, it will be treated as a `selector` or `xpath` (if the string
831
+ * starts with `//`). This method then is a shortcut for
832
+ * {@link Frame.waitForSelector} or {@link Frame.waitForXPath}.
833
+ *
834
+ * If the first argument is a function this method is a shortcut for
835
+ * {@link Frame.waitForFunction}.
836
+ *
837
+ * If the first argument is a `number`, it's treated as a timeout in
838
+ * milliseconds and the method returns a promise which resolves after the
839
+ * timeout.
840
+ *
841
+ * @param selectorOrFunctionOrTimeout - a selector, predicate or timeout to
842
+ * wait for.
843
+ * @param options - optional waiting parameters.
844
+ * @param args - arguments to pass to `pageFunction`.
845
+ *
846
+ * @deprecated Don't use this method directly. Instead use the more explicit
847
+ * methods available: {@link Frame.waitForSelector},
848
+ * {@link Frame.waitForXPath}, {@link Frame.waitForFunction} or
849
+ * {@link Frame.waitForTimeout}.
850
+ */
851
+ waitFor(selectorOrFunctionOrTimeout, options = {}, ...args) {
852
+ console.warn('waitFor is deprecated and will be removed in a future release. See https://github.com/puppeteer/puppeteer/issues/6214 for details and how to migrate your code.');
853
+ if (helper_js_1.helper.isString(selectorOrFunctionOrTimeout)) {
854
+ const string = selectorOrFunctionOrTimeout;
855
+ if (xPathPattern.test(string))
856
+ return this.waitForXPath(string, options);
857
+ return this.waitForSelector(string, options);
858
+ }
859
+ if (helper_js_1.helper.isNumber(selectorOrFunctionOrTimeout))
860
+ return new Promise((fulfill) => setTimeout(fulfill, selectorOrFunctionOrTimeout));
861
+ if (typeof selectorOrFunctionOrTimeout === 'function')
862
+ return this.waitForFunction(selectorOrFunctionOrTimeout, options, ...args);
863
+ return Promise.reject(new Error('Unsupported target type: ' + typeof selectorOrFunctionOrTimeout));
864
+ }
865
+ /**
866
+ * Causes your script to wait for the given number of milliseconds.
867
+ *
868
+ * @remarks
869
+ * It's generally recommended to not wait for a number of seconds, but instead
870
+ * use {@link Frame.waitForSelector}, {@link Frame.waitForXPath} or
871
+ * {@link Frame.waitForFunction} to wait for exactly the conditions you want.
872
+ *
873
+ * @example
874
+ *
875
+ * Wait for 1 second:
876
+ *
877
+ * ```
878
+ * await frame.waitForTimeout(1000);
879
+ * ```
880
+ *
881
+ * @param milliseconds - the number of milliseconds to wait.
882
+ */
883
+ waitForTimeout(milliseconds) {
884
+ return new Promise((resolve) => {
885
+ setTimeout(resolve, milliseconds);
886
+ });
887
+ }
888
+ /**
889
+ * @remarks
890
+ *
891
+ *
892
+ * Wait for the `selector` to appear in page. If at the moment of calling the
893
+ * method the `selector` already exists, the method will return immediately.
894
+ * If the selector doesn't appear after the `timeout` milliseconds of waiting,
895
+ * the function will throw.
896
+ *
897
+ * This method works across navigations.
898
+ *
899
+ * @example
900
+ * ```js
901
+ * const puppeteer = require('puppeteer');
902
+ *
903
+ * (async () => {
904
+ * const browser = await puppeteer.launch();
905
+ * const page = await browser.newPage();
906
+ * let currentURL;
907
+ * page.mainFrame()
908
+ * .waitForSelector('img')
909
+ * .then(() => console.log('First URL with image: ' + currentURL));
910
+ *
911
+ * for (currentURL of ['https://example.com', 'https://google.com', 'https://bbc.com']) {
912
+ * await page.goto(currentURL);
913
+ * }
914
+ * await browser.close();
915
+ * })();
916
+ * ```
917
+ * @param selector - the selector to wait for.
918
+ * @param options - options to define if the element should be visible and how
919
+ * long to wait before timing out.
920
+ * @returns a promise which resolves when an element matching the selector
921
+ * string is added to the DOM.
922
+ */
923
+ async waitForSelector(selector, options = {}) {
924
+ const handle = await this._secondaryWorld.waitForSelector(selector, options);
925
+ if (!handle)
926
+ return null;
927
+ const mainExecutionContext = await this._mainWorld.executionContext();
928
+ const result = await mainExecutionContext._adoptElementHandle(handle);
929
+ await handle.dispose();
930
+ return result;
931
+ }
932
+ /**
933
+ * @remarks
934
+ * Wait for the `xpath` to appear in page. If at the moment of calling the
935
+ * method the `xpath` already exists, the method will return immediately. If
936
+ * the xpath doesn't appear after the `timeout` milliseconds of waiting, the
937
+ * function will throw.
938
+ *
939
+ * For a code example, see the example for {@link Frame.waitForSelector}. That
940
+ * function behaves identically other than taking a CSS selector rather than
941
+ * an XPath.
942
+ *
943
+ * @param xpath - the XPath expression to wait for.
944
+ * @param options - options to configure the visiblity of the element and how
945
+ * long to wait before timing out.
946
+ */
947
+ async waitForXPath(xpath, options = {}) {
948
+ const handle = await this._secondaryWorld.waitForXPath(xpath, options);
949
+ if (!handle)
950
+ return null;
951
+ const mainExecutionContext = await this._mainWorld.executionContext();
952
+ const result = await mainExecutionContext._adoptElementHandle(handle);
953
+ await handle.dispose();
954
+ return result;
955
+ }
956
+ /**
957
+ * @remarks
958
+ *
959
+ * @example
960
+ *
961
+ * The `waitForFunction` can be used to observe viewport size change:
962
+ * ```js
963
+ * const puppeteer = require('puppeteer');
964
+ *
965
+ * (async () => {
966
+ * . const browser = await puppeteer.launch();
967
+ * . const page = await browser.newPage();
968
+ * . const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100');
969
+ * . page.setViewport({width: 50, height: 50});
970
+ * . await watchDog;
971
+ * . await browser.close();
972
+ * })();
973
+ * ```
974
+ *
975
+ * To pass arguments from Node.js to the predicate of `page.waitForFunction` function:
976
+ *
977
+ * ```js
978
+ * const selector = '.foo';
979
+ * await frame.waitForFunction(
980
+ * selector => !!document.querySelector(selector),
981
+ * {}, // empty options object
982
+ * selector
983
+ *);
984
+ * ```
985
+ *
986
+ * @param pageFunction - the function to evaluate in the frame context.
987
+ * @param options - options to configure the polling method and timeout.
988
+ * @param args - arguments to pass to the `pageFunction`.
989
+ * @returns the promise which resolve when the `pageFunction` returns a truthy value.
990
+ */
991
+ waitForFunction(pageFunction, options = {}, ...args) {
992
+ return this._mainWorld.waitForFunction(pageFunction, options, ...args);
993
+ }
994
+ /**
995
+ * @returns the frame's title.
996
+ */
997
+ async title() {
998
+ return this._secondaryWorld.title();
999
+ }
1000
+ /**
1001
+ * @internal
1002
+ */
1003
+ _navigated(framePayload) {
1004
+ this._name = framePayload.name;
1005
+ this._url = `${framePayload.url}${framePayload.urlFragment || ''}`;
1006
+ }
1007
+ /**
1008
+ * @internal
1009
+ */
1010
+ _navigatedWithinDocument(url) {
1011
+ this._url = url;
1012
+ }
1013
+ /**
1014
+ * @internal
1015
+ */
1016
+ _onLifecycleEvent(loaderId, name) {
1017
+ if (name === 'init') {
1018
+ this._loaderId = loaderId;
1019
+ this._lifecycleEvents.clear();
1020
+ }
1021
+ this._lifecycleEvents.add(name);
1022
+ }
1023
+ /**
1024
+ * @internal
1025
+ */
1026
+ _onLoadingStopped() {
1027
+ this._lifecycleEvents.add('DOMContentLoaded');
1028
+ this._lifecycleEvents.add('load');
1029
+ }
1030
+ /**
1031
+ * @internal
1032
+ */
1033
+ _detach() {
1034
+ this._detached = true;
1035
+ this._mainWorld._detach();
1036
+ this._secondaryWorld._detach();
1037
+ if (this._parentFrame)
1038
+ this._parentFrame._childFrames.delete(this);
1039
+ this._parentFrame = null;
1040
+ }
1041
+ }
1042
+ exports.Frame = Frame;
1043
+ function assertNoLegacyNavigationOptions(options) {
1044
+ (0, assert_js_1.assert)(options['networkIdleTimeout'] === undefined, 'ERROR: networkIdleTimeout option is no longer supported.');
1045
+ (0, assert_js_1.assert)(options['networkIdleInflight'] === undefined, 'ERROR: networkIdleInflight option is no longer supported.');
1046
+ (0, assert_js_1.assert)(options.waitUntil !== 'networkidle', 'ERROR: "networkidle" option is no longer supported. Use "networkidle2" instead');
1047
+ }
1048
1048
  //# sourceMappingURL=FrameManager.js.map