Socket
Socket
Sign inDemoInstall

@puppeteer/browsers

Package Overview
Dependencies
Maintainers
2
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@puppeteer/browsers - npm Package Compare versions

Comparing version 1.0.1 to 1.1.0

29

lib/cjs/browser-data/browser-data.js

@@ -77,2 +77,7 @@ "use strict";

return await firefox.resolveBuildId('FIREFOX_NIGHTLY');
case types_js_1.BrowserTag.BETA:
case types_js_1.BrowserTag.CANARY:
case types_js_1.BrowserTag.DEV:
case types_js_1.BrowserTag.STABLE:
throw new Error(`${tag} is not supported for ${browser}`);
}

@@ -82,4 +87,11 @@ case types_js_1.Browser.CHROME:

case types_js_1.BrowserTag.LATEST:
// In CfT beta is the latest version.
return await chrome.resolveBuildId(platform, 'beta');
return await chrome.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.CANARY);
case types_js_1.BrowserTag.BETA:
return await chrome.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.BETA);
case types_js_1.BrowserTag.CANARY:
return await chrome.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.CANARY);
case types_js_1.BrowserTag.DEV:
return await chrome.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.DEV);
case types_js_1.BrowserTag.STABLE:
return await chrome.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.STABLE);
}

@@ -90,2 +102,7 @@ case types_js_1.Browser.CHROMEDRIVER:

return await chromedriver.resolveBuildId('latest');
case types_js_1.BrowserTag.BETA:
case types_js_1.BrowserTag.CANARY:
case types_js_1.BrowserTag.DEV:
case types_js_1.BrowserTag.STABLE:
throw new Error(`${tag} is not support for ${browser}`);
}

@@ -96,2 +113,10 @@ case types_js_1.Browser.CHROMIUM:

return await chromium.resolveBuildId(platform, 'latest');
case types_js_1.BrowserTag.BETA:
return await chromium.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.BETA);
case types_js_1.BrowserTag.CANARY:
return await chromium.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.CANARY);
case types_js_1.BrowserTag.DEV:
return await chromium.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.DEV);
case types_js_1.BrowserTag.STABLE:
return await chromium.resolveBuildId(platform, types_js_1.ChromeReleaseChannel.STABLE);
}

@@ -98,0 +123,0 @@ }

