New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

puppeteer-chromium-resolver

Package Overview
Dependencies
Maintainers
1
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

puppeteer-chromium-resolver - npm Package Compare versions

Comparing version 4.0.0 to 5.0.0

.stats.json

136

index.js

@@ -1,7 +0,7 @@

const path = require('path');
const fs = require('fs');
const os = require('os');
const puppeteer = require('puppeteer-core');
const PingMonitor = require('ping-monitor');
const Gauge = require('gauge');
const path = require("path");
const fs = require("fs");
const os = require("os");
const puppeteer = require("puppeteer-core");
const PingMonitor = require("ping-monitor");
const Gauge = require("gauge");
const gauge = new Gauge();

@@ -19,3 +19,3 @@

};
const list = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'];
const list = ["black", "red", "green", "yellow", "blue", "magenta", "cyan", "white"];
list.forEach((name, i) => {

@@ -75,7 +75,7 @@ Color[name] = (str) => {

output('Chromium downloaded to ' + option.userFolder);
output("Chromium downloaded to " + option.userFolder);
let localRevisions = await browserFetcher.localRevisions();
if (localRevisions && localRevisions.length) {
output('Checking previous local chromium revisions ...');
output("Checking previous local chromium revisions ...");
localRevisions = localRevisions.filter(revision => revision !== option.revision);

@@ -87,3 +87,3 @@ if (localRevisions.length > option.cacheRevisions) {

const cleanupOldVersions = localRevisions.map(revision => browserFetcher.remove(revision));
await Promise.all([...cleanupOldVersions]);
await Promise.all([... cleanupOldVersions]);
}

@@ -108,5 +108,5 @@ }

for (let host of option.hosts) {
for (const host of option.hosts) {
option.host = host;
let res = await downloadFromHost(option);
const res = await downloadFromHost(option);
if (res) {

@@ -119,3 +119,3 @@ return res;

option.retryTimes += 1;
output('Retry Chromium downloading ... ');
output("Retry Chromium downloading ... ");
return await downloadStart(option);

@@ -127,3 +127,3 @@ }

const pingHost = function (host, timeout = 5000) {
const pingHost = function(host, timeout = 5000) {
return new Promise((resolve) => {

@@ -133,4 +133,4 @@ const myMonitor = new PingMonitor({

});
let time_start = Date.now();
let timeout_id = setTimeout(() => {
const time_start = Date.now();
const timeout_id = setTimeout(() => {
myMonitor.stop();

@@ -143,3 +143,3 @@ resolve({

}, timeout);
myMonitor.on('up', function (res, state) {
myMonitor.on("up", function(res, state) {
clearTimeout(timeout_id);

@@ -153,3 +153,3 @@ myMonitor.stop();

});
myMonitor.on('down', function (res) {
myMonitor.on("down", function(res) {
clearTimeout(timeout_id);

@@ -163,3 +163,3 @@ myMonitor.stop();

});
myMonitor.on('error', function (error) {
myMonitor.on("error", function(error) {
clearTimeout(timeout_id);

@@ -210,3 +210,3 @@ myMonitor.stop();

let res = await downloadStart(option);
const res = await downloadStart(option);
if (!res) {

@@ -243,3 +243,3 @@ output(`ERROR: Failed to download Chromium after retry ${option.retryTimes} times.`, true);

detectionList.push(path.resolve(current, folderName));
let parent = path.resolve(current, "../");
const parent = path.resolve(current, "../");
if (parent === current) {

@@ -258,6 +258,6 @@ current = "";

detectionPath = path.resolve(detectionPath);
let browserFetcher = puppeteer.createBrowserFetcher({
const browserFetcher = puppeteer.createBrowserFetcher({
path: detectionPath
});
let revisionInfo = browserFetcher.revisionInfo(option.revision);
const revisionInfo = browserFetcher.revisionInfo(option.revision);
return revisionInfo;

@@ -267,4 +267,4 @@ };

const detectionHandler = (option) => {
for (let detectionPath of option.detectionList) {
let revisionInfo = detectionPathHandler(option, detectionPath);
for (const detectionPath of option.detectionList) {
const revisionInfo = detectionPathHandler(option, detectionPath);
if (detectionPath === option.userFolder) {

@@ -302,6 +302,6 @@ option.userRevisionInfo = revisionInfo;

try {
fs.mkdirSync(userFolder, '0777');
fs.mkdirSync(userFolder, "0777");
// Make double sure we have 0777 permissions; some operating systems
// default umask does not allow write by default.
fs.chmodSync(userFolder, '0777');
fs.chmodSync(userFolder, "0777");
} catch (e) {

@@ -318,6 +318,11 @@ output("User path is not writable: " + userFolder);

}
if (option.puppeteerConf) {
return option.puppeteerConf.puppeteer.chromium_revision;
let revisions;
try {
revisions = require("puppeteer-core/lib/cjs/revisions.js");
} catch (e) {}
//console.log(revisions);
if (revisions) {
return revisions.PUPPETEER_REVISIONS.chromium;
}
return require("./package.json").puppeteer.chromium_revision;
return "756035";
};

@@ -329,11 +334,7 @@

}
const p1 = path.resolve(__dirname, "../puppeteer-core/package.json");
if (fs.existsSync(p1)) {
return require(p1);
}
const p2 = path.resolve(__dirname, "./node_modules/puppeteer-core/package.json");
if (fs.existsSync(p2)) {
return require(p2);
}
return null;
let config;
try {
config = require("puppeteer-core/package.json");
} catch (e) {}
return config;
};

@@ -347,3 +348,3 @@

//fix root issue
args: ['--no-sandbox'],
args: ["--no-sandbox"],
executablePath: option.revisionInfo.executablePath

@@ -358,3 +359,3 @@ }).catch((error) => {

//delay close, fix unknown log in console
setTimeout(function () {
setTimeout(function() {
browser.close();

@@ -365,7 +366,18 @@ }, 1000);

// \ to /
const formatPath = (str) => {
if (str) {
str = str.replace(/\\/g, "/");
}
return str;
};
const revisionHandler = (option) => {
let revisionInfo = option.revisionInfo;
const revisionInfo = option.revisionInfo;
revisionInfo.executablePath = formatPath(revisionInfo.executablePath);
revisionInfo.folderPath = formatPath(revisionInfo.folderPath);
revisionInfo.userFolder = formatPath(option.userFolder);
//Chromium

@@ -385,11 +397,32 @@ revisionInfo.launchable = option.launchable;

//Puppeteer
revisionInfo.puppeteer = puppeteer;
if (option.puppeteerConf) {
revisionInfo.puppeteerVersion = option.puppeteerConf.version;
output("Puppeteer version: " + revisionInfo.puppeteerVersion);
}
output("Puppeteer version: " + revisionInfo.puppeteerVersion);
revisionInfo.puppeteer = puppeteer;
return revisionInfo;
};
const statsPath = path.resolve(__dirname, ".stats.json");
const saveStats = (revisionInfo) => {
const stats = Object.assign({}, revisionInfo);
delete stats.puppeteer;
fs.writeFileSync(statsPath, JSON.stringify(stats, null, 4));
output("Stats saved: " + path.relative(process.cwd(), statsPath));
};
const getStats = () => {
let stats;
try {
stats = require(statsPath);
} catch (e) {
output("Not found PCR stats, try npm install again.", true);
}
if (stats) {
stats.puppeteer = puppeteer;
}
return stats;
};
//=========================================================================================

@@ -399,6 +432,6 @@

let defaultOption = {
const defaultOption = {
revision: "",
detectionPath: "",
folderName: '.chromium-browser-snapshots',
folderName: ".chromium-browser-snapshots",
defaultHosts: ["https://storage.googleapis.com", "https://npm.taobao.org/mirrors"],

@@ -420,3 +453,3 @@ hosts: [],

let localChromium = detectionLocalChromium(option);
const localChromium = detectionLocalChromium(option);
if (!localChromium) {

@@ -428,5 +461,7 @@ await downloadHandler(option);

let revisionInfo = await revisionHandler(option);
const revisionInfo = await revisionHandler(option);
//console.log(revisionInfo);
saveStats(revisionInfo);
//close gauge

@@ -438,2 +473,5 @@ gauge.disable();

//sync API
resolver.getStats = getStats;
module.exports = resolver;

@@ -1,3 +0,5 @@

require("./index.js")({}).then((pcr) => {
const PCR = require("./index.js");
//console.log(PCR.getStats());
PCR({}).then((pcr) => {
//console.log(pcr);
});
{
"name": "puppeteer-chromium-resolver",
"version": "4.0.0",
"version": "5.0.0",
"description": "Tool to resolve puppeteer and chromium faster, detect local installed chromium, download chromium with custom mirror host, cache chromium revision out of node_modules, test chromium headless being launchable.",

@@ -9,9 +9,5 @@ "main": "index.js",

"object-assign": "^4.1.1",
"ping-monitor": "^0.4.4",
"puppeteer-core": "^4.0.1"
"ping-monitor": "^0.5.0",
"puppeteer-core": "^5.0.0"
},
"puppeteer": {
"chromium_revision": "756035",
"firefox_revision": "latest"
},
"repository": {

@@ -18,0 +14,0 @@ "type": "git",

@@ -16,2 +16,3 @@

## Install

@@ -22,20 +23,48 @@ ```sh

## Usage
#### [Async Case](./test/async.js): dynamic detection and downloading chromium
```js
const PCR = require("puppeteer-chromium-resolver");
const pcr = await PCR();
const browser = await pcr.puppeteer.launch({
headless: true,
args: ['--no-sandbox'],
executablePath: pcr.executablePath
}).catch(function (error) {
console.log(error);
});
const page = await browser.newPage();
await page.goto('https://www.google.com');
await browser.close();
(async () => {
const PCR = require("puppeteer-chromium-resolver");
const stats = await PCR();
const browser = await stats.puppeteer.launch({
headless: false,
args: ["--no-sandbox"],
executablePath: stats.executablePath
}).catch(function(error) {
console.log(error);
});
const page = await browser.newPage();
await page.goto("https://www.npmjs.com/package/puppeteer-chromium-resolver");
await browser.close();
})();
```
#### [Sync Case](./test/sync.js): chromium pre-downloaded when installation, just call API PCR.getStats()
```js
(async () => {
const PCR = require("puppeteer-chromium-resolver");
const stats = PCR.getStats();
if (!stats) {
return;
}
const browser = await stats.puppeteer.launch({
headless: false,
args: ["--no-sandbox"],
executablePath: stats.executablePath
}).catch(function(error) {
console.log(error);
});
const page = await browser.newPage();
await page.goto("https://www.npmjs.com/package/puppeteer-chromium-resolver");
await browser.close();
})();
```
## Option
```js
const pcr = await PCR({
const stats = await PCR({
revision: "",

@@ -51,3 +80,3 @@ detectionPath: "",

## Properties
## Return Stats
|Property | Type | |

@@ -62,7 +91,40 @@ | :--------------| :------ | :---------------------- |

|chromiumVersion | String |chromium version |
|puppeteerVersion| String |puppeteer version |
|puppeteer | Object |puppeteer module |
|puppeteerVersion| String |puppeteer version |
## How to make puppeteer work with puppeteer-chromium-resolver
* 1, stop the automatic download of Chromium with config in .npmrc
```
puppeteer_skip_download = true
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = true
```
(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD for puppeteer version 2.x)
* 2, set env PUPPETEER_EXECUTABLE_PATH to PCR executablePath before calling puppeteer.launch()
```js
(async () => {
const PCR = require("puppeteer-chromium-resolver");
const puppeteer = require("puppeteer");
const stats = PCR.getStats();
process.env.PUPPETEER_EXECUTABLE_PATH = stats.executablePath
const browser = await puppeteer.launch({
headless: false
});
const page = await browser.newPage();
await page.goto('https://github.com');
await browser.close();
})();
```
## CHANGELOG
+ v5.0.0
- updated puppeteer-core to v5
- added sync API getStats()
+ v4.0.0

@@ -69,0 +131,0 @@ - updated puppeteer-core to v4

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