puppeteer-core
Advanced tools
Comparing version 4.0.1 to 5.0.0
253
install.js
@@ -28,219 +28,60 @@ /** | ||
const compileTypeScriptIfRequired = require('./typescript-if-required'); | ||
const os = require('os'); | ||
const firefoxVersions = | ||
'https://product-details.mozilla.org/1.0/firefox_versions.json'; | ||
const supportedProducts = { | ||
chrome: 'Chromium', | ||
firefox: 'Firefox Nightly', | ||
}; | ||
async function download() { | ||
await compileTypeScriptIfRequired(); | ||
// need to ensure TS is compiled before loading the installer | ||
const { downloadBrowser, logPolitely } = require('./lib/cjs/install'); | ||
const downloadHost = | ||
process.env.PUPPETEER_DOWNLOAD_HOST || | ||
process.env.npm_config_puppeteer_download_host || | ||
process.env.npm_package_config_puppeteer_download_host; | ||
const puppeteer = require('./index'); | ||
const product = | ||
process.env.PUPPETEER_PRODUCT || | ||
process.env.npm_config_puppeteer_product || | ||
process.env.npm_package_config_puppeteer_product || | ||
'chrome'; | ||
const browserFetcher = puppeteer.createBrowserFetcher({ | ||
product, | ||
host: downloadHost, | ||
}); | ||
const revision = await getRevision(); | ||
await fetchBinary(revision); | ||
function getRevision() { | ||
if (product === 'chrome') { | ||
return ( | ||
process.env.PUPPETEER_CHROMIUM_REVISION || | ||
process.env.npm_config_puppeteer_chromium_revision || | ||
process.env.npm_package_config_puppeteer_chromium_revision || | ||
require('./package.json').puppeteer.chromium_revision | ||
); | ||
} else if (product === 'firefox') { | ||
puppeteer._preferredRevision = require('./package.json').puppeteer.firefox_revision; | ||
return getFirefoxNightlyVersion(browserFetcher.host()).catch((error) => { | ||
console.error(error); | ||
process.exit(1); | ||
}); | ||
} else { | ||
throw new Error(`Unsupported product ${product}`); | ||
} | ||
if (process.env.PUPPETEER_SKIP_DOWNLOAD) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_DOWNLOAD" environment variable was found.' | ||
); | ||
return; | ||
} | ||
function fetchBinary(revision) { | ||
const revisionInfo = browserFetcher.revisionInfo(revision); | ||
// Do nothing if the revision is already downloaded. | ||
if (revisionInfo.local) { | ||
logPolitely( | ||
`${supportedProducts[product]} is already in ${revisionInfo.folderPath}; skipping download.` | ||
); | ||
return; | ||
} | ||
// Override current environment proxy settings with npm configuration, if any. | ||
const NPM_HTTPS_PROXY = | ||
process.env.npm_config_https_proxy || process.env.npm_config_proxy; | ||
const NPM_HTTP_PROXY = | ||
process.env.npm_config_http_proxy || process.env.npm_config_proxy; | ||
const NPM_NO_PROXY = process.env.npm_config_no_proxy; | ||
if (NPM_HTTPS_PROXY) process.env.HTTPS_PROXY = NPM_HTTPS_PROXY; | ||
if (NPM_HTTP_PROXY) process.env.HTTP_PROXY = NPM_HTTP_PROXY; | ||
if (NPM_NO_PROXY) process.env.NO_PROXY = NPM_NO_PROXY; | ||
/** | ||
* @param {!Array<string>} | ||
* @returns {!Promise} | ||
*/ | ||
function onSuccess(localRevisions) { | ||
if (os.arch() !== 'arm64') { | ||
logPolitely( | ||
`${supportedProducts[product]} (${revisionInfo.revision}) downloaded to ${revisionInfo.folderPath}` | ||
); | ||
} | ||
localRevisions = localRevisions.filter( | ||
(revision) => revision !== revisionInfo.revision | ||
); | ||
const cleanupOldVersions = localRevisions.map((revision) => | ||
browserFetcher.remove(revision) | ||
); | ||
Promise.all([...cleanupOldVersions]); | ||
} | ||
/** | ||
* @param {!Error} error | ||
*/ | ||
function onError(error) { | ||
console.error( | ||
`ERROR: Failed to set up ${supportedProducts[product]} r${revision}! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to skip download.` | ||
); | ||
console.error(error); | ||
process.exit(1); | ||
} | ||
let progressBar = null; | ||
let lastDownloadedBytes = 0; | ||
function onProgress(downloadedBytes, totalBytes) { | ||
if (!progressBar) { | ||
const ProgressBar = require('progress'); | ||
progressBar = new ProgressBar( | ||
`Downloading ${ | ||
supportedProducts[product] | ||
} r${revision} - ${toMegabytes(totalBytes)} [:bar] :percent :etas `, | ||
{ | ||
complete: '=', | ||
incomplete: ' ', | ||
width: 20, | ||
total: totalBytes, | ||
} | ||
); | ||
} | ||
const delta = downloadedBytes - lastDownloadedBytes; | ||
lastDownloadedBytes = downloadedBytes; | ||
progressBar.tick(delta); | ||
} | ||
return browserFetcher | ||
.download(revisionInfo.revision, onProgress) | ||
.then(() => browserFetcher.localRevisions()) | ||
.then(onSuccess) | ||
.catch(onError); | ||
if ( | ||
process.env.NPM_CONFIG_PUPPETEER_SKIP_DOWNLOAD || | ||
process.env.npm_config_puppeteer_skip_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_DOWNLOAD" was set in npm config.' | ||
); | ||
return; | ||
} | ||
function toMegabytes(bytes) { | ||
const mb = bytes / 1024 / 1024; | ||
return `${Math.round(mb * 10) / 10} Mb`; | ||
if ( | ||
process.env.NPM_PACKAGE_CONFIG_PUPPETEER_SKIP_DOWNLOAD || | ||
process.env.npm_package_config_puppeteer_skip_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_DOWNLOAD" was set in project config.' | ||
); | ||
return; | ||
} | ||
function getFirefoxNightlyVersion(host) { | ||
const https = require('https'); | ||
const promise = new Promise((resolve, reject) => { | ||
let data = ''; | ||
logPolitely(`Requesting latest Firefox Nightly version from ${host}`); | ||
https | ||
.get(firefoxVersions, (r) => { | ||
if (r.statusCode >= 400) | ||
return reject(new Error(`Got status code ${r.statusCode}`)); | ||
r.on('data', (chunk) => { | ||
data += chunk; | ||
}); | ||
r.on('end', () => { | ||
try { | ||
const versions = JSON.parse(data); | ||
return resolve(versions.FIREFOX_NIGHTLY); | ||
} catch { | ||
return reject(new Error('Firefox version not found')); | ||
} | ||
}); | ||
}) | ||
.on('error', reject); | ||
}); | ||
return promise; | ||
if (process.env.PUPPETEER_SKIP_CHROMIUM_DOWNLOAD) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" environment variable was found.' | ||
); | ||
return; | ||
} | ||
} | ||
if ( | ||
process.env.NPM_CONFIG_PUPPETEER_SKIP_CHROMIUM_DOWNLOAD || | ||
process.env.npm_config_puppeteer_skip_chromium_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" was set in npm config.' | ||
); | ||
return; | ||
} | ||
if ( | ||
process.env.NPM_PACKAGE_CONFIG_PUPPETEER_SKIP_CHROMIUM_DOWNLOAD || | ||
process.env.npm_package_config_puppeteer_skip_chromium_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" was set in project config.' | ||
); | ||
return; | ||
} | ||
function logPolitely(toBeLogged) { | ||
const logLevel = process.env.npm_config_loglevel; | ||
const logLevelDisplay = ['silent', 'error', 'warn'].indexOf(logLevel) > -1; | ||
if (!logLevelDisplay) console.log(toBeLogged); | ||
downloadBrowser(); | ||
} | ||
if (process.env.PUPPETEER_SKIP_DOWNLOAD) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_DOWNLOAD" environment variable was found.' | ||
); | ||
return; | ||
} | ||
if ( | ||
process.env.NPM_CONFIG_PUPPETEER_SKIP_DOWNLOAD || | ||
process.env.npm_config_puppeteer_skip_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_DOWNLOAD" was set in npm config.' | ||
); | ||
return; | ||
} | ||
if ( | ||
process.env.NPM_PACKAGE_CONFIG_PUPPETEER_SKIP_DOWNLOAD || | ||
process.env.npm_package_config_puppeteer_skip_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_DOWNLOAD" was set in project config.' | ||
); | ||
return; | ||
} | ||
if (process.env.PUPPETEER_SKIP_CHROMIUM_DOWNLOAD) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" environment variable was found.' | ||
); | ||
return; | ||
} | ||
if ( | ||
process.env.NPM_CONFIG_PUPPETEER_SKIP_CHROMIUM_DOWNLOAD || | ||
process.env.npm_config_puppeteer_skip_chromium_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" was set in npm config.' | ||
); | ||
return; | ||
} | ||
if ( | ||
process.env.NPM_PACKAGE_CONFIG_PUPPETEER_SKIP_CHROMIUM_DOWNLOAD || | ||
process.env.npm_package_config_puppeteer_skip_chromium_download | ||
) { | ||
logPolitely( | ||
'**INFO** Skipping browser download. "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" was set in project config.' | ||
); | ||
return; | ||
} | ||
download(); |
{ | ||
"name": "puppeteer-core", | ||
"version": "4.0.1", | ||
"version": "5.0.0", | ||
"description": "A high-level API to control headless Chrome over the DevTools Protocol", | ||
"main": "index.js", | ||
"main": "./cjs-entry-core.js", | ||
"repository": "github:puppeteer/puppeteer", | ||
@@ -10,8 +10,4 @@ "engines": { | ||
}, | ||
"puppeteer": { | ||
"chromium_revision": "756035", | ||
"firefox_revision": "latest" | ||
}, | ||
"scripts": { | ||
"unit": "mocha --config mocha-config/puppeteer-unit-tests.js", | ||
"unit": "tsc --version && mocha --config mocha-config/puppeteer-unit-tests.js", | ||
"unit-with-coverage": "cross-env COVERAGE=1 npm run unit", | ||
@@ -31,3 +27,6 @@ "assert-unit-coverage": "cross-env COVERAGE=1 mocha --config mocha-config/coverage-tests.js", | ||
"clean-lib": "rm -rf lib", | ||
"tsc": "npm run clean-lib && tsc --version && tsc -p . && cp src/protocol.d.ts lib/", | ||
"tsc": "npm run clean-lib && tsc --version && npm run tsc-cjs && npm run tsc-esm", | ||
"tsc-cjs": "tsc -p . && cp src/protocol.d.ts lib/cjs", | ||
"tsc-esm": "tsc --build tsconfig-esm.json && cp src/protocol.d.ts lib/esm", | ||
"typecheck": "tsc -p . --noEmit", | ||
"apply-next-version": "node utils/apply_next_version.js", | ||
@@ -38,11 +37,11 @@ "update-protocol-d-ts": "node utils/protocol-types-generator update", | ||
"generate-docs": "npm run tsc && api-extractor run --local --verbose && api-documenter markdown -i temp -o new-docs", | ||
"ensure-new-docs-up-to-date": "npm run generate-docs && exit `git status --porcelain | head -255 | wc -l`" | ||
"ensure-new-docs-up-to-date": "npm run generate-docs && exit `git status --porcelain | head -255 | wc -l`", | ||
"generate-dependency-graph": "echo 'Requires graphviz installed locally!' && depcruise --exclude 'api.ts' --do-not-follow '^node_modules' --output-type dot src/index.ts | dot -T png > dependency-chart.png" | ||
}, | ||
"files": [ | ||
"lib/", | ||
"Errors.js", | ||
"DeviceDescriptors.js", | ||
"index.js", | ||
"install.js", | ||
"typescript-if-required.js" | ||
"typescript-if-required.js", | ||
"cjs-entry.js", | ||
"cjs-entry-core.js" | ||
], | ||
@@ -57,2 +56,3 @@ "author": "The Chromium Authors", | ||
"mitt": "^2.0.1", | ||
"pkg-dir": "^4.2.0", | ||
"progress": "^2.0.1", | ||
@@ -66,7 +66,8 @@ "proxy-from-env": "^1.0.0", | ||
"devDependencies": { | ||
"@microsoft/api-documenter": "^7.8.8", | ||
"@microsoft/api-extractor": "^7.8.8", | ||
"@microsoft/api-documenter": "7.8.14", | ||
"@microsoft/api-extractor": "7.8.12", | ||
"@types/debug": "0.0.31", | ||
"@types/mime": "^2.0.0", | ||
"@types/node": "^10.17.14", | ||
"@types/mocha": "^7.0.2", | ||
"@types/node": "^14.0.13", | ||
"@types/proxy-from-env": "^1.0.1", | ||
@@ -80,2 +81,3 @@ "@types/rimraf": "^2.0.2", | ||
"cross-env": "^5.0.5", | ||
"dependency-cruiser": "^9.7.0", | ||
"eslint": "^6.8.0", | ||
@@ -90,3 +92,3 @@ "eslint-config-prettier": "^6.11.0", | ||
"minimist": "^1.2.0", | ||
"mocha": "^7.1.1", | ||
"mocha": "^8.0.1", | ||
"ncp": "^2.0.0", | ||
@@ -98,3 +100,4 @@ "pixelmatch": "^4.0.2", | ||
"text-diff": "^1.0.1", | ||
"typescript": "3.9.2" | ||
"ts-node": "^8.10.2", | ||
"typescript": "3.9.5" | ||
}, | ||
@@ -101,0 +104,0 @@ "browser": { |
@@ -9,3 +9,3 @@ # Puppeteer | ||
###### [API](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md) | [FAQ](#faq) | [Contributing](https://github.com/puppeteer/puppeteer/blob/main/CONTRIBUTING.md) | [Troubleshooting](https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md) | ||
###### [API](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md) | [FAQ](#faq) | [Contributing](https://github.com/puppeteer/puppeteer/blob/main/CONTRIBUTING.md) | [Troubleshooting](https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md) | ||
@@ -41,3 +41,3 @@ > Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the [DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/). Puppeteer runs [headless](https://developers.google.com/web/updates/2017/04/headless-chrome) by default, but can be configured to run full (non-headless) Chrome or Chromium. | ||
Note: When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win) that is guaranteed to work with the API. To skip the download, or to download a different browser, see [Environment variables](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#environment-variables). | ||
Note: When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win) that is guaranteed to work with the API. To skip the download, or to download a different browser, see [Environment variables](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#environment-variables). | ||
@@ -68,3 +68,3 @@ | ||
Puppeteer will be familiar to people using other browser testing frameworks. You create an instance | ||
of `Browser`, open pages, and then manipulate them with [Puppeteer's API](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#). | ||
of `Browser`, open pages, and then manipulate them with [Puppeteer's API](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#). | ||
@@ -94,3 +94,3 @@ **Example** - navigating to https://example.com and saving a screenshot as *example.png*: | ||
Puppeteer sets an initial page size to 800×600px, which defines the screenshot size. The page size can be customized with [`Page.setViewport()`](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#pagesetviewportviewport). | ||
Puppeteer sets an initial page size to 800×600px, which defines the screenshot size. The page size can be customized with [`Page.setViewport()`](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#pagesetviewportviewport). | ||
@@ -120,3 +120,3 @@ **Example** - create a PDF. | ||
See [`Page.pdf()`](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#pagepdfoptions) for more information about creating pdfs. | ||
See [`Page.pdf()`](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#pagepdfoptions) for more information about creating pdfs. | ||
@@ -156,3 +156,3 @@ **Example** - evaluate script in the context of the page | ||
See [`Page.evaluate()`](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#pageevaluatepagefunction-args) for more information on `evaluate` and related methods like `evaluateOnNewDocument` and `exposeFunction`. | ||
See [`Page.evaluate()`](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#pageevaluatepagefunction-args) for more information on `evaluate` and related methods like `evaluateOnNewDocument` and `exposeFunction`. | ||
@@ -166,3 +166,3 @@ <!-- [END getstarted] --> | ||
Puppeteer launches Chromium in [headless mode](https://developers.google.com/web/updates/2017/04/headless-chrome). To launch a full version of Chromium, set the [`headless` option](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#puppeteerlaunchoptions) when launching a browser: | ||
Puppeteer launches Chromium in [headless mode](https://developers.google.com/web/updates/2017/04/headless-chrome). To launch a full version of Chromium, set the [`headless` option](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#puppeteerlaunchoptions) when launching a browser: | ||
@@ -183,3 +183,3 @@ ```js | ||
You can also use Puppeteer with Firefox Nightly (experimental support). See [`Puppeteer.launch()`](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#puppeteerlaunchoptions) for more information. | ||
You can also use Puppeteer with Firefox Nightly (experimental support). See [`Puppeteer.launch()`](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#puppeteerlaunchoptions) for more information. | ||
@@ -196,3 +196,3 @@ See [`this article`](https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for a description of the differences between Chromium and Chrome. [`This article`](https://chromium.googlesource.com/chromium/src/+/master/docs/chromium_browser_vs_google_chrome.md) describes some differences for Linux users. | ||
- [API Documentation](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md) | ||
- [API Documentation](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md) | ||
- [Examples](https://github.com/puppeteer/puppeteer/tree/main/examples/) | ||
@@ -304,5 +304,21 @@ - [Community list of Puppeteer resources](https://github.com/transitive-bullshit/awesome-puppeteer) | ||
<!-- [END debugging] --> | ||
<!-- [START typescript] --> | ||
## Usage with TypeScript | ||
We have recently completed a migration to move the Puppeteer source code from JavaScript to TypeScript and we're currently working on shipping type definitions for TypeScript with Puppeteer's npm package. | ||
Until this work is complete we recommend installing the Puppeteer type definitions from the [DefinitelyTyped](https://definitelytyped.org/) repository: | ||
```bash | ||
npm install --save-dev @types/puppeteer | ||
``` | ||
The types that you'll see appearing in the Puppeteer source code are based off the great work of those who have contributed to the `@types/puppeteer` package. We really appreciate the hard work those people put in to providing high quality TypeScript definitions for Puppeteer's users. | ||
<!-- [END typescript] --> | ||
## Contributing to Puppeteer | ||
@@ -325,3 +341,3 @@ | ||
From Puppeteer v2.1.0 onwards you can specify [`puppeteer.launch({product: 'firefox'})`](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#puppeteerlaunchoptions) to run your Puppeteer scripts in Firefox Nightly, without any additional custom patches. While [an older experiment](https://www.npmjs.com/package/puppeteer-firefox) required a patched version of Firefox, [the current approach](https://wiki.mozilla.org/Remote) works with “stock” Firefox. | ||
From Puppeteer v2.1.0 onwards you can specify [`puppeteer.launch({product: 'firefox'})`](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#puppeteerlaunchoptions) to run your Puppeteer scripts in Firefox Nightly, without any additional custom patches. While [an older experiment](https://www.npmjs.com/package/puppeteer-firefox) required a patched version of Firefox, [the current approach](https://wiki.mozilla.org/Remote) works with “stock” Firefox. | ||
@@ -378,3 +394,3 @@ We will continue to collaborate with other browser vendors to bring Puppeteer support to browsers such as Safari. | ||
Look for `chromium_revision` in [package.json](https://github.com/puppeteer/puppeteer/blob/main/package.json). To find the corresponding Chromium commit and version number, search for the revision prefixed by an `r` in [OmahaProxy](https://omahaproxy.appspot.com/)'s "Find Releases" section. | ||
Look for the `chromium` entry in [revisions.ts](https://github.com/puppeteer/puppeteer/blob/main/src/revisions.ts). To find the corresponding Chromium commit and version number, search for the revision prefixed by an `r` in [OmahaProxy](https://omahaproxy.appspot.com/)'s "Find Releases" section. | ||
@@ -384,3 +400,3 @@ | ||
Since Firefox support is experimental, Puppeteer downloads the latest [Firefox Nightly](https://wiki.mozilla.org/Nightly) when the `PUPPETEER_PRODUCT` environment variable is set to `firefox`. That's also why the value of `firefox_revision` in [package.json](https://github.com/puppeteer/puppeteer/blob/main/package.json) is `latest` -- Puppeteer isn't tied to a particular Firefox version. | ||
Since Firefox support is experimental, Puppeteer downloads the latest [Firefox Nightly](https://wiki.mozilla.org/Nightly) when the `PUPPETEER_PRODUCT` environment variable is set to `firefox`. That's also why the value of `firefox` in [revisions.ts](https://github.com/puppeteer/puppeteer/blob/main/src/revisions.ts) is `latest` -- Puppeteer isn't tied to a particular Firefox version. | ||
@@ -424,3 +440,3 @@ To fetch Firefox Nightly as part of Puppeteer installation: | ||
* Puppeteer is bundled with Chromium — not Chrome — and so by default, it inherits all of [Chromium's media-related limitations](https://www.chromium.org/audio-video). This means that Puppeteer does not support licensed formats such as AAC or H.264. (However, it is possible to force Puppeteer to use a separately-installed version Chrome instead of Chromium via the [`executablePath` option to `puppeteer.launch`](https://github.com/puppeteer/puppeteer/blob/v4.0.1/docs/api.md#puppeteerlaunchoptions). You should only use this configuration if you need an official release of Chrome that supports these media formats.) | ||
* Puppeteer is bundled with Chromium — not Chrome — and so by default, it inherits all of [Chromium's media-related limitations](https://www.chromium.org/audio-video). This means that Puppeteer does not support licensed formats such as AAC or H.264. (However, it is possible to force Puppeteer to use a separately-installed version Chrome instead of Chromium via the [`executablePath` option to `puppeteer.launch`](https://github.com/puppeteer/puppeteer/blob/v5.0.0/docs/api.md#puppeteerlaunchoptions). You should only use this configuration if you need an official release of Chrome that supports these media formats.) | ||
* Since Puppeteer (in all configurations) controls a desktop version of Chromium/Chrome, features that are only supported by the mobile version of Chrome are not supported. This means that Puppeteer [does not support HTTP Live Streaming (HLS)](https://caniuse.com/#feat=http-live-streaming). | ||
@@ -427,0 +443,0 @@ |
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
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
Network access
Supply chain riskThis module accesses the network.
Found 2 instances 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
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
2399751
309
60809
454
12
33
84
22
+ Addedpkg-dir@^4.2.0
+ Addedfind-up@4.1.0(transitive)
+ Addedlocate-path@5.0.0(transitive)
+ Addedp-limit@2.3.0(transitive)
+ Addedp-locate@4.1.0(transitive)
+ Addedp-try@2.2.0(transitive)
+ Addedpath-exists@4.0.0(transitive)
+ Addedpkg-dir@4.2.0(transitive)