@@ -20,4 +20,8 @@ /**

export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
export declare function resolveBuildId(platform: BrowserPlatform, channel?: 'beta' | 'stable'): Promise<string>;
export declare function getLastKnownGoodReleaseForChannel(channel: ChromeReleaseChannel): Promise<{
version: string;
revision: string;
}>;
export declare function resolveBuildId(_platform: BrowserPlatform, channel: ChromeReleaseChannel): Promise<string>;
export declare function resolveSystemExecutablePath(platform: BrowserPlatform, channel: ChromeReleaseChannel): string;
//# sourceMappingURL=chrome.d.ts.map

51

lib/cjs/browser-data/chrome.js

@@ -21,3 +21,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveSystemExecutablePath = exports.resolveBuildId = exports.relativeExecutablePath = exports.resolveDownloadPath = exports.resolveDownloadUrl = void 0;
exports.resolveSystemExecutablePath = exports.resolveBuildId = exports.getLastKnownGoodReleaseForChannel = exports.relativeExecutablePath = exports.resolveDownloadPath = exports.resolveDownloadUrl = void 0;
const path_1 = __importDefault(require("path"));

@@ -40,16 +40,2 @@ const httpUtil_js_1 = require("../httpUtil.js");

}
function chromiumDashPlatform(platform) {
switch (platform) {
case types_js_1.BrowserPlatform.LINUX:
return 'linux';
case types_js_1.BrowserPlatform.MAC_ARM:
return 'mac';
case types_js_1.BrowserPlatform.MAC:
return 'mac';
case types_js_1.BrowserPlatform.WIN32:
return 'win';
case types_js_1.BrowserPlatform.WIN64:
return 'win64';
}
}
function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {

@@ -76,27 +62,14 @@ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;

exports.relativeExecutablePath = relativeExecutablePath;
async function resolveBuildId(platform, channel = 'beta') {
return new Promise((resolve, reject) => {
const request = (0, httpUtil_js_1.httpRequest)(new URL(`https://chromiumdash.appspot.com/fetch_releases?platform=${chromiumDashPlatform(platform)}&channel=${channel}`), 'GET', response => {
let data = '';
if (response.statusCode && response.statusCode >= 400) {
return reject(new Error(`Got status code ${response.statusCode}`));
}
response.on('data', chunk => {
data += chunk;
});
response.on('end', () => {
try {
const response = JSON.parse(String(data));
return resolve(response[0].version);
}
catch {
return reject(new Error('Chrome version not found'));
}
});
}, false);
request.on('error', err => {
reject(err);
});
});
async function getLastKnownGoodReleaseForChannel(channel) {
const data = (await (0, httpUtil_js_1.getJSON)(new URL('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json')));
for (const channel of Object.keys(data.channels)) {
data.channels[channel.toLowerCase()] = data.channels[channel];
delete data.channels[channel];
}
return data.channels[channel];
}
exports.getLastKnownGoodReleaseForChannel = getLastKnownGoodReleaseForChannel;
async function resolveBuildId(_platform, channel) {
return (await getLastKnownGoodReleaseForChannel(channel)).version;
}
exports.resolveBuildId = resolveBuildId;

@@ -103,0 +76,0 @@ function resolveSystemExecutablePath(platform, channel) {

@@ -16,3 +16,3 @@ /**

*/
import { BrowserPlatform } from './types.js';
import { BrowserPlatform, ChromeReleaseChannel } from './types.js';
export { resolveSystemExecutablePath } from './chrome.js';

@@ -22,3 +22,3 @@ export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;

export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
export declare function resolveBuildId(platform: BrowserPlatform, _channel?: 'latest'): Promise<string>;
export declare function resolveBuildId(platform: BrowserPlatform, channel?: ChromeReleaseChannel | 'latest'): Promise<string>;
//# sourceMappingURL=chromium.d.ts.map

@@ -24,5 +24,6 @@ "use strict";

