@sitespeed.io/chromedriver
Advanced tools
Comparing version 1.0.0 to 2.44.0
@@ -8,3 +8,3 @@ 'use strict'; | ||
module.exports = { | ||
version: pkg.chromedriver_version, | ||
version: pkg.version, | ||
binPath: function() { | ||
@@ -11,0 +11,0 @@ let driverPath = path.resolve(__dirname, 'vendor', 'chromedriver'); |
107
install.js
'use strict'; | ||
const download = require('download'); | ||
const StreamZip = require('node-stream-zip'); | ||
const os = require('os'); | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
const pkg = require('./package'); | ||
const { DownloaderHelper } = require('node-downloader-helper'); | ||
const { promisify } = require('util'); | ||
const unlink = promisify(fs.unlink); | ||
const mkdir = promisify(fs.mkdir); | ||
const chmod = promisify(fs.chmod); | ||
// The version of the driver that will be installed | ||
const CHROMEDRIVER_VERSION = `${pkg.chromedriver_version}`; | ||
function byteHelper(value) { | ||
// https://gist.github.com/thomseddon/3511330 | ||
const units = ['b', 'kB', 'MB', 'GB', 'TB'], | ||
number = Math.floor(Math.log(value) / Math.log(1024)); | ||
return ( | ||
(value / Math.pow(1024, Math.floor(number))).toFixed(1) + | ||
' ' + | ||
units[number] | ||
); | ||
} | ||
function getChromedriverUrl() { | ||
@@ -12,3 +33,3 @@ let urlBase; | ||
} else { | ||
urlBase = `https://chromedriver.storage.googleapis.com/${pkg.chromedriver_version}/`; | ||
urlBase = `https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/`; | ||
} | ||
@@ -20,17 +41,79 @@ | ||
case 'linux': | ||
return ( | ||
urlBase + | ||
(os.arch() === 'x64' | ||
? 'chromedriver_linux64.zip' | ||
: 'chromedriver_linux32.zip') | ||
); | ||
if (os.arch() === 'x64') return urlBase + 'chromedriver_linux64.zip'; | ||
else if (os.arch() === 'x32') return urlBase + 'chromedriver_linux32.zip'; | ||
else return undefined; | ||
case 'win32': | ||
return urlBase + 'chromedriver_win32.zip'; | ||
default: | ||
throw new Error('Unsupported platform: ' + os.platform()); | ||
return undefined; | ||
} | ||
} | ||
// eslint-disable-next-line no-console | ||
console.log(`Downloading from ${getChromedriverUrl()}`); | ||
download(getChromedriverUrl(), 'vendor', { mode: '755', extract: true }); | ||
async function download() { | ||
if ( | ||
process.env.npm_config_chromedriver_skip_download || | ||
process.env.CHROMEDRIVER_SKIP_DOWNLOAD | ||
) { | ||
console.log('Skip downloading Chromedriver'); | ||
} else { | ||
const downloadUrl = getChromedriverUrl(); | ||
if (downloadUrl) { | ||
try { | ||
await mkdir('vendor'); | ||
} catch (e) { | ||
try { | ||
await unlink('vendor/chromedriver'); | ||
} catch (e) { | ||
// DO nada | ||
} | ||
} | ||
const dl = new DownloaderHelper(downloadUrl, 'vendor', { | ||
fileName: 'chromedriver.zip' | ||
}); | ||
dl | ||
.on('error', err => | ||
console.error('Could not download Chromedriver: ' + downloadUrl, err) | ||
) | ||
.on('progress', stats => { | ||
const progress = stats.progress.toFixed(1); | ||
const speed = byteHelper(stats.speed); | ||
const downloaded = byteHelper(stats.downloaded); | ||
const total = byteHelper(stats.total); | ||
console.log(`${speed}/s - ${progress}% [${downloaded}/${total}]`); | ||
}) | ||
.on('end', () => { | ||
const zip = new StreamZip({ | ||
file: 'vendor/chromedriver.zip', | ||
storeEntries: true | ||
}); | ||
zip.on('ready', () => { | ||
zip.extract(null, './vendor', async err => { | ||
console.log( | ||
err | ||
? 'Could not extract and install Chromedriver' | ||
: `Chromedriver ${CHROMEDRIVER_VERSION} installed in ${path.join( | ||
__dirname, | ||
'vendor' | ||
)}` | ||
); | ||
zip.close(); | ||
await unlink('vendor/chromedriver.zip'); | ||
await chmod('vendor/chromedriver', '755'); | ||
}); | ||
}); | ||
}); | ||
dl.start(); | ||
} else { | ||
console.log( | ||
'Skipping installing Chromedriver on ' + | ||
os.platform() + | ||
' for ' + | ||
os.arch() + | ||
" since there's no official build" | ||
); | ||
} | ||
} | ||
} | ||
download(); |
{ | ||
"name": "@sitespeed.io/chromedriver", | ||
"version": "1.0.0", | ||
"chromedriver_version": "2.31", | ||
"version": "2.44.0", | ||
"chromedriver_version": "2.44", | ||
"description": "Install and launch Chromedriver for Mac, Linux or Windows.", | ||
"main": "index.js", | ||
"files": [ | ||
"index.js", | ||
"install.js", | ||
"package.json", | ||
"npm-shrinkwrap.json", | ||
"README.md" | ||
], | ||
"scripts": { | ||
@@ -12,3 +19,2 @@ "lint": "eslint .", | ||
"install": "node install.js", | ||
"test": "node test.js", | ||
"check-latest": "node check-latest.js" | ||
@@ -28,11 +34,13 @@ }, | ||
"dependencies": { | ||
"download": "^6.2.5" | ||
"node-downloader-helper": "1.0.9", | ||
"node-stream-zip": "1.7.0" | ||
}, | ||
"devDependencies": { | ||
"eslint": "^4.4.1", | ||
"eslint-config-prettier": "^2.3.0", | ||
"eslint-plugin-prettier": "^2.2.0", | ||
"prettier": "^1.5.2", | ||
"request": "^2.69.0" | ||
"eslint": "5.10.0", | ||
"eslint-config-prettier": "3.3.0", | ||
"eslint-plugin-prettier": "3.0.0", | ||
"prettier": "1.15.3", | ||
"request": "2.88.0", | ||
"semver": "5.6.0" | ||
} | ||
} |
# Chromedriver | ||
This is a simple package that downloads [Chromedriver](https://sites.google.com/a/chromium.org/chromedriver/) and | ||
provides a node api for accessing the path to the binary. There are other packages like this, but I wanted to make sure | ||
I had an updated package to include in [Browsertime](http://www.browsertime.net). | ||
provides a node api for accessing the path to the binary. We want to keep this with minimimal dependencies. | ||
How to use? | ||
@@ -15,2 +15,2 @@ ```node | ||
You can override where you download the Chromedriver by setting *process.env.CHROMEDRIVER_BASE_URL*. | ||
You can override where you download the Chromedriver by setting *process.env.CHROMEDRIVER_BASE_URL*. You can skip donwloading the Chromedriver by setting *process.env.CHROMEDRIVER_SKIP_DOWNLOAD*. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
NPM Shrinkwrap
Supply chain riskPackage contains a shrinkwrap file. This may allow the package to bypass normal install procedures.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
55842
1509
2
6
5
2
5
2
+ Addednode-downloader-helper@1.0.9
+ Addednode-stream-zip@1.7.0
+ Addednode-downloader-helper@1.0.9(transitive)
+ Addednode-stream-zip@1.7.0(transitive)
- Removeddownload@^6.2.5
- Removedbase64-js@1.5.1(transitive)
- Removedbl@1.2.3(transitive)
- Removedbuffer@5.7.1(transitive)
- Removedbuffer-alloc@1.2.0(transitive)
- Removedbuffer-alloc-unsafe@1.1.0(transitive)
- Removedbuffer-crc32@0.2.13(transitive)
- Removedbuffer-fill@1.0.0(transitive)
- Removedcaw@2.0.1(transitive)
- Removedcommander@2.20.3(transitive)
- Removedconfig-chain@1.1.13(transitive)
- Removedcontent-disposition@0.5.4(transitive)
- Removedcore-util-is@1.0.3(transitive)
- Removeddecompress@4.2.1(transitive)
- Removeddecompress-response@3.3.0(transitive)
- Removeddecompress-tar@4.1.1(transitive)
- Removeddecompress-tarbz2@4.1.1(transitive)
- Removeddecompress-targz@4.1.1(transitive)
- Removeddecompress-unzip@4.0.1(transitive)
- Removeddownload@6.2.5(transitive)
- Removedduplexer3@0.1.5(transitive)
- Removedend-of-stream@1.4.4(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedext-list@2.2.2(transitive)
- Removedext-name@5.0.0(transitive)
- Removedfd-slicer@1.1.0(transitive)
- Removedfile-type@3.9.05.2.06.2.0(transitive)
- Removedfilename-reserved-regex@2.0.0(transitive)
- Removedfilenamify@2.1.0(transitive)
- Removedfs-constants@1.0.0(transitive)
- Removedget-proxy@2.1.0(transitive)
- Removedget-stream@2.3.13.0.0(transitive)
- Removedgot@7.1.0(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedhas-symbol-support-x@1.4.2(transitive)
- Removedhas-to-string-tag-x@1.4.1(transitive)
- Removedieee754@1.2.1(transitive)
- Removedinherits@2.0.4(transitive)
- Removedini@1.3.8(transitive)
- Removedis-natural-number@4.0.1(transitive)
- Removedis-object@1.0.2(transitive)
- Removedis-plain-obj@1.1.0(transitive)
- Removedis-retry-allowed@1.2.0(transitive)
- Removedis-stream@1.1.0(transitive)
- Removedisarray@1.0.0(transitive)
- Removedisurl@1.0.0(transitive)
- Removedlowercase-keys@1.0.1(transitive)
- Removedmake-dir@1.3.0(transitive)
- Removedmime-db@1.53.0(transitive)
- Removedmimic-response@1.0.1(transitive)
- Removednpm-conf@1.1.3(transitive)
- Removedobject-assign@4.1.1(transitive)
- Removedonce@1.4.0(transitive)
- Removedp-cancelable@0.3.0(transitive)
- Removedp-event@1.3.0(transitive)
- Removedp-finally@1.0.0(transitive)
- Removedp-timeout@1.2.1(transitive)
- Removedpend@1.2.0(transitive)
- Removedpify@2.3.03.0.0(transitive)
- Removedpinkie@2.0.4(transitive)
- Removedpinkie-promise@2.0.1(transitive)
- Removedprepend-http@1.0.4(transitive)
- Removedprocess-nextick-args@2.0.1(transitive)
- Removedproto-list@1.2.4(transitive)
- Removedreadable-stream@2.3.8(transitive)
- Removedsafe-buffer@5.1.25.2.1(transitive)
- Removedseek-bzip@1.0.6(transitive)
- Removedsort-keys@1.1.2(transitive)
- Removedsort-keys-length@1.0.1(transitive)
- Removedstring_decoder@1.1.1(transitive)
- Removedstrip-dirs@2.1.0(transitive)
- Removedstrip-outer@1.0.1(transitive)
- Removedtar-stream@1.6.2(transitive)
- Removedthrough@2.3.8(transitive)
- Removedtimed-out@4.0.1(transitive)
- Removedto-buffer@1.1.1(transitive)
- Removedtrim-repeated@1.0.0(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedunbzip2-stream@1.4.3(transitive)
- Removedurl-parse-lax@1.0.0(transitive)
- Removedurl-to-options@1.0.1(transitive)
- Removedutil-deprecate@1.0.2(transitive)
- Removedwrappy@1.0.2(transitive)
- Removedxtend@4.0.2(transitive)
- Removedyauzl@2.10.0(transitive)