Socket
Socket
Sign inDemoInstall

puppeteer-extra-plugin

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

puppeteer-extra-plugin - npm Package Compare versions

Comparing version 2.0.1 to 2.0.2

index.test.js

104

index.js
'use strict'
const debug = require('debug')
const merge = require('merge-deep')

@@ -21,5 +22,3 @@ /**

* class Plugin extends PuppeteerExtraPlugin {
* constructor (opts = { }) {
* super(opts)
* }
* constructor (opts = { }) { super(opts) }
*

@@ -50,5 +49,11 @@ * get name () { return 'hello-world' }

class PuppeteerExtraPlugin {
constructor () {
constructor (opts = {}) {
this._debugBase = debug(`puppeteer-extra-plugin:base:${this.name}`)
this._childClassMembers = []
this._opts = {}
// Deep merge opts with defaults, if available
if (Object.keys(this.defaults).length) {
this._opts = merge(this.defaults, opts)
}
}

@@ -71,2 +76,26 @@

/**
* Plugin defaults (optional).
*
* If defined will be ([deep-](https://github.com/jonschlinkert/merge-deep))merged with the (optional) user supplied options (supplied during plugin instantiation).
*
* The result of merging defaults with user supplied options can be accessed through `this.opts`.
*
* @member {Object}
* @see opts
*
* @example
* get defaults () {
* return {
* stripHeadless: true,
* makeWindows: true,
* customFn: null
* }
* }
*
* // Users can overwrite plugin defaults during instantiation:
* puppeteer.use(require('puppeteer-extra-plugin-foobar')({ makeWindows: false }))
*/
get defaults () { return { } }
/**
* Plugin requirements (optional).

@@ -147,2 +176,20 @@ *

/**
* Access the plugin options (usually the `defaults` merged with user defined options)
*
* To skip the auto-merging of defaults with user supplied opts don't define a `defaults`
* property and set the `this._opts` Object in your plugin constructor directly.
*
* @member {Object}
* @see defaults
*
* @example
* get defaults () { return { foo: "bar" } }
*
* async onPageCreated (page) {
* this.debug(this.opts.foo) // => bar
* }
*/
get opts () { return this._opts }
/**
* Convenience debug logger based on the [debug] module.

@@ -173,2 +220,9 @@ * Will automatically namespace the logging output to the plugin package name.

*
* @example
* async beforeLaunch (options) {
* if (this.opts.flashPluginPath) {
* options.args.push(`--ppapi-flash-path=${this.opts.flashPluginPath}`)
* }
* }
*
* @param {Object} options - Puppeteer launch options

@@ -182,4 +236,25 @@ * @return {Object=}

*
* Note: Don't assume that there will only be a single browser instance during the lifecycle of a plugin.
* It's possible that `pupeeteer.launch` will be called multiple times and more than one browser created.
* In order to make the plugins as stateless as possible don't store a reference to the browser instance
* in the plugin but rather consider alternatives.
*
* E.g. when using `onPageCreated` you can get a browser reference by using `page.browser()`.
*
* Alternatively you could expose a class method that takes a browser instance as a parameter to work with:
*
* ```es6
* const fancyPlugin = require('puppeteer-extra-plugin-fancy')()
* puppeteer.use(fancyPlugin)
* const browser = await puppeteer.launch()
* await fancyPlugin.killBrowser(browser)
* ```
*
* @param {Puppeteer.Browser} browser - The `puppeteer` browser instance.
* @param {Object=} options - The launch options used.
*
* @example
* async afterLaunch (browser, options) {
* this.debug('browser has been launched', options)
* }
*/

@@ -191,3 +266,3 @@ async afterLaunch (browser, options = {}) { }

*
* > NOTE This includes target creations in incognito browser contexts.
* > Note: This includes target creations in incognito browser contexts.
*

@@ -201,5 +276,15 @@ * @param {Puppeteer.Target} target

*
* > NOTE: This includes target creations in incognito browser contexts.
* > Note: This includes page creations in incognito browser contexts.
*
* @param {Puppeteer.Target} target
*
* @example
* async onPageCreated (page) {
* let ua = await page.browser().userAgent()
* if (this.opts.stripHeadless) {
* ua = ua.replace('HeadlessChrome/', 'Chrome/')
* }
* this.debug('new ua', ua)
* await page.setUserAgent(ua)
* }
*/