const httpUtil_js_1 = require("../httpUtil.js");
const chrome_js_1 = require("./chrome.js");
const types_js_1 = require("./types.js");
var chrome_js_1 = require("./chrome.js");
Object.defineProperty(exports, "resolveSystemExecutablePath", { enumerable: true, get: function () { return chrome_js_1.resolveSystemExecutablePath; } });
var chrome_js_2 = require("./chrome.js");
Object.defineProperty(exports, "resolveSystemExecutablePath", { enumerable: true, get: function () { return chrome_js_2.resolveSystemExecutablePath; } });
function archive(platform, buildId) {

@@ -76,29 +77,9 @@ switch (platform) {

exports.relativeExecutablePath = relativeExecutablePath;
async function resolveBuildId(platform,
// We will need it for other channels/keywords.
_channel = 'latest') {
return new Promise((resolve, reject) => {
const request = (0, httpUtil_js_1.httpRequest)(new URL(`https://storage.googleapis.com/chromium-browser-snapshots/${folder(platform)}/LAST_CHANGE`), 'GET', response => {
let data = '';
if (response.statusCode && response.statusCode >= 400) {
return reject(new Error(`Got status code ${response.statusCode}`));
}
response.on('data', chunk => {
data += chunk;
});
response.on('end', () => {
try {
return resolve(String(data));
}
catch {
return reject(new Error('Chrome version not found'));
}
});
}, false);
request.on('error', err => {
reject(err);
});
});
async function resolveBuildId(platform, channel = 'latest') {
if (channel === 'latest') {
return await (0, httpUtil_js_1.getText)(new URL(`https://storage.googleapis.com/chromium-browser-snapshots/${folder(platform)}/LAST_CHANGE`));
}
return (await (0, chrome_js_1.getLastKnownGoodReleaseForChannel)(channel)).revision;
}
exports.resolveBuildId = resolveBuildId;
//# sourceMappingURL=chromium.js.map

@@ -51,2 +51,6 @@ /**

export declare enum BrowserTag {
CANARY = "canary",
BETA = "beta",
DEV = "dev",
STABLE = "stable",
LATEST = "latest"

@@ -53,0 +57,0 @@ }

@@ -80,2 +80,6 @@ "use strict";

(function (BrowserTag) {
BrowserTag["CANARY"] = "canary";
BrowserTag["BETA"] = "beta";
BrowserTag["DEV"] = "dev";
BrowserTag["STABLE"] = "stable";
BrowserTag["LATEST"] = "latest";

@@ -82,0 +86,0 @@ })(BrowserTag = exports.BrowserTag || (exports.BrowserTag = {}));

@@ -26,2 +26,4 @@ /**

export declare function downloadFile(url: URL, destinationPath: string, progressCallback?: (downloadedBytes: number, totalBytes: number) => void): Promise<void>;
export declare function getJSON(url: URL): Promise<unknown>;
export declare function getText(url: URL): Promise<string>;
//# sourceMappingURL=httpUtil.d.ts.map

@@ -44,3 +44,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.downloadFile = exports.httpRequest = exports.headHttpRequest = void 0;
exports.getText = exports.getJSON = exports.downloadFile = exports.httpRequest = exports.headHttpRequest = void 0;
const fs_1 = require("fs");

@@ -145,2 +145,37 @@ const http = __importStar(require("http"));

exports.downloadFile = downloadFile;
async function getJSON(url) {
const text = await getText(url);
try {
return JSON.parse(text);
}
catch {
throw new Error('Could not parse JSON from ' + url.toString());
}
}
exports.getJSON = getJSON;
function getText(url) {
return new Promise((resolve, reject) => {
const request = httpRequest(url, 'GET', response => {
let data = '';
if (response.statusCode && response.statusCode >= 400) {
return reject(new Error(`Got status code ${response.statusCode}`));
}
response.on('data', chunk => {
data += chunk;
});
response.on('end', () => {
try {
return resolve(String(data));
}
catch {
return reject(new Error('Chrome version not found'));
}
});
}, false);
request.on('error', err => {
reject(err);
});
});
}
exports.getText = getText;
//# sourceMappingURL=httpUtil.js.map

@@ -49,2 +49,7 @@ /**

return await firefox.resolveBuildId('FIREFOX_NIGHTLY');
case BrowserTag.BETA:
case BrowserTag.CANARY:
case BrowserTag.DEV:
case BrowserTag.STABLE:
throw new Error(`${tag} is not supported for ${browser}`);
}

@@ -54,4 +59,11 @@ case Browser.CHROME:

case BrowserTag.LATEST:
// In CfT beta is the latest version.
return await chrome.resolveBuildId(platform, 'beta');
return await chrome.resolveBuildId(platform, ChromeReleaseChannel.CANARY);
case BrowserTag.BETA:
return await chrome.resolveBuildId(platform, ChromeReleaseChannel.BETA);
case BrowserTag.CANARY:
return await chrome.resolveBuildId(platform, ChromeReleaseChannel.CANARY);
case BrowserTag.DEV:
return await chrome.resolveBuildId(platform, ChromeReleaseChannel.DEV);
case BrowserTag.STABLE:
return await chrome.resolveBuildId(platform, ChromeReleaseChannel.STABLE);
}

@@ -62,2 +74,7 @@ case Browser.CHROMEDRIVER:

return await chromedriver.resolveBuildId('latest');
case BrowserTag.BETA:
case BrowserTag.CANARY:
case BrowserTag.DEV:
case BrowserTag.STABLE:
throw new Error(`${tag} is not support for ${browser}`);
}

@@ -68,2 +85,10 @@ case Browser.CHROMIUM:

return await chromium.resolveBuildId(platform, 'latest');
case BrowserTag.BETA:
return await chromium.resolveBuildId(platform, ChromeReleaseChannel.BETA);
case BrowserTag.CANARY:
return await chromium.resolveBuildId(platform, ChromeReleaseChannel.CANARY);
case BrowserTag.DEV:
return await chromium.resolveBuildId(platform, ChromeReleaseChannel.DEV);
case BrowserTag.STABLE:
return await chromium.resolveBuildId(platform, ChromeReleaseChannel.STABLE);
}

@@ -70,0 +95,0 @@ }

@@ -20,4 +20,8 @@ /**

export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
export declare function resolveBuildId(platform: BrowserPlatform, channel?: 'beta' | 'stable'): Promise<string>;
export declare function getLastKnownGoodReleaseForChannel(channel: ChromeReleaseChannel): Promise<{
version: string;
revision: string;
}>;
export declare function resolveBuildId(_platform: BrowserPlatform, channel: ChromeReleaseChannel): Promise<string>;
export declare function resolveSystemExecutablePath(platform: BrowserPlatform, channel: ChromeReleaseChannel): string;
//# sourceMappingURL=chrome.d.ts.map

@@ -17,3 +17,3 @@ /**

import path from 'path';
import { httpRequest } from '../httpUtil.js';
import { getJSON } from '../httpUtil.js';
import { BrowserPlatform, ChromeReleaseChannel } from './types.js';

@@ -34,16 +34,2 @@ function folder(platform) {

}
function chromiumDashPlatform(platform) {
switch (platform) {
case BrowserPlatform.LINUX:
return 'linux';
case BrowserPlatform.MAC_ARM:
return 'mac';
case BrowserPlatform.MAC:
return 'mac';
case BrowserPlatform.WIN32:
return 'win';
case BrowserPlatform.WIN64:
return 'win64';
}
}
export function resolveDownloadUrl(platform, buildId, baseUrl = 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing') {

@@ -67,27 +53,13 @@ return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`;

}
export async function resolveBuildId(platform, channel = 'beta') {
return new Promise((resolve, reject) => {
const request = httpRequest(new URL(`https://chromiumdash.appspot.com/fetch_releases?platform=${chromiumDashPlatform(platform)}&channel=${channel}`), 'GET', response => {
let data = '';
if (response.statusCode && response.statusCode >= 400) {
return reject(new Error(`Got status code ${response.statusCode}`));
}
response.on('data', chunk => {
data += chunk;
});
response.on('end', () => {
try {
const response = JSON.parse(String(data));
return resolve(response[0].version);
}
catch {
return reject(new Error('Chrome version not found'));
}
});
}, false);
request.on('error', err => {
reject(err);
});
});
export async function getLastKnownGoodReleaseForChannel(channel) {
const data = (await getJSON(new URL('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json')));
for (const channel of Object.keys(data.channels)) {
data.channels[channel.toLowerCase()] = data.channels[channel];
delete data.channels[channel];
}
return data.channels[channel];
}
export async function resolveBuildId(_platform, channel) {
return (await getLastKnownGoodReleaseForChannel(channel)).version;
}
export function resolveSystemExecutablePath(platform, channel) {

@@ -94,0 +66,0 @@ switch (platform) {

@@ -16,3 +16,3 @@ /**

*/
import { BrowserPlatform } from './types.js';
import { BrowserPlatform, ChromeReleaseChannel } from './types.js';
export { resolveSystemExecutablePath } from './chrome.js';

@@ -22,3 +22,3 @@ export declare function resolveDownloadUrl(platform: BrowserPlatform, buildId: string, baseUrl?: string): string;

export declare function relativeExecutablePath(platform: BrowserPlatform, _buildId: string): string;
export declare function resolveBuildId(platform: BrowserPlatform, _channel?: 'latest'): Promise<string>;
export declare function resolveBuildId(platform: BrowserPlatform, channel?: ChromeReleaseChannel | 'latest'): Promise<string>;
//# sourceMappingURL=chromium.d.ts.map

@@ -17,3 +17,4 @@ /**

import path from 'path';
import { httpRequest } from '../httpUtil.js';
import { getText } from '../httpUtil.js';
import { getLastKnownGoodReleaseForChannel } from './chrome.js';
import { BrowserPlatform } from './types.js';

@@ -66,28 +67,8 @@ export { resolveSystemExecutablePath } from './chrome.js';

}
export async function resolveBuildId(platform,
// We will need it for other channels/keywords.
_channel = 'latest') {
return new Promise((resolve, reject) => {
const request = httpRequest(new URL(`https://storage.googleapis.com/chromium-browser-snapshots/${folder(platform)}/LAST_CHANGE`), 'GET', response => {
let data = '';
if (response.statusCode && response.statusCode >= 400) {
return reject(new Error(`Got status code ${response.statusCode}`));
}
response.on('data', chunk => {
data += chunk;
});
response.on('end', () => {
try {
return resolve(String(data));
}
catch {
return reject(new Error('Chrome version not found'));
}
});
}, false);
request.on('error', err => {
reject(err);
});
});
export async function resolveBuildId(platform, channel = 'latest') {
if (channel === 'latest') {
return await getText(new URL(`https://storage.googleapis.com/chromium-browser-snapshots/${folder(platform)}/LAST_CHANGE`));
}
return (await getLastKnownGoodReleaseForChannel(channel)).revision;
}
//# sourceMappingURL=chromium.js.map

@@ -51,2 +51,6 @@ /**

export declare enum BrowserTag {
CANARY = "canary",
BETA = "beta",
DEV = "dev",
STABLE = "stable",
LATEST = "latest"

@@ -53,0 +57,0 @@ }

@@ -54,2 +54,6 @@ /**

(function (BrowserTag) {
BrowserTag["CANARY"] = "canary";
BrowserTag["BETA"] = "beta";
BrowserTag["DEV"] = "dev";
BrowserTag["STABLE"] = "stable";
BrowserTag["LATEST"] = "latest";

@@ -56,0 +60,0 @@ })(BrowserTag || (BrowserTag = {}));

@@ -26,2 +26,4 @@ /**

export declare function downloadFile(url: URL, destinationPath: string, progressCallback?: (downloadedBytes: number, totalBytes: number) => void): Promise<void>;
export declare function getJSON(url: URL): Promise<unknown>;
export declare function getText(url: URL): Promise<string>;
//# sourceMappingURL=httpUtil.d.ts.map

@@ -112,2 +112,35 @@ /**

}
export async function getJSON(url) {
const text = await getText(url);
try {
return JSON.parse(text);
}
catch {
throw new Error('Could not parse JSON from ' + url.toString());
}
}
export function getText(url) {
return new Promise((resolve, reject) => {
const request = httpRequest(url, 'GET', response => {
let data = '';
if (response.statusCode && response.statusCode >= 400) {
return reject(new Error(`Got status code ${response.statusCode}`));
}
response.on('data', chunk => {
data += chunk;
});
response.on('end', () => {
try {
return resolve(String(data));
}
catch {
return reject(new Error('Chrome version not found'));
}
});
}, false);
request.on('error', err => {
reject(err);
});
});
}
//# sourceMappingURL=httpUtil.js.map
{
"name": "@puppeteer/browsers",
"version": "1.0.1",
"version": "1.1.0",
"description": "Download and launch browsers",

@@ -5,0 +5,0 @@ "scripts": {

@@ -23,3 +23,3 @@ # @puppeteer/browsers

1. We support installing and running Firefox and Chrome/Chromium. The `latest` keyword only works during the installation. For the `launch` command you need to specify an exact build ID. The build ID is provided by the `install` command (see `npx @puppeteer/browsers install --help` for the format).
1. We support installing and running Firefox, Chrome and Chromium. The `latest`, `beta`, `dev`, `canary`, `stable` keywords are only supported for the install command. For the `launch` command you need to specify an exact build ID. The build ID is provided by the `install` command (see `npx @puppeteer/browsers install --help` for the format).
2. Launching the system browsers is only possible for Chrome/Chromium.

@@ -26,0 +26,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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