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.
- checksums.yaml +4 -4
- data/lib/isomorfeus/puppetmaster/console_message.rb +18 -18
- data/lib/isomorfeus/puppetmaster/cookie.rb +46 -46
- data/lib/isomorfeus/puppetmaster/driver/puppeteer.rb +413 -415
- data/lib/isomorfeus/puppetmaster/driver/puppeteer_document.rb +953 -953
- data/lib/isomorfeus/puppetmaster/driver/puppeteer_node.rb +851 -851
- data/lib/isomorfeus/puppetmaster/errors.rb +90 -90
- data/lib/isomorfeus/puppetmaster/iframe.rb +16 -16
- data/lib/isomorfeus/puppetmaster/node/content_editable.rb +17 -17
- data/lib/isomorfeus/puppetmaster/node/input.rb +20 -20
- data/lib/isomorfeus/puppetmaster/node/select.rb +35 -35
- data/lib/isomorfeus/puppetmaster/node.rb +279 -279
- data/lib/isomorfeus/puppetmaster/request.rb +16 -16
- data/lib/isomorfeus/puppetmaster/response.rb +25 -25
- data/lib/isomorfeus/puppetmaster/self_forwardable.rb +38 -38
- data/lib/isomorfeus/puppetmaster/version.rb +3 -3
- data/lib/isomorfeus/puppetmaster.rb +85 -85
- data/lib/isomorfeus-puppetmaster.rb +1 -0
- data/node_modules/.bin/extract-zip +12 -12
- data/node_modules/.bin/extract-zip.ps1 +28 -28
- data/node_modules/.bin/rimraf +12 -12
- data/node_modules/.bin/rimraf.ps1 +28 -28
- data/node_modules/.package-lock.json +530 -585
- data/node_modules/@types/node/LICENSE +21 -21
- data/node_modules/@types/node/assert/strict.d.ts +8 -8
- data/node_modules/@types/node/assert.d.ts +912 -912
- data/node_modules/@types/node/async_hooks.d.ts +497 -497
- data/node_modules/@types/node/buffer.d.ts +2142 -2142
- data/node_modules/@types/node/child_process.d.ts +1355 -1355
- data/node_modules/@types/node/cluster.d.ts +414 -414
- data/node_modules/@types/node/console.d.ts +407 -407
- data/node_modules/@types/node/constants.d.ts +18 -18
- data/node_modules/@types/node/crypto.d.ts +3224 -3224
- data/node_modules/@types/node/dgram.d.ts +545 -545
- data/node_modules/@types/node/diagnostics_channel.d.ts +128 -128
- data/node_modules/@types/node/dns/promises.d.ts +357 -357
- data/node_modules/@types/node/dns.d.ts +643 -643
- data/node_modules/@types/node/domain.d.ts +169 -169
- data/node_modules/@types/node/events.d.ts +623 -623
- data/node_modules/@types/node/fs/promises.d.ts +997 -997
- data/node_modules/@types/node/fs.d.ts +3723 -3723
- data/node_modules/@types/node/globals.d.ts +285 -285
- data/node_modules/@types/node/globals.global.d.ts +1 -1
- data/node_modules/@types/node/http.d.ts +1358 -1358
- data/node_modules/@types/node/http2.d.ts +2100 -2100
- data/node_modules/@types/node/https.d.ts +391 -391
- data/node_modules/@types/node/index.d.ts +131 -131
- data/node_modules/@types/node/inspector.d.ts +2738 -2738
- data/node_modules/@types/node/module.d.ts +114 -114
- data/node_modules/@types/node/net.d.ts +783 -783
- data/node_modules/@types/node/os.d.ts +455 -455
- data/node_modules/@types/node/package.json +229 -229
- data/node_modules/@types/node/path.d.ts +172 -172
- data/node_modules/@types/node/perf_hooks.d.ts +555 -555
- data/node_modules/@types/node/process.d.ts +1477 -1477
- data/node_modules/@types/node/punycode.d.ts +117 -117
- data/node_modules/@types/node/querystring.d.ts +131 -131
- data/node_modules/@types/node/readline.d.ts +542 -542
- data/node_modules/@types/node/repl.d.ts +424 -424
- data/node_modules/@types/node/stream/consumers.d.ts +24 -24
- data/node_modules/@types/node/stream/promises.d.ts +42 -42
- data/node_modules/@types/node/stream/web.d.ts +6 -6
- data/node_modules/@types/node/stream.d.ts +1181 -1181
- data/node_modules/@types/node/string_decoder.d.ts +67 -67
- data/node_modules/@types/node/timers/promises.d.ts +68 -68
- data/node_modules/@types/node/timers.d.ts +94 -94
- data/node_modules/@types/node/tls.d.ts +1019 -1019
- data/node_modules/@types/node/trace_events.d.ts +161 -161
- data/node_modules/@types/node/tty.d.ts +206 -206
- data/node_modules/@types/node/url.d.ts +798 -798
- data/node_modules/@types/node/util.d.ts +1556 -1556
- data/node_modules/@types/node/v8.d.ts +378 -378
- data/node_modules/@types/node/vm.d.ts +504 -504
- data/node_modules/@types/node/wasi.d.ts +153 -153
- data/node_modules/@types/node/worker_threads.d.ts +649 -649
- data/node_modules/@types/node/zlib.d.ts +517 -517
- data/node_modules/@types/yauzl/LICENSE +21 -21
- data/node_modules/@types/yauzl/index.d.ts +98 -98
- data/node_modules/@types/yauzl/package.json +26 -26
- data/node_modules/agent-base/README.md +145 -145
- data/node_modules/agent-base/dist/src/index.d.ts +78 -78
- data/node_modules/agent-base/dist/src/index.js +202 -202
- data/node_modules/agent-base/dist/src/promisify.d.ts +4 -4
- data/node_modules/agent-base/dist/src/promisify.js +17 -17
- data/node_modules/agent-base/package.json +64 -64
- data/node_modules/agent-base/src/index.ts +345 -345
- data/node_modules/agent-base/src/promisify.ts +33 -33
- data/node_modules/balanced-match/.github/FUNDING.yml +2 -2
- data/node_modules/balanced-match/LICENSE.md +21 -21
- data/node_modules/balanced-match/README.md +97 -97
- data/node_modules/balanced-match/index.js +62 -62
- data/node_modules/balanced-match/package.json +48 -48
- data/node_modules/base64-js/LICENSE +21 -21
- data/node_modules/base64-js/README.md +34 -34
- data/node_modules/base64-js/index.d.ts +3 -3
- data/node_modules/base64-js/index.js +150 -150
- data/node_modules/base64-js/package.json +47 -47
- data/node_modules/bl/.travis.yml +17 -17
- data/node_modules/bl/BufferList.js +396 -396
- data/node_modules/bl/LICENSE.md +13 -13
- data/node_modules/bl/README.md +247 -247
- data/node_modules/bl/bl.js +84 -84
- data/node_modules/bl/package.json +37 -37
- data/node_modules/bl/test/convert.js +21 -21
- data/node_modules/bl/test/indexOf.js +492 -492
- data/node_modules/bl/test/isBufferList.js +32 -32
- data/node_modules/bl/test/test.js +869 -869
- data/node_modules/brace-expansion/LICENSE +21 -21
- data/node_modules/brace-expansion/README.md +129 -129
- data/node_modules/brace-expansion/index.js +201 -201
- data/node_modules/brace-expansion/package.json +47 -47
- data/node_modules/buffer/AUTHORS.md +70 -70
- data/node_modules/buffer/LICENSE +21 -21
- data/node_modules/buffer/README.md +410 -410
- data/node_modules/buffer/index.d.ts +186 -186
- data/node_modules/buffer/index.js +1817 -1817
- data/node_modules/buffer/package.json +96 -96
- data/node_modules/buffer-crc32/LICENSE +19 -19
- data/node_modules/buffer-crc32/README.md +47 -47
- data/node_modules/buffer-crc32/index.js +111 -111
- data/node_modules/buffer-crc32/package.json +39 -39
- data/node_modules/chownr/LICENSE +15 -15
- data/node_modules/chownr/README.md +3 -3
- data/node_modules/chownr/chownr.js +167 -167
- data/node_modules/chownr/package.json +29 -29
- data/node_modules/concat-map/.travis.yml +4 -4
- data/node_modules/concat-map/LICENSE +18 -18
- data/node_modules/concat-map/README.markdown +62 -62
- data/node_modules/concat-map/example/map.js +6 -6
- data/node_modules/concat-map/index.js +13 -13
- data/node_modules/concat-map/package.json +43 -43
- data/node_modules/concat-map/test/map.js +39 -39
- data/node_modules/debug/LICENSE +19 -19
- data/node_modules/debug/README.md +455 -455
- data/node_modules/debug/package.json +59 -59
- data/node_modules/debug/src/browser.js +269 -269
- data/node_modules/debug/src/common.js +274 -274
- data/node_modules/debug/src/index.js +10 -10
- data/node_modules/debug/src/node.js +263 -263
- data/node_modules/devtools-protocol/LICENSE +27 -27
- data/node_modules/devtools-protocol/README.md +12 -12
- data/node_modules/devtools-protocol/json/browser_protocol.json +20985 -20640
- data/node_modules/devtools-protocol/json/js_protocol.json +3531 -3580
- data/node_modules/devtools-protocol/package.json +17 -18
- data/node_modules/devtools-protocol/pdl/browser_protocol.pdl +9849 -9637
- data/node_modules/devtools-protocol/pdl/js_protocol.pdl +1653 -1678
- data/node_modules/devtools-protocol/types/protocol-mapping.d.ts +4333 -4321
- data/node_modules/devtools-protocol/types/protocol-proxy-api.d.ts +3695 -3683
- data/node_modules/devtools-protocol/types/protocol.d.ts +15714 -15538
- data/node_modules/end-of-stream/LICENSE +20 -20
- data/node_modules/end-of-stream/README.md +54 -54
- data/node_modules/end-of-stream/index.js +94 -94
- data/node_modules/end-of-stream/package.json +37 -37
- data/node_modules/extract-zip/LICENSE +23 -23
- data/node_modules/extract-zip/cli.js +19 -19
- data/node_modules/extract-zip/index.d.ts +21 -21
- data/node_modules/extract-zip/index.js +173 -173
- data/node_modules/extract-zip/package.json +80 -80
- data/node_modules/extract-zip/readme.md +57 -57
- data/node_modules/fd-slicer/.npmignore +2 -2
- data/node_modules/fd-slicer/.travis.yml +7 -7
- data/node_modules/fd-slicer/CHANGELOG.md +49 -49
- data/node_modules/fd-slicer/LICENSE +21 -21
- data/node_modules/fd-slicer/README.md +199 -199
- data/node_modules/fd-slicer/index.js +296 -296
- data/node_modules/fd-slicer/package.json +36 -36
- data/node_modules/fd-slicer/test/test.js +350 -350
- data/node_modules/find-up/index.d.ts +137 -137
- data/node_modules/find-up/index.js +89 -89
- data/node_modules/find-up/license +9 -9
- data/node_modules/find-up/package.json +53 -53
- data/node_modules/find-up/readme.md +156 -156
- data/node_modules/fs-constants/LICENSE +21 -21
- data/node_modules/fs-constants/README.md +26 -26
- data/node_modules/fs-constants/browser.js +1 -1
- data/node_modules/fs-constants/index.js +1 -1
- data/node_modules/fs-constants/package.json +19 -19
- data/node_modules/fs.realpath/LICENSE +43 -43
- data/node_modules/fs.realpath/README.md +33 -33
- data/node_modules/fs.realpath/index.js +66 -66
- data/node_modules/fs.realpath/old.js +303 -303
- data/node_modules/fs.realpath/package.json +26 -26
- data/node_modules/get-stream/buffer-stream.js +52 -52
- data/node_modules/get-stream/index.d.ts +108 -108
- data/node_modules/get-stream/index.js +60 -60
- data/node_modules/get-stream/license +9 -9
- data/node_modules/get-stream/package.json +50 -50
- data/node_modules/get-stream/readme.md +124 -124
- data/node_modules/glob/LICENSE +21 -21
- data/node_modules/glob/README.md +375 -375
- data/node_modules/glob/changelog.md +67 -67
- data/node_modules/glob/common.js +234 -234
- data/node_modules/glob/glob.js +788 -788
- data/node_modules/glob/package.json +51 -51
- data/node_modules/glob/sync.js +484 -484
- data/node_modules/https-proxy-agent/README.md +137 -137
- data/node_modules/https-proxy-agent/dist/agent.d.ts +30 -30
- data/node_modules/https-proxy-agent/dist/agent.js +179 -179
- data/node_modules/https-proxy-agent/dist/index.d.ts +23 -23
- data/node_modules/https-proxy-agent/dist/index.js +13 -13
- data/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -7
- data/node_modules/https-proxy-agent/dist/parse-proxy-response.js +65 -65
- data/node_modules/https-proxy-agent/package.json +56 -56
- data/node_modules/ieee754/LICENSE +11 -11
- data/node_modules/ieee754/README.md +51 -51
- data/node_modules/ieee754/index.d.ts +9 -9
- data/node_modules/ieee754/index.js +85 -85
- data/node_modules/ieee754/package.json +52 -52
- data/node_modules/inflight/LICENSE +15 -15
- data/node_modules/inflight/README.md +37 -37
- data/node_modules/inflight/inflight.js +54 -54
- data/node_modules/inflight/package.json +29 -29
- data/node_modules/inherits/LICENSE +16 -16
- data/node_modules/inherits/README.md +42 -42
- data/node_modules/inherits/inherits.js +9 -9
- data/node_modules/inherits/inherits_browser.js +27 -27
- data/node_modules/inherits/package.json +29 -29
- data/node_modules/locate-path/index.d.ts +83 -83
- data/node_modules/locate-path/index.js +65 -65
- data/node_modules/locate-path/license +9 -9
- data/node_modules/locate-path/package.json +45 -45
- data/node_modules/locate-path/readme.md +122 -122
- data/node_modules/minimatch/LICENSE +15 -15
- data/node_modules/minimatch/README.md +209 -209
- data/node_modules/minimatch/minimatch.js +923 -923
- data/node_modules/minimatch/package.json +30 -30
- data/node_modules/mkdirp-classic/LICENSE +21 -21
- data/node_modules/mkdirp-classic/README.md +18 -18
- data/node_modules/mkdirp-classic/index.js +98 -98
- data/node_modules/mkdirp-classic/package.json +18 -18
- data/node_modules/ms/index.js +162 -162
- data/node_modules/ms/license.md +21 -21
- data/node_modules/ms/package.json +37 -37
- data/node_modules/ms/readme.md +60 -60
- data/node_modules/node-fetch/LICENSE.md +22 -22
- data/node_modules/node-fetch/README.md +590 -590
- data/node_modules/node-fetch/browser.js +24 -24
- data/node_modules/node-fetch/lib/index.es.js +1662 -1662
- data/node_modules/node-fetch/lib/index.js +1671 -1671
- data/node_modules/node-fetch/lib/index.mjs +1660 -1660
- data/node_modules/node-fetch/package.json +68 -68
- data/node_modules/once/LICENSE +15 -15
- data/node_modules/once/README.md +79 -79
- data/node_modules/once/once.js +42 -42
- data/node_modules/once/package.json +33 -33
- data/node_modules/p-limit/index.d.ts +38 -38
- data/node_modules/p-limit/index.js +57 -57
- data/node_modules/p-limit/license +9 -9
- data/node_modules/p-limit/package.json +52 -52
- data/node_modules/p-limit/readme.md +101 -101
- data/node_modules/p-locate/index.d.ts +64 -64
- data/node_modules/p-locate/index.js +52 -52
- data/node_modules/p-locate/license +9 -9
- data/node_modules/p-locate/package.json +53 -53
- data/node_modules/p-locate/readme.md +90 -90
- data/node_modules/p-try/index.d.ts +39 -39
- data/node_modules/p-try/index.js +9 -9
- data/node_modules/p-try/license +9 -9
- data/node_modules/p-try/package.json +42 -42
- data/node_modules/p-try/readme.md +58 -58
- data/node_modules/path-exists/index.d.ts +28 -28
- data/node_modules/path-exists/index.js +23 -23
- data/node_modules/path-exists/license +9 -9
- data/node_modules/path-exists/package.json +39 -39
- data/node_modules/path-exists/readme.md +52 -52
- data/node_modules/path-is-absolute/index.js +20 -20
- data/node_modules/path-is-absolute/license +21 -21
- data/node_modules/path-is-absolute/package.json +43 -43
- data/node_modules/path-is-absolute/readme.md +59 -59
- data/node_modules/pend/LICENSE +23 -23
- data/node_modules/pend/README.md +41 -41
- data/node_modules/pend/index.js +55 -55
- data/node_modules/pend/package.json +18 -18
- data/node_modules/pend/test.js +137 -137
- data/node_modules/pkg-dir/index.d.ts +44 -44
- data/node_modules/pkg-dir/index.js +17 -17
- data/node_modules/pkg-dir/license +9 -9
- data/node_modules/pkg-dir/package.json +56 -56
- data/node_modules/pkg-dir/readme.md +66 -66
- data/node_modules/progress/CHANGELOG.md +115 -115
- data/node_modules/progress/LICENSE +22 -22
- data/node_modules/progress/Makefile +8 -8
- data/node_modules/progress/Readme.md +146 -146
- data/node_modules/progress/index.js +1 -1
- data/node_modules/progress/lib/node-progress.js +236 -236
- data/node_modules/progress/package.json +26 -26
- data/node_modules/proxy-from-env/.eslintrc +29 -29
- data/node_modules/proxy-from-env/.travis.yml +10 -10
- data/node_modules/proxy-from-env/LICENSE +20 -20
- data/node_modules/proxy-from-env/README.md +131 -131
- data/node_modules/proxy-from-env/index.js +108 -108
- data/node_modules/proxy-from-env/package.json +34 -34
- data/node_modules/proxy-from-env/test.js +483 -483
- data/node_modules/pump/.travis.yml +5 -5
- data/node_modules/pump/LICENSE +20 -20
- data/node_modules/pump/README.md +65 -65
- data/node_modules/pump/index.js +82 -82
- data/node_modules/pump/package.json +24 -24
- data/node_modules/pump/test-browser.js +66 -66
- data/node_modules/pump/test-node.js +53 -53
- data/node_modules/puppeteer-core/CHANGELOG.md +319 -290
- data/node_modules/puppeteer-core/LICENSE +202 -202
- data/node_modules/puppeteer-core/README.md +481 -481
- data/node_modules/puppeteer-core/cjs-entry-core.js +29 -29
- data/node_modules/puppeteer-core/cjs-entry.js +29 -29
- data/node_modules/puppeteer-core/install.js +89 -89
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.d.ts +110 -110
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.js +80 -80
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.d.ts +175 -175
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.js +360 -360
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.d.ts +20 -20
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js +84 -84
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.d.ts +455 -455
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.js +540 -540
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.d.ts +53 -53
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.js +97 -97
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js +34 -34
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.d.ts +135 -135
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js +298 -298
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.d.ts +24 -24
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.js +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +72 -72
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.js +64 -64
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.d.ts +204 -204
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.js +335 -335
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.d.ts +175 -175
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.js +662 -662
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.d.ts +52 -52
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.js +81 -81
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.d.ts +40 -40
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.js +1070 -1070
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.d.ts +74 -74
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.js +97 -97
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.d.ts +24 -24
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.js +37 -37
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.d.ts +50 -50
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.js +56 -56
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.d.ts +60 -60
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.js +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.d.ts +92 -92
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js +116 -116
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.d.ts +81 -81
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.js +86 -86
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.d.ts +193 -193
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js +321 -321
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.d.ts +58 -58
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.js +71 -71
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.d.ts +744 -744
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js +1047 -1047
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts +350 -345
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js +549 -549
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts +134 -125
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js +184 -164
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.d.ts +358 -358
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.js +543 -543
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.d.ts +490 -490
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.js +827 -827
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts +65 -65
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js +149 -148
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.d.ts +26 -26
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.js +33 -33
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts +126 -97
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js +467 -342
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.d.ts +161 -161
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.js +34 -34
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.d.ts +2055 -2055
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js +2533 -2533
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.d.ts +20 -20
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.js +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.d.ts +159 -159
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.js +161 -161
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.d.ts +51 -51
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.js +2 -2
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.d.ts +64 -64
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.js +165 -165
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.d.ts +60 -60
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.js +76 -76
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.d.ts +100 -100
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.js +145 -145
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.d.ts +20 -20
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.js +29 -29
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.d.ts +27 -27
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.js +47 -47
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.d.ts +46 -46
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.js +109 -109
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts +39 -39
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.js +406 -406
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.d.ts +98 -98
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.js +112 -112
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.d.ts +22 -22
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.js +33 -33
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.js +43 -43
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.d.ts +84 -84
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.js +327 -327
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.js +19 -19
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.js +2 -2
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.js +44 -44
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.js +26 -26
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.d.ts +133 -133
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js +500 -500
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts +40 -39
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js +256 -230
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.d.ts +134 -134
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.js +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js +655 -588
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js.map +1 -1
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js +47 -47
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.d.ts +29 -29
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.js +64 -64
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.d.ts +153 -153
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.js +188 -188
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.js +173 -173
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.js +24 -24
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.js +23 -23
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.d.ts +21 -21
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.js +22 -22
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.js +23 -23
- data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.d.ts +27 -27
- data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.js +56 -56
- data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.d.ts +110 -110
- data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.js +80 -80
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.d.ts +175 -175
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.js +356 -356
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.d.ts +20 -20
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js +81 -81
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.d.ts +455 -455
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.js +535 -535
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.d.ts +53 -53
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.js +74 -74
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +30 -30
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.d.ts +135 -135
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.js +293 -293
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.d.ts +24 -24
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.js +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.d.ts +72 -72
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js +60 -60
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.d.ts +204 -204
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.js +329 -329
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.d.ts +175 -175
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.js +657 -657
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.d.ts +52 -52
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.js +77 -77
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.d.ts +40 -40
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.js +1067 -1067
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.d.ts +74 -74
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.js +93 -93
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.d.ts +24 -24
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.js +33 -33
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.d.ts +50 -50
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.js +50 -50
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.d.ts +60 -60
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.js +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.d.ts +92 -92
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js +109 -109
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.d.ts +81 -81
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.js +83 -83
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.d.ts +193 -193
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.js +317 -317
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.d.ts +58 -58
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.js +67 -67
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.d.ts +744 -744
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js +1042 -1042
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts +350 -345
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js +545 -545
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts +134 -125
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js +180 -160
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.d.ts +358 -358
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.js +537 -537
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.d.ts +490 -490
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.js +802 -802
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts +65 -65
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js +145 -144
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.d.ts +26 -26
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.js +30 -30
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts +126 -97
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js +463 -338
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.d.ts +161 -161
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js +31 -31
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.d.ts +2055 -2055
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.js +2529 -2529
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.d.ts +20 -20
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.js +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.d.ts +159 -159
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.js +157 -157
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.d.ts +51 -51
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.js +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.d.ts +64 -64
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js +157 -157
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.d.ts +60 -60
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js +72 -72
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.d.ts +100 -100
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.js +141 -141
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.d.ts +20 -20
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js +25 -25
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.d.ts +27 -27
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.js +43 -43
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.d.ts +46 -46
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.js +105 -105
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.d.ts +39 -39
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.js +403 -403
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.d.ts +98 -98
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.js +108 -108
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.d.ts +22 -22
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.js +28 -28
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.js +20 -20
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.d.ts +84 -84
- data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.js +305 -305
- data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.js +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/global.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/global.js +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.js +37 -37
- data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.js +22 -22
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.d.ts +133 -133
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.js +474 -474
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts +40 -39
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js +230 -204
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.d.ts +134 -134
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.js +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts +16 -16
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js +633 -566
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js.map +1 -1
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.js +40 -40
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.d.ts +29 -29
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.js +60 -60
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.d.ts +153 -153
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.js +181 -181
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.js +165 -165
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.js +22 -22
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/esm/puppeteer/node.js +21 -21
- data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.d.ts +21 -21
- data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.js +19 -19
- data/node_modules/puppeteer-core/lib/esm/puppeteer/web.d.ts +17 -17
- data/node_modules/puppeteer-core/lib/esm/puppeteer/web.js +21 -21
- data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.d.ts +27 -27
- data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.js +53 -53
- data/node_modules/puppeteer-core/lib/types.d.ts +67 -25
- data/node_modules/puppeteer-core/package.json +115 -115
- data/node_modules/puppeteer-core/typescript-if-required.js +61 -61
- data/node_modules/readable-stream/CONTRIBUTING.md +38 -38
- data/node_modules/readable-stream/GOVERNANCE.md +136 -136
- data/node_modules/readable-stream/LICENSE +47 -47
- data/node_modules/readable-stream/README.md +106 -106
- data/node_modules/readable-stream/errors-browser.js +127 -127
- data/node_modules/readable-stream/errors.js +116 -116
- data/node_modules/readable-stream/experimentalWarning.js +17 -17
- data/node_modules/readable-stream/lib/_stream_duplex.js +138 -138
- data/node_modules/readable-stream/lib/_stream_passthrough.js +38 -38
- data/node_modules/readable-stream/lib/_stream_readable.js +1123 -1123
- data/node_modules/readable-stream/lib/_stream_transform.js +200 -200
- data/node_modules/readable-stream/lib/_stream_writable.js +696 -696
- data/node_modules/readable-stream/lib/internal/streams/async_iterator.js +206 -206
- data/node_modules/readable-stream/lib/internal/streams/buffer_list.js +209 -209
- data/node_modules/readable-stream/lib/internal/streams/destroy.js +104 -104
- data/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +103 -103
- data/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -3
- data/node_modules/readable-stream/lib/internal/streams/from.js +63 -63
- data/node_modules/readable-stream/lib/internal/streams/pipeline.js +96 -96
- data/node_modules/readable-stream/lib/internal/streams/state.js +26 -26
- data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -1
- data/node_modules/readable-stream/lib/internal/streams/stream.js +1 -1
- data/node_modules/readable-stream/package.json +68 -68
- data/node_modules/readable-stream/readable-browser.js +9 -9
- data/node_modules/readable-stream/readable.js +16 -16
- data/node_modules/rimraf/CHANGELOG.md +65 -65
- data/node_modules/rimraf/LICENSE +15 -15
- data/node_modules/rimraf/README.md +101 -101
- data/node_modules/rimraf/bin.js +68 -68
- data/node_modules/rimraf/package.json +32 -32
- data/node_modules/rimraf/rimraf.js +360 -360
- data/node_modules/safe-buffer/LICENSE +21 -21
- data/node_modules/safe-buffer/README.md +584 -584
- data/node_modules/safe-buffer/index.d.ts +186 -186
- data/node_modules/safe-buffer/index.js +65 -65
- data/node_modules/safe-buffer/package.json +51 -51
- data/node_modules/string_decoder/LICENSE +48 -48
- data/node_modules/string_decoder/README.md +47 -47
- data/node_modules/string_decoder/lib/string_decoder.js +295 -295
- data/node_modules/string_decoder/package.json +34 -34
- data/node_modules/tar-fs/.travis.yml +6 -6
- data/node_modules/tar-fs/LICENSE +20 -20
- data/node_modules/tar-fs/README.md +165 -165
- data/node_modules/tar-fs/index.js +351 -351
- data/node_modules/tar-fs/package.json +41 -41
- data/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -1
- data/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -1
- data/node_modules/tar-fs/test/index.js +346 -346
- data/node_modules/tar-stream/LICENSE +20 -20
- data/node_modules/tar-stream/README.md +168 -168
- data/node_modules/tar-stream/extract.js +257 -257
- data/node_modules/tar-stream/headers.js +295 -295
- data/node_modules/tar-stream/index.js +2 -2
- data/node_modules/tar-stream/pack.js +255 -255
- data/node_modules/tar-stream/package.json +58 -58
- data/node_modules/tar-stream/sandbox.js +11 -11
- data/node_modules/through/.travis.yml +5 -5
- data/node_modules/through/LICENSE.APACHE2 +15 -15
- data/node_modules/through/LICENSE.MIT +24 -24
- data/node_modules/through/index.js +108 -108
- data/node_modules/through/package.json +36 -36
- data/node_modules/through/readme.markdown +64 -64
- data/node_modules/through/test/async.js +28 -28
- data/node_modules/through/test/auto-destroy.js +30 -30
- data/node_modules/through/test/buffering.js +71 -71
- data/node_modules/through/test/end.js +45 -45
- data/node_modules/through/test/index.js +133 -133
- data/node_modules/tr46/.npmignore +4 -4
- data/node_modules/tr46/index.js +193 -193
- data/node_modules/tr46/package.json +31 -31
- data/node_modules/unbzip2-stream/LICENSE +24 -24
- data/node_modules/unbzip2-stream/README.md +59 -59
- data/node_modules/unbzip2-stream/dist/unbzip2-stream.min.js +1 -1
- data/node_modules/unbzip2-stream/index.js +93 -93
- data/node_modules/unbzip2-stream/lib/bit_iterator.js +39 -39
- data/node_modules/unbzip2-stream/lib/bzip2.js +365 -365
- data/node_modules/unbzip2-stream/package.json +51 -51
- data/node_modules/util-deprecate/History.md +16 -16
- data/node_modules/util-deprecate/LICENSE +24 -24
- data/node_modules/util-deprecate/README.md +53 -53
- data/node_modules/util-deprecate/browser.js +67 -67
- data/node_modules/util-deprecate/node.js +6 -6
- data/node_modules/util-deprecate/package.json +27 -27
- data/node_modules/webidl-conversions/LICENSE.md +12 -12
- data/node_modules/webidl-conversions/README.md +53 -53
- data/node_modules/webidl-conversions/lib/index.js +189 -189
- data/node_modules/webidl-conversions/package.json +23 -23
- data/node_modules/whatwg-url/LICENSE.txt +21 -21
- data/node_modules/whatwg-url/README.md +67 -67
- data/node_modules/whatwg-url/lib/URL-impl.js +200 -200
- data/node_modules/whatwg-url/lib/URL.js +196 -196
- data/node_modules/whatwg-url/lib/public-api.js +11 -11
- data/node_modules/whatwg-url/lib/utils.js +20 -20
- data/node_modules/whatwg-url/package.json +32 -32
- data/node_modules/wrappy/LICENSE +15 -15
- data/node_modules/wrappy/README.md +36 -36
- data/node_modules/wrappy/package.json +29 -29
- data/node_modules/wrappy/wrappy.js +33 -33
- data/node_modules/ws/LICENSE +19 -19
- data/node_modules/ws/README.md +493 -493
- data/node_modules/ws/browser.js +8 -8
- data/node_modules/ws/index.js +13 -13
- data/node_modules/ws/lib/buffer-util.js +126 -126
- data/node_modules/ws/lib/constants.js +12 -12
- data/node_modules/ws/lib/event-target.js +266 -266
- data/node_modules/ws/lib/extension.js +203 -203
- data/node_modules/ws/lib/limiter.js +55 -55
- data/node_modules/ws/lib/permessage-deflate.js +511 -511
- data/node_modules/ws/lib/receiver.js +612 -612
- data/node_modules/ws/lib/sender.js +422 -422
- data/node_modules/ws/lib/stream.js +180 -180
- data/node_modules/ws/lib/subprotocol.js +62 -62
- data/node_modules/ws/lib/validation.js +124 -124
- data/node_modules/ws/lib/websocket-server.js +485 -485
- data/node_modules/ws/lib/websocket.js +1149 -1149
- data/node_modules/ws/package.json +61 -61
- data/node_modules/ws/wrapper.mjs +8 -8
- data/node_modules/yauzl/LICENSE +21 -21
- data/node_modules/yauzl/README.md +658 -658
- data/node_modules/yauzl/index.js +796 -796
- data/node_modules/yauzl/package.json +40 -40
- data/package.json +1 -1
- metadata +23 -25
- data/node_modules/devtools-protocol/changelog.md +0 -10491
- data/node_modules/devtools-protocol/externs/protocol_externs.js +0 -9734
|
@@ -1,501 +1,501 @@
|
|
|
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
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.BrowserFetcher = void 0;
|
|
41
|
-
const os = __importStar(require("os"));
|
|
42
|
-
const fs = __importStar(require("fs"));
|
|
43
|
-
const path = __importStar(require("path"));
|
|
44
|
-
const util = __importStar(require("util"));
|
|
45
|
-
const childProcess = __importStar(require("child_process"));
|
|
46
|
-
const https = __importStar(require("https"));
|
|
47
|
-
const http = __importStar(require("http"));
|
|
48
|
-
const extract_zip_1 = __importDefault(require("extract-zip"));
|
|
49
|
-
const Debug_js_1 = require("../common/Debug.js");
|
|
50
|
-
const util_1 = require("util");
|
|
51
|
-
const rimraf_1 = __importDefault(require("rimraf"));
|
|
52
|
-
const URL = __importStar(require("url"));
|
|
53
|
-
const https_proxy_agent_1 = __importDefault(require("https-proxy-agent"));
|
|
54
|
-
const proxy_from_env_1 = require("proxy-from-env");
|
|
55
|
-
const assert_js_1 = require("../common/assert.js");
|
|
56
|
-
const debugFetcher = (0, Debug_js_1.debug)('puppeteer:fetcher');
|
|
57
|
-
const downloadURLs = {
|
|
58
|
-
chrome: {
|
|
59
|
-
linux: '%s/chromium-browser-snapshots/Linux_x64/%d/%s.zip',
|
|
60
|
-
mac: '%s/chromium-browser-snapshots/Mac/%d/%s.zip',
|
|
61
|
-
win32: '%s/chromium-browser-snapshots/Win/%d/%s.zip',
|
|
62
|
-
win64: '%s/chromium-browser-snapshots/Win_x64/%d/%s.zip',
|
|
63
|
-
},
|
|
64
|
-
firefox: {
|
|
65
|
-
linux: '%s/firefox-%s.en-US.%s-x86_64.tar.bz2',
|
|
66
|
-
mac: '%s/firefox-%s.en-US.%s.dmg',
|
|
67
|
-
win32: '%s/firefox-%s.en-US.%s.zip',
|
|
68
|
-
win64: '%s/firefox-%s.en-US.%s.zip',
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
const browserConfig = {
|
|
72
|
-
chrome: {
|
|
73
|
-
host: 'https://storage.googleapis.com',
|
|
74
|
-
destination: '.local-chromium',
|
|
75
|
-
},
|
|
76
|
-
firefox: {
|
|
77
|
-
host: 'https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central',
|
|
78
|
-
destination: '.local-firefox',
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
function archiveName(product, platform, revision) {
|
|
82
|
-
if (product === 'chrome') {
|
|
83
|
-
if (platform === 'linux')
|
|
84
|
-
return 'chrome-linux';
|
|
85
|
-
if (platform === 'mac')
|
|
86
|
-
return 'chrome-mac';
|
|
87
|
-
if (platform === 'win32' || platform === 'win64') {
|
|
88
|
-
// Windows archive name changed at r591479.
|
|
89
|
-
return parseInt(revision, 10) > 591479 ? 'chrome-win' : 'chrome-win32';
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
else if (product === 'firefox') {
|
|
93
|
-
return platform;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* @internal
|
|
98
|
-
*/
|
|
99
|
-
function downloadURL(product, platform, host, revision) {
|
|
100
|
-
const url = util.format(downloadURLs[product][platform], host, revision, archiveName(product, platform, revision));
|
|
101
|
-
return url;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* @internal
|
|
105
|
-
*/
|
|
106
|
-
function handleArm64() {
|
|
107
|
-
fs.stat('/usr/bin/chromium-browser', function (err, stats) {
|
|
108
|
-
if (stats === undefined) {
|
|
109
|
-
fs.stat('/usr/bin/chromium', function (err, stats) {
|
|
110
|
-
if (stats === undefined) {
|
|
111
|
-
console.error('The chromium binary is not available for arm64.' +
|
|
112
|
-
'\nIf you are on Ubuntu, you can install with: ' +
|
|
113
|
-
'\n\n sudo apt install chromium\n' +
|
|
114
|
-
'\n\n sudo apt install chromium-browser\n');
|
|
115
|
-
throw new Error();
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
const readdirAsync = (0, util_1.promisify)(fs.readdir.bind(fs));
|
|
122
|
-
const mkdirAsync = (0, util_1.promisify)(fs.mkdir.bind(fs));
|
|
123
|
-
const unlinkAsync = (0, util_1.promisify)(fs.unlink.bind(fs));
|
|
124
|
-
const chmodAsync = (0, util_1.promisify)(fs.chmod.bind(fs));
|
|
125
|
-
function existsAsync(filePath) {
|
|
126
|
-
return new Promise((resolve) => {
|
|
127
|
-
fs.access(filePath, (err) => resolve(!err));
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* BrowserFetcher can download and manage different versions of Chromium and Firefox.
|
|
132
|
-
*
|
|
133
|
-
* @remarks
|
|
134
|
-
* BrowserFetcher operates on revision strings that specify a precise version of Chromium, e.g. `"533271"`. Revision strings can be obtained from {@link http://omahaproxy.appspot.com/ | omahaproxy.appspot.com}.
|
|
135
|
-
* In the Firefox case, BrowserFetcher downloads Firefox Nightly and
|
|
136
|
-
* operates on version numbers such as `"75"`.
|
|
137
|
-
*
|
|
138
|
-
* @example
|
|
139
|
-
* An example of using BrowserFetcher to download a specific version of Chromium
|
|
140
|
-
* and running Puppeteer against it:
|
|
141
|
-
*
|
|
142
|
-
* ```js
|
|
143
|
-
* const browserFetcher = puppeteer.createBrowserFetcher();
|
|
144
|
-
* const revisionInfo = await browserFetcher.download('533271');
|
|
145
|
-
* const browser = await puppeteer.launch({executablePath: revisionInfo.executablePath})
|
|
146
|
-
* ```
|
|
147
|
-
*
|
|
148
|
-
* **NOTE** BrowserFetcher is not designed to work concurrently with other
|
|
149
|
-
* instances of BrowserFetcher that share the same downloads directory.
|
|
150
|
-
*
|
|
151
|
-
* @public
|
|
152
|
-
*/
|
|
153
|
-
class BrowserFetcher {
|
|
154
|
-
/**
|
|
155
|
-
* @internal
|
|
156
|
-
*/
|
|
157
|
-
constructor(projectRoot, options = {}) {
|
|
158
|
-
this._product = (options.product || 'chrome').toLowerCase();
|
|
159
|
-
(0, assert_js_1.assert)(this._product === 'chrome' || this._product === 'firefox', `Unknown product: "${options.product}"`);
|
|
160
|
-
this._downloadsFolder =
|
|
161
|
-
options.path ||
|
|
162
|
-
path.join(projectRoot, browserConfig[this._product].destination);
|
|
163
|
-
this._downloadHost = options.host || browserConfig[this._product].host;
|
|
164
|
-
this.setPlatform(options.platform);
|
|
165
|
-
(0, assert_js_1.assert)(downloadURLs[this._product][this._platform], 'Unsupported platform: ' + this._platform);
|
|
166
|
-
}
|
|
167
|
-
setPlatform(platformFromOptions) {
|
|
168
|
-
if (platformFromOptions) {
|
|
169
|
-
this._platform = platformFromOptions;
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
const platform = os.platform();
|
|
173
|
-
if (platform === 'darwin')
|
|
174
|
-
this._platform = 'mac';
|
|
175
|
-
else if (platform === 'linux')
|
|
176
|
-
this._platform = 'linux';
|
|
177
|
-
else if (platform === 'win32')
|
|
178
|
-
this._platform = os.arch() === 'x64' ? 'win64' : 'win32';
|
|
179
|
-
else
|
|
180
|
-
(0, assert_js_1.assert)(this._platform, 'Unsupported platform: ' + platform);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* @returns Returns the current `Platform`, which is one of `mac`, `linux`,
|
|
184
|
-
* `win32` or `win64`.
|
|
185
|
-
*/
|
|
186
|
-
platform() {
|
|
187
|
-
return this._platform;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* @returns Returns the current `Product`, which is one of `chrome` or
|
|
191
|
-
* `firefox`.
|
|
192
|
-
*/
|
|
193
|
-
product() {
|
|
194
|
-
return this._product;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* @returns The download host being used.
|
|
198
|
-
*/
|
|
199
|
-
host() {
|
|
200
|
-
return this._downloadHost;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Initiates a HEAD request to check if the revision is available.
|
|
204
|
-
* @remarks
|
|
205
|
-
* This method is affected by the current `product`.
|
|
206
|
-
* @param revision - The revision to check availability for.
|
|
207
|
-
* @returns A promise that resolves to `true` if the revision could be downloaded
|
|
208
|
-
* from the host.
|
|
209
|
-
*/
|
|
210
|
-
canDownload(revision) {
|
|
211
|
-
const url = downloadURL(this._product, this._platform, this._downloadHost, revision);
|
|
212
|
-
return new Promise((resolve) => {
|
|
213
|
-
const request = httpRequest(url, 'HEAD', (response) => {
|
|
214
|
-
resolve(response.statusCode === 200);
|
|
215
|
-
});
|
|
216
|
-
request.on('error', (error) => {
|
|
217
|
-
console.error(error);
|
|
218
|
-
resolve(false);
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Initiates a GET request to download the revision from the host.
|
|
224
|
-
* @remarks
|
|
225
|
-
* This method is affected by the current `product`.
|
|
226
|
-
* @param revision - The revision to download.
|
|
227
|
-
* @param progressCallback - A function that will be called with two arguments:
|
|
228
|
-
* How many bytes have been downloaded and the total number of bytes of the download.
|
|
229
|
-
* @returns A promise with revision information when the revision is downloaded
|
|
230
|
-
* and extracted.
|
|
231
|
-
*/
|
|
232
|
-
async download(revision, progressCallback = () => { }) {
|
|
233
|
-
const url = downloadURL(this._product, this._platform, this._downloadHost, revision);
|
|
234
|
-
const fileName = url.split('/').pop();
|
|
235
|
-
const archivePath = path.join(this._downloadsFolder, fileName);
|
|
236
|
-
const outputPath = this._getFolderPath(revision);
|
|
237
|
-
if (await existsAsync(outputPath))
|
|
238
|
-
return this.revisionInfo(revision);
|
|
239
|
-
if (!(await existsAsync(this._downloadsFolder)))
|
|
240
|
-
await mkdirAsync(this._downloadsFolder);
|
|
241
|
-
// Use Intel x86 builds on Apple M1 until native macOS arm64
|
|
242
|
-
// Chromium builds are available.
|
|
243
|
-
if (os.platform() !== 'darwin' && os.arch() === 'arm64') {
|
|
244
|
-
handleArm64();
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
try {
|
|
248
|
-
await downloadFile(url, archivePath, progressCallback);
|
|
249
|
-
await install(archivePath, outputPath);
|
|
250
|
-
}
|
|
251
|
-
finally {
|
|
252
|
-
if (await existsAsync(archivePath))
|
|
253
|
-
await unlinkAsync(archivePath);
|
|
254
|
-
}
|
|
255
|
-
const revisionInfo = this.revisionInfo(revision);
|
|
256
|
-
if (revisionInfo)
|
|
257
|
-
await chmodAsync(revisionInfo.executablePath, 0o755);
|
|
258
|
-
return revisionInfo;
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* @remarks
|
|
262
|
-
* This method is affected by the current `product`.
|
|
263
|
-
* @returns A promise with a list of all revision strings (for the current `product`)
|
|
264
|
-
* available locally on disk.
|
|
265
|
-
*/
|
|
266
|
-
async localRevisions() {
|
|
267
|
-
if (!(await existsAsync(this._downloadsFolder)))
|
|
268
|
-
return [];
|
|
269
|
-
const fileNames = await readdirAsync(this._downloadsFolder);
|
|
270
|
-
return fileNames
|
|
271
|
-
.map((fileName) => parseFolderPath(this._product, fileName))
|
|
272
|
-
.filter((entry) => entry && entry.platform === this._platform)
|
|
273
|
-
.map((entry) => entry.revision);
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* @remarks
|
|
277
|
-
* This method is affected by the current `product`.
|
|
278
|
-
* @param revision - A revision to remove for the current `product`.
|
|
279
|
-
* @returns A promise that resolves when the revision has been removes or
|
|
280
|
-
* throws if the revision has not been downloaded.
|
|
281
|
-
*/
|
|
282
|
-
async remove(revision) {
|
|
283
|
-
const folderPath = this._getFolderPath(revision);
|
|
284
|
-
(0, assert_js_1.assert)(await existsAsync(folderPath), `Failed to remove: revision ${revision} is not downloaded`);
|
|
285
|
-
await new Promise((fulfill) => (0, rimraf_1.default)(folderPath, fulfill));
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* @param revision - The revision to get info for.
|
|
289
|
-
* @returns The revision info for the given revision.
|
|
290
|
-
*/
|
|
291
|
-
revisionInfo(revision) {
|
|
292
|
-
const folderPath = this._getFolderPath(revision);
|
|
293
|
-
let executablePath = '';
|
|
294
|
-
if (this._product === 'chrome') {
|
|
295
|
-
if (this._platform === 'mac')
|
|
296
|
-
executablePath = path.join(folderPath, archiveName(this._product, this._platform, revision), 'Chromium.app', 'Contents', 'MacOS', 'Chromium');
|
|
297
|
-
else if (this._platform === 'linux')
|
|
298
|
-
executablePath = path.join(folderPath, archiveName(this._product, this._platform, revision), 'chrome');
|
|
299
|
-
else if (this._platform === 'win32' || this._platform === 'win64')
|
|
300
|
-
executablePath = path.join(folderPath, archiveName(this._product, this._platform, revision), 'chrome.exe');
|
|
301
|
-
else
|
|
302
|
-
throw new Error('Unsupported platform: ' + this._platform);
|
|
303
|
-
}
|
|
304
|
-
else if (this._product === 'firefox') {
|
|
305
|
-
if (this._platform === 'mac')
|
|
306
|
-
executablePath = path.join(folderPath, 'Firefox Nightly.app', 'Contents', 'MacOS', 'firefox');
|
|
307
|
-
else if (this._platform === 'linux')
|
|
308
|
-
executablePath = path.join(folderPath, 'firefox', 'firefox');
|
|
309
|
-
else if (this._platform === 'win32' || this._platform === 'win64')
|
|
310
|
-
executablePath = path.join(folderPath, 'firefox', 'firefox.exe');
|
|
311
|
-
else
|
|
312
|
-
throw new Error('Unsupported platform: ' + this._platform);
|
|
313
|
-
}
|
|
314
|
-
else
|
|
315
|
-
throw new Error('Unsupported product: ' + this._product);
|
|
316
|
-
const url = downloadURL(this._product, this._platform, this._downloadHost, revision);
|
|
317
|
-
const local = fs.existsSync(folderPath);
|
|
318
|
-
debugFetcher({
|
|
319
|
-
revision,
|
|
320
|
-
executablePath,
|
|
321
|
-
folderPath,
|
|
322
|
-
local,
|
|
323
|
-
url,
|
|
324
|
-
product: this._product,
|
|
325
|
-
});
|
|
326
|
-
return {
|
|
327
|
-
revision,
|
|
328
|
-
executablePath,
|
|
329
|
-
folderPath,
|
|
330
|
-
local,
|
|
331
|
-
url,
|
|
332
|
-
product: this._product,
|
|
333
|
-
};
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* @internal
|
|
337
|
-
*/
|
|
338
|
-
_getFolderPath(revision) {
|
|
339
|
-
return path.resolve(this._downloadsFolder, `${this._platform}-${revision}`);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
exports.BrowserFetcher = BrowserFetcher;
|
|
343
|
-
function parseFolderPath(product, folderPath) {
|
|
344
|
-
const name = path.basename(folderPath);
|
|
345
|
-
const splits = name.split('-');
|
|
346
|
-
if (splits.length !== 2)
|
|
347
|
-
return null;
|
|
348
|
-
const [platform, revision] = splits;
|
|
349
|
-
if (!downloadURLs[product][platform])
|
|
350
|
-
return null;
|
|
351
|
-
return { product, platform, revision };
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* @internal
|
|
355
|
-
*/
|
|
356
|
-
function downloadFile(url, destinationPath, progressCallback) {
|
|
357
|
-
debugFetcher(`Downloading binary from ${url}`);
|
|
358
|
-
let fulfill, reject;
|
|
359
|
-
let downloadedBytes = 0;
|
|
360
|
-
let totalBytes = 0;
|
|
361
|
-
const promise = new Promise((x, y) => {
|
|
362
|
-
fulfill = x;
|
|
363
|
-
reject = y;
|
|
364
|
-
});
|
|
365
|
-
const request = httpRequest(url, 'GET', (response) => {
|
|
366
|
-
if (response.statusCode !== 200) {
|
|
367
|
-
const error = new Error(`Download failed: server returned code ${response.statusCode}. URL: ${url}`);
|
|
368
|
-
// consume response data to free up memory
|
|
369
|
-
response.resume();
|
|
370
|
-
reject(error);
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
const file = fs.createWriteStream(destinationPath);
|
|
374
|
-
file.on('finish', () => fulfill());
|
|
375
|
-
file.on('error', (error) => reject(error));
|
|
376
|
-
response.pipe(file);
|
|
377
|
-
totalBytes = parseInt(
|
|
378
|
-
/** @type {string} */ response.headers['content-length'], 10);
|
|
379
|
-
if (progressCallback)
|
|
380
|
-
response.on('data', onData);
|
|
381
|
-
});
|
|
382
|
-
request.on('error', (error) => reject(error));
|
|
383
|
-
return promise;
|
|
384
|
-
function onData(chunk) {
|
|
385
|
-
downloadedBytes += chunk.length;
|
|
386
|
-
progressCallback(downloadedBytes, totalBytes);
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
function install(archivePath, folderPath) {
|
|
390
|
-
debugFetcher(`Installing ${archivePath} to ${folderPath}`);
|
|
391
|
-
if (archivePath.endsWith('.zip'))
|
|
392
|
-
return (0, extract_zip_1.default)(archivePath, { dir: folderPath });
|
|
393
|
-
else if (archivePath.endsWith('.tar.bz2'))
|
|
394
|
-
return extractTar(archivePath, folderPath);
|
|
395
|
-
else if (archivePath.endsWith('.dmg'))
|
|
396
|
-
return mkdirAsync(folderPath).then(() => installDMG(archivePath, folderPath));
|
|
397
|
-
else
|
|
398
|
-
throw new Error(`Unsupported archive format: ${archivePath}`);
|
|
399
|
-
}
|
|
400
|
-
/**
|
|
401
|
-
* @internal
|
|
402
|
-
*/
|
|
403
|
-
function extractTar(tarPath, folderPath) {
|
|
404
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
405
|
-
const tar = require('tar-fs');
|
|
406
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
407
|
-
const bzip = require('unbzip2-stream');
|
|
408
|
-
return new Promise((fulfill, reject) => {
|
|
409
|
-
const tarStream = tar.extract(folderPath);
|
|
410
|
-
tarStream.on('error', reject);
|
|
411
|
-
tarStream.on('finish', fulfill);
|
|
412
|
-
const readStream = fs.createReadStream(tarPath);
|
|
413
|
-
readStream.pipe(bzip()).pipe(tarStream);
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
/**
|
|
417
|
-
* @internal
|
|
418
|
-
*/
|
|
419
|
-
function installDMG(dmgPath, folderPath) {
|
|
420
|
-
let mountPath;
|
|
421
|
-
function mountAndCopy(fulfill, reject) {
|
|
422
|
-
const mountCommand = `hdiutil attach -nobrowse -noautoopen "${dmgPath}"`;
|
|
423
|
-
childProcess.exec(mountCommand, (err, stdout) => {
|
|
424
|
-
if (err)
|
|
425
|
-
return reject(err);
|
|
426
|
-
const volumes = stdout.match(/\/Volumes\/(.*)/m);
|
|
427
|
-
if (!volumes)
|
|
428
|
-
return reject(new Error(`Could not find volume path in ${stdout}`));
|
|
429
|
-
mountPath = volumes[0];
|
|
430
|
-
readdirAsync(mountPath)
|
|
431
|
-
.then((fileNames) => {
|
|
432
|
-
const appName = fileNames.find((item) => typeof item === 'string' && item.endsWith('.app'));
|
|
433
|
-
if (!appName)
|
|
434
|
-
return reject(new Error(`Cannot find app in ${mountPath}`));
|
|
435
|
-
const copyPath = path.join(mountPath, appName);
|
|
436
|
-
debugFetcher(`Copying ${copyPath} to ${folderPath}`);
|
|
437
|
-
childProcess.exec(`cp -R "${copyPath}" "${folderPath}"`, (err) => {
|
|
438
|
-
if (err)
|
|
439
|
-
reject(err);
|
|
440
|
-
else
|
|
441
|
-
fulfill();
|
|
442
|
-
});
|
|
443
|
-
})
|
|
444
|
-
.catch(reject);
|
|
445
|
-
});
|
|
446
|
-
}
|
|
447
|
-
function unmount() {
|
|
448
|
-
if (!mountPath)
|
|
449
|
-
return;
|
|
450
|
-
const unmountCommand = `hdiutil detach "${mountPath}" -quiet`;
|
|
451
|
-
debugFetcher(`Unmounting ${mountPath}`);
|
|
452
|
-
childProcess.exec(unmountCommand, (err) => {
|
|
453
|
-
if (err)
|
|
454
|
-
console.error(`Error unmounting dmg: ${err}`);
|
|
455
|
-
});
|
|
456
|
-
}
|
|
457
|
-
return new Promise(mountAndCopy)
|
|
458
|
-
.catch((error) => {
|
|
459
|
-
console.error(error);
|
|
460
|
-
})
|
|
461
|
-
.finally(unmount);
|
|
462
|
-
}
|
|
463
|
-
function httpRequest(url, method, response) {
|
|
464
|
-
const urlParsed = URL.parse(url);
|
|
465
|
-
let options = {
|
|
466
|
-
...urlParsed,
|
|
467
|
-
method,
|
|
468
|
-
};
|
|
469
|
-
const proxyURL = (0, proxy_from_env_1.getProxyForUrl)(url);
|
|
470
|
-
if (proxyURL) {
|
|
471
|
-
if (url.startsWith('http:')) {
|
|
472
|
-
const proxy = URL.parse(proxyURL);
|
|
473
|
-
options = {
|
|
474
|
-
path: options.href,
|
|
475
|
-
host: proxy.hostname,
|
|
476
|
-
port: proxy.port,
|
|
477
|
-
};
|
|
478
|
-
}
|
|
479
|
-
else {
|
|
480
|
-
const parsedProxyURL = URL.parse(proxyURL);
|
|
481
|
-
const proxyOptions = {
|
|
482
|
-
...parsedProxyURL,
|
|
483
|
-
secureProxy: parsedProxyURL.protocol === 'https:',
|
|
484
|
-
};
|
|
485
|
-
options.agent = (0, https_proxy_agent_1.default)(proxyOptions);
|
|
486
|
-
options.rejectUnauthorized = false;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
const requestCallback = (res) => {
|
|
490
|
-
if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location)
|
|
491
|
-
httpRequest(res.headers.location, method, response);
|
|
492
|
-
else
|
|
493
|
-
response(res);
|
|
494
|
-
};
|
|
495
|
-
const request = options.protocol === 'https:'
|
|
496
|
-
? https.request(options, requestCallback)
|
|
497
|
-
: http.request(options, requestCallback);
|
|
498
|
-
request.end();
|
|
499
|
-
return request;
|
|
500
|
-
}
|
|
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
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.BrowserFetcher = void 0;
|
|
41
|
+
const os = __importStar(require("os"));
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const util = __importStar(require("util"));
|
|
45
|
+
const childProcess = __importStar(require("child_process"));
|
|
46
|
+
const https = __importStar(require("https"));
|
|
47
|
+
const http = __importStar(require("http"));
|
|
48
|
+
const extract_zip_1 = __importDefault(require("extract-zip"));
|
|
49
|
+
const Debug_js_1 = require("../common/Debug.js");
|
|
50
|
+
const util_1 = require("util");
|
|
51
|
+
const rimraf_1 = __importDefault(require("rimraf"));
|
|
52
|
+
const URL = __importStar(require("url"));
|
|
53
|
+
const https_proxy_agent_1 = __importDefault(require("https-proxy-agent"));
|
|
54
|
+
const proxy_from_env_1 = require("proxy-from-env");
|
|
55
|
+
const assert_js_1 = require("../common/assert.js");
|
|
56
|
+
const debugFetcher = (0, Debug_js_1.debug)('puppeteer:fetcher');
|
|
57
|
+
const downloadURLs = {
|
|
58
|
+
chrome: {
|
|
59
|
+
linux: '%s/chromium-browser-snapshots/Linux_x64/%d/%s.zip',
|
|
60
|
+
mac: '%s/chromium-browser-snapshots/Mac/%d/%s.zip',
|
|
61
|
+
win32: '%s/chromium-browser-snapshots/Win/%d/%s.zip',
|
|
62
|
+
win64: '%s/chromium-browser-snapshots/Win_x64/%d/%s.zip',
|
|
63
|
+
},
|
|
64
|
+
firefox: {
|
|
65
|
+
linux: '%s/firefox-%s.en-US.%s-x86_64.tar.bz2',
|
|
66
|
+
mac: '%s/firefox-%s.en-US.%s.dmg',
|
|
67
|
+
win32: '%s/firefox-%s.en-US.%s.zip',
|
|
68
|
+
win64: '%s/firefox-%s.en-US.%s.zip',
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
const browserConfig = {
|
|
72
|
+
chrome: {
|
|
73
|
+
host: 'https://storage.googleapis.com',
|
|
74
|
+
destination: '.local-chromium',
|
|
75
|
+
},
|
|
76
|
+
firefox: {
|
|
77
|
+
host: 'https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central',
|
|
78
|
+
destination: '.local-firefox',
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
function archiveName(product, platform, revision) {
|
|
82
|
+
if (product === 'chrome') {
|
|
83
|
+
if (platform === 'linux')
|
|
84
|
+
return 'chrome-linux';
|
|
85
|
+
if (platform === 'mac')
|
|
86
|
+
return 'chrome-mac';
|
|
87
|
+
if (platform === 'win32' || platform === 'win64') {
|
|
88
|
+
// Windows archive name changed at r591479.
|
|
89
|
+
return parseInt(revision, 10) > 591479 ? 'chrome-win' : 'chrome-win32';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (product === 'firefox') {
|
|
93
|
+
return platform;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
function downloadURL(product, platform, host, revision) {
|
|
100
|
+
const url = util.format(downloadURLs[product][platform], host, revision, archiveName(product, platform, revision));
|
|
101
|
+
return url;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
function handleArm64() {
|
|
107
|
+
fs.stat('/usr/bin/chromium-browser', function (err, stats) {
|
|
108
|
+
if (stats === undefined) {
|
|
109
|
+
fs.stat('/usr/bin/chromium', function (err, stats) {
|
|
110
|
+
if (stats === undefined) {
|
|
111
|
+
console.error('The chromium binary is not available for arm64.' +
|
|
112
|
+
'\nIf you are on Ubuntu, you can install with: ' +
|
|
113
|
+
'\n\n sudo apt install chromium\n' +
|
|
114
|
+
'\n\n sudo apt install chromium-browser\n');
|
|
115
|
+
throw new Error();
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
const readdirAsync = (0, util_1.promisify)(fs.readdir.bind(fs));
|
|
122
|
+
const mkdirAsync = (0, util_1.promisify)(fs.mkdir.bind(fs));
|
|
123
|
+
const unlinkAsync = (0, util_1.promisify)(fs.unlink.bind(fs));
|
|
124
|
+
const chmodAsync = (0, util_1.promisify)(fs.chmod.bind(fs));
|
|
125
|
+
function existsAsync(filePath) {
|
|
126
|
+
return new Promise((resolve) => {
|
|
127
|
+
fs.access(filePath, (err) => resolve(!err));
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* BrowserFetcher can download and manage different versions of Chromium and Firefox.
|
|
132
|
+
*
|
|
133
|
+
* @remarks
|
|
134
|
+
* BrowserFetcher operates on revision strings that specify a precise version of Chromium, e.g. `"533271"`. Revision strings can be obtained from {@link http://omahaproxy.appspot.com/ | omahaproxy.appspot.com}.
|
|
135
|
+
* In the Firefox case, BrowserFetcher downloads Firefox Nightly and
|
|
136
|
+
* operates on version numbers such as `"75"`.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* An example of using BrowserFetcher to download a specific version of Chromium
|
|
140
|
+
* and running Puppeteer against it:
|
|
141
|
+
*
|
|
142
|
+
* ```js
|
|
143
|
+
* const browserFetcher = puppeteer.createBrowserFetcher();
|
|
144
|
+
* const revisionInfo = await browserFetcher.download('533271');
|
|
145
|
+
* const browser = await puppeteer.launch({executablePath: revisionInfo.executablePath})
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* **NOTE** BrowserFetcher is not designed to work concurrently with other
|
|
149
|
+
* instances of BrowserFetcher that share the same downloads directory.
|
|
150
|
+
*
|
|
151
|
+
* @public
|
|
152
|
+
*/
|
|
153
|
+
class BrowserFetcher {
|
|
154
|
+
/**
|
|
155
|
+
* @internal
|
|
156
|
+
*/
|
|
157
|
+
constructor(projectRoot, options = {}) {
|
|
158
|
+
this._product = (options.product || 'chrome').toLowerCase();
|
|
159
|
+
(0, assert_js_1.assert)(this._product === 'chrome' || this._product === 'firefox', `Unknown product: "${options.product}"`);
|
|
160
|
+
this._downloadsFolder =
|
|
161
|
+
options.path ||
|
|
162
|
+
path.join(projectRoot, browserConfig[this._product].destination);
|
|
163
|
+
this._downloadHost = options.host || browserConfig[this._product].host;
|
|
164
|
+
this.setPlatform(options.platform);
|
|
165
|
+
(0, assert_js_1.assert)(downloadURLs[this._product][this._platform], 'Unsupported platform: ' + this._platform);
|
|
166
|
+
}
|
|
167
|
+
setPlatform(platformFromOptions) {
|
|
168
|
+
if (platformFromOptions) {
|
|
169
|
+
this._platform = platformFromOptions;
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const platform = os.platform();
|
|
173
|
+
if (platform === 'darwin')
|
|
174
|
+
this._platform = 'mac';
|
|
175
|
+
else if (platform === 'linux')
|
|
176
|
+
this._platform = 'linux';
|
|
177
|
+
else if (platform === 'win32')
|
|
178
|
+
this._platform = os.arch() === 'x64' ? 'win64' : 'win32';
|
|
179
|
+
else
|
|
180
|
+
(0, assert_js_1.assert)(this._platform, 'Unsupported platform: ' + platform);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* @returns Returns the current `Platform`, which is one of `mac`, `linux`,
|
|
184
|
+
* `win32` or `win64`.
|
|
185
|
+
*/
|
|
186
|
+
platform() {
|
|
187
|
+
return this._platform;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* @returns Returns the current `Product`, which is one of `chrome` or
|
|
191
|
+
* `firefox`.
|
|
192
|
+
*/
|
|
193
|
+
product() {
|
|
194
|
+
return this._product;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* @returns The download host being used.
|
|
198
|
+
*/
|
|
199
|
+
host() {
|
|
200
|
+
return this._downloadHost;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Initiates a HEAD request to check if the revision is available.
|
|
204
|
+
* @remarks
|
|
205
|
+
* This method is affected by the current `product`.
|
|
206
|
+
* @param revision - The revision to check availability for.
|
|
207
|
+
* @returns A promise that resolves to `true` if the revision could be downloaded
|
|
208
|
+
* from the host.
|
|
209
|
+
*/
|
|
210
|
+
canDownload(revision) {
|
|
211
|
+
const url = downloadURL(this._product, this._platform, this._downloadHost, revision);
|
|
212
|
+
return new Promise((resolve) => {
|
|
213
|
+
const request = httpRequest(url, 'HEAD', (response) => {
|
|
214
|
+
resolve(response.statusCode === 200);
|
|
215
|
+
});
|
|
216
|
+
request.on('error', (error) => {
|
|
217
|
+
console.error(error);
|
|
218
|
+
resolve(false);
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Initiates a GET request to download the revision from the host.
|
|
224
|
+
* @remarks
|
|
225
|
+
* This method is affected by the current `product`.
|
|
226
|
+
* @param revision - The revision to download.
|
|
227
|
+
* @param progressCallback - A function that will be called with two arguments:
|
|
228
|
+
* How many bytes have been downloaded and the total number of bytes of the download.
|
|
229
|
+
* @returns A promise with revision information when the revision is downloaded
|
|
230
|
+
* and extracted.
|
|
231
|
+
*/
|
|
232
|
+
async download(revision, progressCallback = () => { }) {
|
|
233
|
+
const url = downloadURL(this._product, this._platform, this._downloadHost, revision);
|
|
234
|
+
const fileName = url.split('/').pop();
|
|
235
|
+
const archivePath = path.join(this._downloadsFolder, fileName);
|
|
236
|
+
const outputPath = this._getFolderPath(revision);
|
|
237
|
+
if (await existsAsync(outputPath))
|
|
238
|
+
return this.revisionInfo(revision);
|
|
239
|
+
if (!(await existsAsync(this._downloadsFolder)))
|
|
240
|
+
await mkdirAsync(this._downloadsFolder);
|
|
241
|
+
// Use Intel x86 builds on Apple M1 until native macOS arm64
|
|
242
|
+
// Chromium builds are available.
|
|
243
|
+
if (os.platform() !== 'darwin' && os.arch() === 'arm64') {
|
|
244
|
+
handleArm64();
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
try {
|
|
248
|
+
await downloadFile(url, archivePath, progressCallback);
|
|
249
|
+
await install(archivePath, outputPath);
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
if (await existsAsync(archivePath))
|
|
253
|
+
await unlinkAsync(archivePath);
|
|
254
|
+
}
|
|
255
|
+
const revisionInfo = this.revisionInfo(revision);
|
|
256
|
+
if (revisionInfo)
|
|
257
|
+
await chmodAsync(revisionInfo.executablePath, 0o755);
|
|
258
|
+
return revisionInfo;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* @remarks
|
|
262
|
+
* This method is affected by the current `product`.
|
|
263
|
+
* @returns A promise with a list of all revision strings (for the current `product`)
|
|
264
|
+
* available locally on disk.
|
|
265
|
+
*/
|
|
266
|
+
async localRevisions() {
|
|
267
|
+
if (!(await existsAsync(this._downloadsFolder)))
|
|
268
|
+
return [];
|
|
269
|
+
const fileNames = await readdirAsync(this._downloadsFolder);
|
|
270
|
+
return fileNames
|
|
271
|
+
.map((fileName) => parseFolderPath(this._product, fileName))
|
|
272
|
+
.filter((entry) => entry && entry.platform === this._platform)
|
|
273
|
+
.map((entry) => entry.revision);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* @remarks
|
|
277
|
+
* This method is affected by the current `product`.
|
|
278
|
+
* @param revision - A revision to remove for the current `product`.
|
|
279
|
+
* @returns A promise that resolves when the revision has been removes or
|
|
280
|
+
* throws if the revision has not been downloaded.
|
|
281
|
+
*/
|
|
282
|
+
async remove(revision) {
|
|
283
|
+
const folderPath = this._getFolderPath(revision);
|
|
284
|
+
(0, assert_js_1.assert)(await existsAsync(folderPath), `Failed to remove: revision ${revision} is not downloaded`);
|
|
285
|
+
await new Promise((fulfill) => (0, rimraf_1.default)(folderPath, fulfill));
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* @param revision - The revision to get info for.
|
|
289
|
+
* @returns The revision info for the given revision.
|
|
290
|
+
*/
|
|
291
|
+
revisionInfo(revision) {
|
|
292
|
+
const folderPath = this._getFolderPath(revision);
|
|
293
|
+
let executablePath = '';
|
|
294
|
+
if (this._product === 'chrome') {
|
|
295
|
+
if (this._platform === 'mac')
|
|
296
|
+
executablePath = path.join(folderPath, archiveName(this._product, this._platform, revision), 'Chromium.app', 'Contents', 'MacOS', 'Chromium');
|
|
297
|
+
else if (this._platform === 'linux')
|
|
298
|
+
executablePath = path.join(folderPath, archiveName(this._product, this._platform, revision), 'chrome');
|
|
299
|
+
else if (this._platform === 'win32' || this._platform === 'win64')
|
|
300
|
+
executablePath = path.join(folderPath, archiveName(this._product, this._platform, revision), 'chrome.exe');
|
|
301
|
+
else
|
|
302
|
+
throw new Error('Unsupported platform: ' + this._platform);
|
|
303
|
+
}
|
|
304
|
+
else if (this._product === 'firefox') {
|
|
305
|
+
if (this._platform === 'mac')
|
|
306
|
+
executablePath = path.join(folderPath, 'Firefox Nightly.app', 'Contents', 'MacOS', 'firefox');
|
|
307
|
+
else if (this._platform === 'linux')
|
|
308
|
+
executablePath = path.join(folderPath, 'firefox', 'firefox');
|
|
309
|
+
else if (this._platform === 'win32' || this._platform === 'win64')
|
|
310
|
+
executablePath = path.join(folderPath, 'firefox', 'firefox.exe');
|
|
311
|
+
else
|
|
312
|
+
throw new Error('Unsupported platform: ' + this._platform);
|
|
313
|
+
}
|
|
314
|
+
else
|
|
315
|
+
throw new Error('Unsupported product: ' + this._product);
|
|
316
|
+
const url = downloadURL(this._product, this._platform, this._downloadHost, revision);
|
|
317
|
+
const local = fs.existsSync(folderPath);
|
|
318
|
+
debugFetcher({
|
|
319
|
+
revision,
|
|
320
|
+
executablePath,
|
|
321
|
+
folderPath,
|
|
322
|
+
local,
|
|
323
|
+
url,
|
|
324
|
+
product: this._product,
|
|
325
|
+
});
|
|
326
|
+
return {
|
|
327
|
+
revision,
|
|
328
|
+
executablePath,
|
|
329
|
+
folderPath,
|
|
330
|
+
local,
|
|
331
|
+
url,
|
|
332
|
+
product: this._product,
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* @internal
|
|
337
|
+
*/
|
|
338
|
+
_getFolderPath(revision) {
|
|
339
|
+
return path.resolve(this._downloadsFolder, `${this._platform}-${revision}`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
exports.BrowserFetcher = BrowserFetcher;
|
|
343
|
+
function parseFolderPath(product, folderPath) {
|
|
344
|
+
const name = path.basename(folderPath);
|
|
345
|
+
const splits = name.split('-');
|
|
346
|
+
if (splits.length !== 2)
|
|
347
|
+
return null;
|
|
348
|
+
const [platform, revision] = splits;
|
|
349
|
+
if (!downloadURLs[product][platform])
|
|
350
|
+
return null;
|
|
351
|
+
return { product, platform, revision };
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* @internal
|
|
355
|
+
*/
|
|
356
|
+
function downloadFile(url, destinationPath, progressCallback) {
|
|
357
|
+
debugFetcher(`Downloading binary from ${url}`);
|
|
358
|
+
let fulfill, reject;
|
|
359
|
+
let downloadedBytes = 0;
|
|
360
|
+
let totalBytes = 0;
|
|
361
|
+
const promise = new Promise((x, y) => {
|
|
362
|
+
fulfill = x;
|
|
363
|
+
reject = y;
|
|
364
|
+
});
|
|
365
|
+
const request = httpRequest(url, 'GET', (response) => {
|
|
366
|
+
if (response.statusCode !== 200) {
|
|
367
|
+
const error = new Error(`Download failed: server returned code ${response.statusCode}. URL: ${url}`);
|
|
368
|
+
// consume response data to free up memory
|
|
369
|
+
response.resume();
|
|
370
|
+
reject(error);
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
const file = fs.createWriteStream(destinationPath);
|
|
374
|
+
file.on('finish', () => fulfill());
|
|
375
|
+
file.on('error', (error) => reject(error));
|
|
376
|
+
response.pipe(file);
|
|
377
|
+
totalBytes = parseInt(
|
|
378
|
+
/** @type {string} */ response.headers['content-length'], 10);
|
|
379
|
+
if (progressCallback)
|
|
380
|
+
response.on('data', onData);
|
|
381
|
+
});
|
|
382
|
+
request.on('error', (error) => reject(error));
|
|
383
|
+
return promise;
|
|
384
|
+
function onData(chunk) {
|
|
385
|
+
downloadedBytes += chunk.length;
|
|
386
|
+
progressCallback(downloadedBytes, totalBytes);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
function install(archivePath, folderPath) {
|
|
390
|
+
debugFetcher(`Installing ${archivePath} to ${folderPath}`);
|
|
391
|
+
if (archivePath.endsWith('.zip'))
|
|
392
|
+
return (0, extract_zip_1.default)(archivePath, { dir: folderPath });
|
|
393
|
+
else if (archivePath.endsWith('.tar.bz2'))
|
|
394
|
+
return extractTar(archivePath, folderPath);
|
|
395
|
+
else if (archivePath.endsWith('.dmg'))
|
|
396
|
+
return mkdirAsync(folderPath).then(() => installDMG(archivePath, folderPath));
|
|
397
|
+
else
|
|
398
|
+
throw new Error(`Unsupported archive format: ${archivePath}`);
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* @internal
|
|
402
|
+
*/
|
|
403
|
+
function extractTar(tarPath, folderPath) {
|
|
404
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
405
|
+
const tar = require('tar-fs');
|
|
406
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
407
|
+
const bzip = require('unbzip2-stream');
|
|
408
|
+
return new Promise((fulfill, reject) => {
|
|
409
|
+
const tarStream = tar.extract(folderPath);
|
|
410
|
+
tarStream.on('error', reject);
|
|
411
|
+
tarStream.on('finish', fulfill);
|
|
412
|
+
const readStream = fs.createReadStream(tarPath);
|
|
413
|
+
readStream.pipe(bzip()).pipe(tarStream);
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* @internal
|
|
418
|
+
*/
|
|
419
|
+
function installDMG(dmgPath, folderPath) {
|
|
420
|
+
let mountPath;
|
|
421
|
+
function mountAndCopy(fulfill, reject) {
|
|
422
|
+
const mountCommand = `hdiutil attach -nobrowse -noautoopen "${dmgPath}"`;
|
|
423
|
+
childProcess.exec(mountCommand, (err, stdout) => {
|
|
424
|
+
if (err)
|
|
425
|
+
return reject(err);
|
|
426
|
+
const volumes = stdout.match(/\/Volumes\/(.*)/m);
|
|
427
|
+
if (!volumes)
|
|
428
|
+
return reject(new Error(`Could not find volume path in ${stdout}`));
|
|
429
|
+
mountPath = volumes[0];
|
|
430
|
+
readdirAsync(mountPath)
|
|
431
|
+
.then((fileNames) => {
|
|
432
|
+
const appName = fileNames.find((item) => typeof item === 'string' && item.endsWith('.app'));
|
|
433
|
+
if (!appName)
|
|
434
|
+
return reject(new Error(`Cannot find app in ${mountPath}`));
|
|
435
|
+
const copyPath = path.join(mountPath, appName);
|
|
436
|
+
debugFetcher(`Copying ${copyPath} to ${folderPath}`);
|
|
437
|
+
childProcess.exec(`cp -R "${copyPath}" "${folderPath}"`, (err) => {
|
|
438
|
+
if (err)
|
|
439
|
+
reject(err);
|
|
440
|
+
else
|
|
441
|
+
fulfill();
|
|
442
|
+
});
|
|
443
|
+
})
|
|
444
|
+
.catch(reject);
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
function unmount() {
|
|
448
|
+
if (!mountPath)
|
|
449
|
+
return;
|
|
450
|
+
const unmountCommand = `hdiutil detach "${mountPath}" -quiet`;
|
|
451
|
+
debugFetcher(`Unmounting ${mountPath}`);
|
|
452
|
+
childProcess.exec(unmountCommand, (err) => {
|
|
453
|
+
if (err)
|
|
454
|
+
console.error(`Error unmounting dmg: ${err}`);
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
return new Promise(mountAndCopy)
|
|
458
|
+
.catch((error) => {
|
|
459
|
+
console.error(error);
|
|
460
|
+
})
|
|
461
|
+
.finally(unmount);
|
|
462
|
+
}
|
|
463
|
+
function httpRequest(url, method, response) {
|
|
464
|
+
const urlParsed = URL.parse(url);
|
|
465
|
+
let options = {
|
|
466
|
+
...urlParsed,
|
|
467
|
+
method,
|
|
468
|
+
};
|
|
469
|
+
const proxyURL = (0, proxy_from_env_1.getProxyForUrl)(url);
|
|
470
|
+
if (proxyURL) {
|
|
471
|
+
if (url.startsWith('http:')) {
|
|
472
|
+
const proxy = URL.parse(proxyURL);
|
|
473
|
+
options = {
|
|
474
|
+
path: options.href,
|
|
475
|
+
host: proxy.hostname,
|
|
476
|
+
port: proxy.port,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
const parsedProxyURL = URL.parse(proxyURL);
|
|
481
|
+
const proxyOptions = {
|
|
482
|
+
...parsedProxyURL,
|
|
483
|
+
secureProxy: parsedProxyURL.protocol === 'https:',
|
|
484
|
+
};
|
|
485
|
+
options.agent = (0, https_proxy_agent_1.default)(proxyOptions);
|
|
486
|
+
options.rejectUnauthorized = false;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
const requestCallback = (res) => {
|
|
490
|
+
if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location)
|
|
491
|
+
httpRequest(res.headers.location, method, response);
|
|
492
|
+
else
|
|
493
|
+
response(res);
|
|
494
|
+
};
|
|
495
|
+
const request = options.protocol === 'https:'
|
|
496
|
+
? https.request(options, requestCallback)
|
|
497
|
+
: http.request(options, requestCallback);
|
|
498
|
+
request.end();
|
|
499
|
+
return request;
|
|
500
|
+
}
|
|
501
501
|
//# sourceMappingURL=BrowserFetcher.js.map
|