@@ -211,3 +296,3 @@ async onPageCreated (target) { }

*
* > NOTE: This includes target changes in incognito browser contexts.
* > Note: This includes target changes in incognito browser contexts.
*

@@ -221,3 +306,3 @@ * @param {Puppeteer.Target} target

*
* > NOTE: This includes target destructions in incognito browser contexts.
* > Note: This includes target destructions in incognito browser contexts.
*

@@ -329,3 +414,4 @@ * @param {Puppeteer.Target} target

if (target.type() === 'page') {
await this.onPageCreated(await target.page())
const page = await target.page()
await this.onPageCreated(page)
}

@@ -332,0 +418,0 @@ }

7

package.json
{
"name": "puppeteer-extra-plugin",
"version": "2.0.1",
"version": "2.0.2",
"description": "Base class for puppeteer-extra plugins.",

@@ -11,3 +11,3 @@ "main": "index.js",

"docs": "update-markdown-jsdoc",
"test": "standard"
"test": "ava -v && standard"
},

@@ -34,4 +34,5 @@ "engines": {

"dependencies": {
"debug": "^3.1.0"
"debug": "^3.1.0",
"merge-deep": "^3.0.1"
}
}
# puppeteer-extra-plugin
### Install
## Installation

@@ -9,13 +9,15 @@ ```bash

### API
## API
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
##### Table of Contents
#### Table of Contents
- [PuppeteerExtraPlugin](#puppeteerextraplugin)
- [name](#name)
- [defaults](#defaults)
- [requirements](#requirements)
- [dependencies](#dependencies)
- [data](#data)
- [opts](#opts)
- [debug](#debug)

@@ -33,3 +35,3 @@ - [beforeLaunch](#beforelaunch)

#### [PuppeteerExtraPlugin](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L48-L351)
### [PuppeteerExtraPlugin](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L47-L437)

@@ -47,4 +49,6 @@ Base class for `puppeteer-extra` plugins.

Type: `function ()`
Type: `function (opts)`
- `opts` (optional, default `{}`)
Example:

@@ -57,5 +61,3 @@

class Plugin extends PuppeteerExtraPlugin {
constructor (opts = { }) {
super(opts)
}
constructor (opts = { }) { super(opts) }

@@ -88,3 +90,3 @@ get name () { return 'hello-world' }

##### [name](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L66-L66)
#### [name](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L71-L71)

@@ -108,4 +110,33 @@ Plugin name (required).

##### [requirements](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L91-L91)
#### [defaults](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L95-L95)
- **See: opts**
Plugin defaults (optional).
If defined will be ([deep-](https://github.com/jonschlinkert/merge-deep))merged with the (optional) user supplied options (supplied during plugin instantiation).
The result of merging defaults with user supplied options can be accessed through `this.opts`.
Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)
Example:
```javascript
get defaults () {
return {
stripHeadless: true,
makeWindows: true,
customFn: null
}
}
// Users can overwrite plugin defaults during instantiation:
puppeteer.use(require('puppeteer-extra-plugin-foobar')({ makeWindows: false }))
```
* * *
#### [requirements](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L120-L120)
Plugin requirements (optional).

@@ -139,3 +170,3 @@

##### [dependencies](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L106-L106)
#### [dependencies](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L135-L135)

@@ -159,3 +190,3 @@ Plugin dependencies (optional).

##### [data](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L141-L141)
#### [data](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L170-L170)

@@ -200,4 +231,27 @@ - **See: getDataFromPlugins**

##### [debug](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L161-L161)
#### [opts](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L188-L188)
- **See: defaults**
Access the plugin options (usually the `defaults` merged with user defined options)
To skip the auto-merging of defaults with user supplied opts don't define a `defaults`
property and set the `this._opts` Object in your plugin constructor directly.
Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)
Example:
```javascript
get defaults () { return { foo: "bar" } }
async onPageCreated (page) {
this.debug(this.opts.foo) // => bar
}
```
* * *
#### [debug](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L208-L208)
Convenience debug logger based on the [debug] module.

@@ -226,3 +280,3 @@ Will automatically namespace the logging output to the plugin package name.

##### [beforeLaunch](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L172-L172)
#### [beforeLaunch](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L226-L226)

@@ -238,8 +292,34 @@ Can be used to modify the puppeteer launch options by modifying or returning them.

Example:
```javascript
async beforeLaunch (options) {
if (this.opts.flashPluginPath) {
options.args.push(`--ppapi-flash-path=${this.opts.flashPluginPath}`)
}
}
```
* * *
##### [afterLaunch](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L180-L180)
#### [afterLaunch](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L255-L255)
After the browser has launched.
Note: Don't assume that there will only be a single browser instance during the lifecycle of a plugin.
It's possible that `pupeeteer.launch` will be called multiple times and more than one browser created.
In order to make the plugins as stateless as possible don't store a reference to the browser instance
in the plugin but rather consider alternatives.
E.g. when using `onPageCreated` you can get a browser reference by using `page.browser()`.
Alternatively you could expose a class method that takes a browser instance as a parameter to work with:
```es6
const fancyPlugin = require('puppeteer-extra-plugin-fancy')()
puppeteer.use(fancyPlugin)
const browser = await puppeteer.launch()
await fancyPlugin.killBrowser(browser)
```
Type: `function (browser, options)`

@@ -250,9 +330,17 @@

Example:
```javascript
async afterLaunch (browser, options) {
this.debug('browser has been launched', options)
}
```
* * *
##### [onTargetCreated](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L189-L189)
#### [onTargetCreated](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L264-L264)
Called when a target is created, for example when a new page is opened by window.open or browser.newPage.
> NOTE This includes target creations in incognito browser contexts.
> Note: This includes target creations in incognito browser contexts.

@@ -265,7 +353,7 @@ Type: `function (target)`

##### [onPageCreated](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L198-L198)
#### [onPageCreated](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L283-L283)
Same as `onTargetCreated` but prefiltered to only contain Pages, for convenience.
> NOTE: This includes target creations in incognito browser contexts.
> Note: This includes page creations in incognito browser contexts.

@@ -276,9 +364,22 @@ Type: `function (target)`

Example:
```javascript
async onPageCreated (page) {
let ua = await page.browser().userAgent()
if (this.opts.stripHeadless) {
ua = ua.replace('HeadlessChrome/', 'Chrome/')
}
this.debug('new ua', ua)
await page.setUserAgent(ua)
}
```
* * *
##### [onTargetChanged](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L207-L207)
#### [onTargetChanged](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L292-L292)
Called when the url of a target changes.
> NOTE: This includes target changes in incognito browser contexts.
> Note: This includes target changes in incognito browser contexts.

@@ -291,7 +392,7 @@ Type: `function (target)`

##### [onTargetDestroyed](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L216-L216)
#### [onTargetDestroyed](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L301-L301)
Called when a target is destroyed, for example when a page is closed.
> NOTE: This includes target destructions in incognito browser contexts.
> Note: This includes target destructions in incognito browser contexts.

@@ -304,3 +405,3 @@ Type: `function (target)`

##### [onDisconnected](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L224-L224)
#### [onDisconnected](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L309-L309)

@@ -317,3 +418,3 @@ Called when Puppeteer gets disconnected from the Chromium instance.

##### [onClose](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L233-L233)
#### [onClose](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L318-L318)

@@ -330,3 +431,3 @@ Sometimes `onDisconnected` is not catching all exit scenarios.

##### [onPluginRegistered](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L240-L240)
#### [onPluginRegistered](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L325-L325)

@@ -341,3 +442,3 @@ After the plugin has been registered in `puppeteer-extra`.

##### [getDataFromPlugins](https://github.com/berstend/puppeteer-extra/blob/39bb3948016ab4afc7e6f31459828035c8e8c65c/packages/puppeteer-extra-plugin/index.js#L253-L253)
#### [getDataFromPlugins](https://github.com/berstend/puppeteer-extra/blob/139d9ecf97a46dc383adede213e1a4c707160dca/packages/puppeteer-extra-plugin/index.js#L338-L338)

@@ -344,0 +445,0 @@ - **See: data**

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