Socket
Socket
Sign inDemoInstall

@sitespeed.io/chromedriver

Package Overview
Dependencies
Maintainers
3
Versions
77
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sitespeed.io/chromedriver - npm Package Compare versions

Comparing version 1.0.0 to 2.44.0

npm-shrinkwrap.json

2

index.js

@@ -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');

'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*.
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc