├── .gitignore ├── LICENSE ├── README.md ├── handlers ├── FsHandler.js └── index.js ├── index.js ├── package-lock.json ├── package.json └── tests ├── openGoogle.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | tests/images/* 3 | tests/images.txt 4 | 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 shaynet10 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # puppeteer-video-recorder 2 | [Prerequisites](#Prerequisites "Prerequisites") | [Installation](#Installation "Installation") | [Manual](#Manual "Manual") | [FAQ](#FAQ "FAQ") 3 | 4 |
5 | Puppeteer video recorder is a simple Puppeteer's plugin to create automatic videos for every new frame appears in the browser. 6 |
7 | 8 |
10 | It's based on Puppeteer mass screenshots plugin 11 | and therefore doesn't affect Puppeteer's run time. 12 |
13 |So basically, it's fast, and it won't slow your run time
14 | 15 | 16 |In order to use this plugin:
18 |19 |
To install the plugin to your project please use:
29 | 30 | ```javascript 31 | npm install puppeteer-video-recorder 32 | ``` 33 |34 | You'll probably prefer to add it to your package.json file so you can use:
35 | 36 | ``` 37 | npm install --save-prod puppeteer-video-recorder 38 | ``` 39 | 40 | 41 |43 | Once Puppeteer video recorder is installed, you can require it in your project: 44 | 45 | ```javascript 46 | const PuppeteerVideoRecorder = require('puppeteer-video-recorder'); 47 | ``` 48 |
49 |50 | In your constructor create: 51 | 52 | ```javascript 53 | const recorder = new PuppeteerVideoRecorder(); 54 | ``` 55 |
56 | 57 |58 | After you have page object 59 | 60 | ```javascript 61 | await recorder.init(page, videosPath); 62 | ``` 63 |
69 | To start the automatic video recording: 70 | 71 | ```javascript 72 | await recorder.start(); 73 | ``` 74 |
75 | 76 |77 | To stop the automatic video recording: 78 | 79 | ```javascript 80 | await recorder.stop(); 81 | ``` 82 |
83 | Important - call recorder.stop before browser is closed. 84 |
85 | 86 | 87 |91 | Yes, it does. 92 |
93 |94 | it supports Chrome in headless / headful mode. 95 |
96 |97 | It records full length video, of every Chrome browser's frame, even though Chrome is in headless mode. 98 |
99 |Yes, it does.
102 |This plugin is based on Puppeteer mass screenshots plugin which supports redirection. 103 |
104 |No, it doesn't use the window object.
107 |111 | Yes. 112 |
113 |No, it won't.
117 |Feel free to set browser/page/window as you like, it won't be affected by this plugin.
118 |Yes it does.
122 |It is because current FFMPEG command is slow.
126 |We should in the future upload a solution for faster conversion of FFMPEG
127 |Feel free to send us one if you've found something faster and better, we always love to improve.
128 | 129 |Please ensure that you have FFMPEG installed on your PC
131 |run from your cmd / terminal (in linux) the command: ffmpeg --help
132 |If you see results, and don't see "command not found" errors, this plugin should work with your FFMPEG
-------------------------------------------------------------------------------- /handlers/FsHandler.js: -------------------------------------------------------------------------------- 1 | const { appendFile, mkdir, readdir, unlink } = require('fs').promises; 2 | const { openSync, closeSync, existsSync } = require('fs'); 3 | const { join } = require('path'); 4 | 5 | class FsHandler { 6 | async init(outputFolder) { 7 | this.outputFolder = outputFolder; 8 | this.videoFilename = join(this.outputFolder, Date.now() + '.webm'); 9 | this.imagesPath = join(this.outputFolder, 'images'); 10 | this.imagesFilename = join(this.outputFolder, 'images.txt'); 11 | await this.verifyPathExists(this.outputFolder); 12 | await this.verifyPathExists(this.imagesPath); 13 | await this.createEmptyFile(this.imagesFilename, 'file'); 14 | await this.clearImagesInPath(this.imagesPath); 15 | } 16 | 17 | createEmptyFile(filename) { 18 | return closeSync(openSync(filename, 'w')); 19 | } 20 | 21 | createPath(pathToCreate, type = 'folder') { 22 | if (type === 'folder') return mkdir(pathToCreate); 23 | return this.createEmptyFile(pathToCreate); 24 | } 25 | 26 | verifyPathExists(pathToVerify, type = 'folder') { 27 | return existsSync(pathToVerify) || this.createPath(pathToVerify, type); 28 | } 29 | 30 | appendToFile(filename, data) { 31 | return appendFile(filename, data); 32 | } 33 | 34 | async clearImagesInPath(imagesPath) { 35 | const files = await readdir(imagesPath); 36 | console.log(`Removing files in ${imagesPath}`); 37 | for (const file of files) { 38 | const filename = join(imagesPath, file); 39 | console.log(`Removing file ${filename}`); 40 | await unlink(filename); 41 | } 42 | } 43 | } 44 | 45 | module.exports = FsHandler; 46 | -------------------------------------------------------------------------------- /handlers/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | FsHandler: require('./FsHandler.js') 3 | }; 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { FsHandler } = require('./handlers'); 2 | const { exec } = require('child_process'); 3 | const PuppeteerMassScreenshots = require('puppeteer-mass-screenshots'); 4 | 5 | class PuppeteerVideoRecorder { 6 | constructor(){ 7 | this.screenshots = new PuppeteerMassScreenshots(); 8 | this.fsHandler = new FsHandler(); 9 | } 10 | 11 | async init(page, outputFolder){ 12 | this.page = page; 13 | this.outputFolder = outputFolder; 14 | await this.fsHandler.init(outputFolder); 15 | const { imagesPath,imagesFilename, appendToFile } = this.fsHandler; 16 | await this.screenshots.init(page, imagesPath, { 17 | afterWritingImageFile: (filename) => appendToFile(imagesFilename, `file '${filename}'\n`) 18 | }); 19 | } 20 | 21 | start(options = {}) { 22 | return this.screenshots.start(options); 23 | } 24 | 25 | async stop () { 26 | await this.screenshots.stop(); 27 | return this.createVideo(); 28 | } 29 | 30 | get defaultFFMpegCommand() { 31 | const { imagesFilename, videoFilename } = this.fsHandler; 32 | return [ 33 | 'ffmpeg', 34 | '-f concat', 35 | '-safe 0', 36 | `-i ${imagesFilename}`, 37 | '-framerate 60', 38 | videoFilename 39 | ].join(' '); 40 | } 41 | 42 | createVideo(ffmpegCommand = '') { 43 | const _ffmpegCommand = ffmpegCommand || this.defaultFFMpegCommand; 44 | exec(_ffmpegCommand, (error, stdout, stderr) => { 45 | if (error) throw new Error(error); 46 | console.log(stdout); 47 | console.log(stderr); 48 | }); 49 | } 50 | } 51 | 52 | module.exports = PuppeteerVideoRecorder; 53 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppeteer-video-recorder", 3 | "version": "1.0.5", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "version": "1.0.5", 9 | "license": "MIT", 10 | "dependencies": { 11 | "child-process": "^1.0.2", 12 | "fs": "0.0.1-security", 13 | "path": "^0.12.7", 14 | "puppeteer-mass-screenshots": "^1.0.14" 15 | }, 16 | "devDependencies": {} 17 | }, 18 | "node_modules/child-process": { 19 | "version": "1.0.2", 20 | "resolved": "https://registry.npmjs.org/child-process/-/child-process-1.0.2.tgz", 21 | "integrity": "sha1-mJdNx+0e5MYin44wX6cxOmiFp/I=" 22 | }, 23 | "node_modules/fs": { 24 | "version": "0.0.1-security", 25 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 26 | "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" 27 | }, 28 | "node_modules/path": { 29 | "version": "0.12.7", 30 | "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", 31 | "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", 32 | "dependencies": { 33 | "process": "^0.11.1", 34 | "util": "^0.10.3" 35 | } 36 | }, 37 | "node_modules/path/node_modules/inherits": { 38 | "version": "2.0.3", 39 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 40 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 41 | }, 42 | "node_modules/path/node_modules/util": { 43 | "version": "0.10.4", 44 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 45 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 46 | "dependencies": { 47 | "inherits": "2.0.3" 48 | } 49 | }, 50 | "node_modules/process": { 51 | "version": "0.11.10", 52 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 53 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 54 | "engines": { 55 | "node": ">= 0.6.0" 56 | } 57 | }, 58 | "node_modules/puppeteer-mass-screenshots": { 59 | "version": "1.0.14", 60 | "resolved": "https://registry.npmjs.org/puppeteer-mass-screenshots/-/puppeteer-mass-screenshots-1.0.14.tgz", 61 | "integrity": "sha512-5HWI7nseaYYQxlT4DrW/o+0DXQDg1tEAGxSJ4fxXEVBlnNbP+ahtGJYNGG1YBPF0up3VILTOdLq1okYZrkVepw==", 62 | "dependencies": { 63 | "fs": "0.0.1-security", 64 | "path": "^0.12.7" 65 | } 66 | } 67 | }, 68 | "dependencies": { 69 | "child-process": { 70 | "version": "1.0.2", 71 | "resolved": "https://registry.npmjs.org/child-process/-/child-process-1.0.2.tgz", 72 | "integrity": "sha1-mJdNx+0e5MYin44wX6cxOmiFp/I=" 73 | }, 74 | "fs": { 75 | "version": "0.0.1-security", 76 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 77 | "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" 78 | }, 79 | "path": { 80 | "version": "0.12.7", 81 | "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", 82 | "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", 83 | "requires": { 84 | "process": "^0.11.1", 85 | "util": "^0.10.3" 86 | }, 87 | "dependencies": { 88 | "inherits": { 89 | "version": "2.0.3", 90 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 91 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 92 | }, 93 | "util": { 94 | "version": "0.10.4", 95 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 96 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 97 | "requires": { 98 | "inherits": "2.0.3" 99 | } 100 | } 101 | } 102 | }, 103 | "process": { 104 | "version": "0.11.10", 105 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 106 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 107 | }, 108 | "puppeteer-mass-screenshots": { 109 | "version": "1.0.14", 110 | "resolved": "https://registry.npmjs.org/puppeteer-mass-screenshots/-/puppeteer-mass-screenshots-1.0.14.tgz", 111 | "integrity": "sha512-5HWI7nseaYYQxlT4DrW/o+0DXQDg1tEAGxSJ4fxXEVBlnNbP+ahtGJYNGG1YBPF0up3VILTOdLq1okYZrkVepw==", 112 | "requires": { 113 | "fs": "0.0.1-security", 114 | "path": "^0.12.7" 115 | } 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppeteer-video-recorder", 3 | "version": "1.0.5", 4 | "description": "This package creates a video of Puppeteer's page, using Chrome API screencast and ffmpeg", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "cd ./tests; npm test" 8 | }, 9 | "keywords": [ 10 | "cast", 11 | "shot", 12 | "brst", 13 | "video", 14 | "record", 15 | "massive", 16 | "puppeteer", 17 | "pptr", 18 | "pptr.dev", 19 | "mass", 20 | "mas", 21 | "huge", 22 | "img", 23 | "image", 24 | "images", 25 | "screencast", 26 | "screencasts", 27 | "screenshots", 28 | "screenshot", 29 | "chrome", 30 | "api", 31 | "headless", 32 | "headfull", 33 | "automation", 34 | "automatic", 35 | "auto", 36 | "burst", 37 | "video", 38 | "videos", 39 | "record", 40 | "records", 41 | "recording", 42 | "massive" 43 | ], 44 | "author": "Shay Gueta", 45 | "license": "MIT", 46 | "dependencies": { 47 | "child-process": "^1.0.2", 48 | "fs": "0.0.1-security", 49 | "path": "^0.12.7", 50 | "puppeteer-mass-screenshots": "^1.0.14" 51 | }, 52 | "directories": { 53 | "test": "tests" 54 | }, 55 | "devDependencies": {}, 56 | "repository": { 57 | "type": "git", 58 | "url": "git+https://github.com/shaynet10/puppeteer-video-recorder.git" 59 | }, 60 | "bugs": { 61 | "url": "https://github.com/shaynet10/puppeteer-video-recorder/issues" 62 | }, 63 | "homepage": "https://www.npmjs.com/~shay.gueta" 64 | } 65 | -------------------------------------------------------------------------------- /tests/openGoogle.js: -------------------------------------------------------------------------------- 1 | const PuppeteerVideoRecorder = require('../index'); 2 | const puppeteer = require('puppeteer'); 3 | 4 | (async () => { 5 | const browser = await puppeteer.launch({ headless: true }); 6 | const page = (await browser.pages())[0]; 7 | const recorder = new PuppeteerVideoRecorder(); 8 | await recorder.init(page, __dirname); 9 | await page.goto('https://google.com'); 10 | await recorder.start(); 11 | // await page.waitForNavigation({ waitUntil: 'domcontentloaded'}); 12 | const input = await page.$('input[name=q]'); 13 | await input.type('puppetter-mass-screenshots', { delay: 250 }); 14 | await input.press('Enter'); 15 | // await page.waitForNavigation({ waitUntil: 'domcontentloaded' }); 16 | await recorder.stop(); 17 | await browser.close(); 18 | })(); 19 | -------------------------------------------------------------------------------- /tests/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppeteer-video-recording-tests", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "puppeteer-video-recording-tests", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "puppeteer": "^10.1.0" 13 | } 14 | }, 15 | "node_modules/@types/node": { 16 | "version": "16.4.2", 17 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.2.tgz", 18 | "integrity": "sha512-vxyhOzFCm+jC/T5KugbVsYy1DbQM0h3NCFUrVbu0+pYa/nr+heeucpqxpa8j4pUmIGLPYzboY9zIdOF0niFAjQ==", 19 | "optional": true 20 | }, 21 | "node_modules/@types/yauzl": { 22 | "version": "2.9.2", 23 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", 24 | "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", 25 | "optional": true, 26 | "dependencies": { 27 | "@types/node": "*" 28 | } 29 | }, 30 | "node_modules/agent-base": { 31 | "version": "6.0.2", 32 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 33 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 34 | "dependencies": { 35 | "debug": "4" 36 | }, 37 | "engines": { 38 | "node": ">= 6.0.0" 39 | } 40 | }, 41 | "node_modules/balanced-match": { 42 | "version": "1.0.2", 43 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 44 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 45 | }, 46 | "node_modules/base64-js": { 47 | "version": "1.5.1", 48 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 49 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 50 | "funding": [ 51 | { 52 | "type": "github", 53 | "url": "https://github.com/sponsors/feross" 54 | }, 55 | { 56 | "type": "patreon", 57 | "url": "https://www.patreon.com/feross" 58 | }, 59 | { 60 | "type": "consulting", 61 | "url": "https://feross.org/support" 62 | } 63 | ] 64 | }, 65 | "node_modules/bl": { 66 | "version": "4.1.0", 67 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 68 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 69 | "dependencies": { 70 | "buffer": "^5.5.0", 71 | "inherits": "^2.0.4", 72 | "readable-stream": "^3.4.0" 73 | } 74 | }, 75 | "node_modules/brace-expansion": { 76 | "version": "1.1.11", 77 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 78 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 79 | "dependencies": { 80 | "balanced-match": "^1.0.0", 81 | "concat-map": "0.0.1" 82 | } 83 | }, 84 | "node_modules/buffer": { 85 | "version": "5.7.1", 86 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 87 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 88 | "funding": [ 89 | { 90 | "type": "github", 91 | "url": "https://github.com/sponsors/feross" 92 | }, 93 | { 94 | "type": "patreon", 95 | "url": "https://www.patreon.com/feross" 96 | }, 97 | { 98 | "type": "consulting", 99 | "url": "https://feross.org/support" 100 | } 101 | ], 102 | "dependencies": { 103 | "base64-js": "^1.3.1", 104 | "ieee754": "^1.1.13" 105 | } 106 | }, 107 | "node_modules/buffer-crc32": { 108 | "version": "0.2.13", 109 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 110 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 111 | "engines": { 112 | "node": "*" 113 | } 114 | }, 115 | "node_modules/chownr": { 116 | "version": "1.1.4", 117 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 118 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 119 | }, 120 | "node_modules/concat-map": { 121 | "version": "0.0.1", 122 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 123 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 124 | }, 125 | "node_modules/debug": { 126 | "version": "4.3.1", 127 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 128 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 129 | "dependencies": { 130 | "ms": "2.1.2" 131 | }, 132 | "engines": { 133 | "node": ">=6.0" 134 | }, 135 | "peerDependenciesMeta": { 136 | "supports-color": { 137 | "optional": true 138 | } 139 | } 140 | }, 141 | "node_modules/devtools-protocol": { 142 | "version": "0.0.883894", 143 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.883894.tgz", 144 | "integrity": "sha512-33idhm54QJzf3Q7QofMgCvIVSd2o9H3kQPWaKT/fhoZh+digc+WSiMhbkeG3iN79WY4Hwr9G05NpbhEVrsOYAg==" 145 | }, 146 | "node_modules/end-of-stream": { 147 | "version": "1.4.4", 148 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 149 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 150 | "dependencies": { 151 | "once": "^1.4.0" 152 | } 153 | }, 154 | "node_modules/extract-zip": { 155 | "version": "2.0.1", 156 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 157 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 158 | "dependencies": { 159 | "debug": "^4.1.1", 160 | "get-stream": "^5.1.0", 161 | "yauzl": "^2.10.0" 162 | }, 163 | "bin": { 164 | "extract-zip": "cli.js" 165 | }, 166 | "engines": { 167 | "node": ">= 10.17.0" 168 | }, 169 | "optionalDependencies": { 170 | "@types/yauzl": "^2.9.1" 171 | } 172 | }, 173 | "node_modules/fd-slicer": { 174 | "version": "1.1.0", 175 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 176 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 177 | "dependencies": { 178 | "pend": "~1.2.0" 179 | } 180 | }, 181 | "node_modules/find-up": { 182 | "version": "4.1.0", 183 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 184 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 185 | "dependencies": { 186 | "locate-path": "^5.0.0", 187 | "path-exists": "^4.0.0" 188 | }, 189 | "engines": { 190 | "node": ">=8" 191 | } 192 | }, 193 | "node_modules/fs-constants": { 194 | "version": "1.0.0", 195 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 196 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 197 | }, 198 | "node_modules/fs.realpath": { 199 | "version": "1.0.0", 200 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 201 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 202 | }, 203 | "node_modules/get-stream": { 204 | "version": "5.2.0", 205 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 206 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 207 | "dependencies": { 208 | "pump": "^3.0.0" 209 | }, 210 | "engines": { 211 | "node": ">=8" 212 | }, 213 | "funding": { 214 | "url": "https://github.com/sponsors/sindresorhus" 215 | } 216 | }, 217 | "node_modules/glob": { 218 | "version": "7.1.7", 219 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 220 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 221 | "dependencies": { 222 | "fs.realpath": "^1.0.0", 223 | "inflight": "^1.0.4", 224 | "inherits": "2", 225 | "minimatch": "^3.0.4", 226 | "once": "^1.3.0", 227 | "path-is-absolute": "^1.0.0" 228 | }, 229 | "engines": { 230 | "node": "*" 231 | }, 232 | "funding": { 233 | "url": "https://github.com/sponsors/isaacs" 234 | } 235 | }, 236 | "node_modules/https-proxy-agent": { 237 | "version": "5.0.0", 238 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 239 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 240 | "dependencies": { 241 | "agent-base": "6", 242 | "debug": "4" 243 | }, 244 | "engines": { 245 | "node": ">= 6" 246 | } 247 | }, 248 | "node_modules/ieee754": { 249 | "version": "1.2.1", 250 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 251 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 252 | "funding": [ 253 | { 254 | "type": "github", 255 | "url": "https://github.com/sponsors/feross" 256 | }, 257 | { 258 | "type": "patreon", 259 | "url": "https://www.patreon.com/feross" 260 | }, 261 | { 262 | "type": "consulting", 263 | "url": "https://feross.org/support" 264 | } 265 | ] 266 | }, 267 | "node_modules/inflight": { 268 | "version": "1.0.6", 269 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 270 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 271 | "dependencies": { 272 | "once": "^1.3.0", 273 | "wrappy": "1" 274 | } 275 | }, 276 | "node_modules/inherits": { 277 | "version": "2.0.4", 278 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 279 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 280 | }, 281 | "node_modules/locate-path": { 282 | "version": "5.0.0", 283 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 284 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 285 | "dependencies": { 286 | "p-locate": "^4.1.0" 287 | }, 288 | "engines": { 289 | "node": ">=8" 290 | } 291 | }, 292 | "node_modules/minimatch": { 293 | "version": "3.0.4", 294 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 295 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 296 | "dependencies": { 297 | "brace-expansion": "^1.1.7" 298 | }, 299 | "engines": { 300 | "node": "*" 301 | } 302 | }, 303 | "node_modules/minimist": { 304 | "version": "1.2.5", 305 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 306 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 307 | }, 308 | "node_modules/mkdirp": { 309 | "version": "0.5.5", 310 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 311 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 312 | "dependencies": { 313 | "minimist": "^1.2.5" 314 | }, 315 | "bin": { 316 | "mkdirp": "bin/cmd.js" 317 | } 318 | }, 319 | "node_modules/ms": { 320 | "version": "2.1.2", 321 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 322 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 323 | }, 324 | "node_modules/node-fetch": { 325 | "version": "2.6.1", 326 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 327 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", 328 | "engines": { 329 | "node": "4.x || >=6.0.0" 330 | } 331 | }, 332 | "node_modules/once": { 333 | "version": "1.4.0", 334 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 335 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 336 | "dependencies": { 337 | "wrappy": "1" 338 | } 339 | }, 340 | "node_modules/p-limit": { 341 | "version": "2.3.0", 342 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 343 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 344 | "dependencies": { 345 | "p-try": "^2.0.0" 346 | }, 347 | "engines": { 348 | "node": ">=6" 349 | }, 350 | "funding": { 351 | "url": "https://github.com/sponsors/sindresorhus" 352 | } 353 | }, 354 | "node_modules/p-locate": { 355 | "version": "4.1.0", 356 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 357 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 358 | "dependencies": { 359 | "p-limit": "^2.2.0" 360 | }, 361 | "engines": { 362 | "node": ">=8" 363 | } 364 | }, 365 | "node_modules/p-try": { 366 | "version": "2.2.0", 367 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 368 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 369 | "engines": { 370 | "node": ">=6" 371 | } 372 | }, 373 | "node_modules/path-exists": { 374 | "version": "4.0.0", 375 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 376 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 377 | "engines": { 378 | "node": ">=8" 379 | } 380 | }, 381 | "node_modules/path-is-absolute": { 382 | "version": "1.0.1", 383 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 384 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 385 | "engines": { 386 | "node": ">=0.10.0" 387 | } 388 | }, 389 | "node_modules/pend": { 390 | "version": "1.2.0", 391 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 392 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 393 | }, 394 | "node_modules/pkg-dir": { 395 | "version": "4.2.0", 396 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 397 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 398 | "dependencies": { 399 | "find-up": "^4.0.0" 400 | }, 401 | "engines": { 402 | "node": ">=8" 403 | } 404 | }, 405 | "node_modules/progress": { 406 | "version": "2.0.1", 407 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", 408 | "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", 409 | "engines": { 410 | "node": ">=0.4.0" 411 | } 412 | }, 413 | "node_modules/proxy-from-env": { 414 | "version": "1.1.0", 415 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 416 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 417 | }, 418 | "node_modules/pump": { 419 | "version": "3.0.0", 420 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 421 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 422 | "dependencies": { 423 | "end-of-stream": "^1.1.0", 424 | "once": "^1.3.1" 425 | } 426 | }, 427 | "node_modules/puppeteer": { 428 | "version": "10.1.0", 429 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.1.0.tgz", 430 | "integrity": "sha512-bsyDHbFBvbofZ63xqF7hMhuKBX1h4WsqFIAoh1GuHr/Y9cewh+EFNAOdqWSkQRHLiBU/MY6M+8PUnXXjAPtuSg==", 431 | "hasInstallScript": true, 432 | "dependencies": { 433 | "debug": "4.3.1", 434 | "devtools-protocol": "0.0.883894", 435 | "extract-zip": "2.0.1", 436 | "https-proxy-agent": "5.0.0", 437 | "node-fetch": "2.6.1", 438 | "pkg-dir": "4.2.0", 439 | "progress": "2.0.1", 440 | "proxy-from-env": "1.1.0", 441 | "rimraf": "3.0.2", 442 | "tar-fs": "2.0.0", 443 | "unbzip2-stream": "1.3.3", 444 | "ws": "7.4.6" 445 | }, 446 | "engines": { 447 | "node": ">=10.18.1" 448 | } 449 | }, 450 | "node_modules/readable-stream": { 451 | "version": "3.6.0", 452 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 453 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 454 | "dependencies": { 455 | "inherits": "^2.0.3", 456 | "string_decoder": "^1.1.1", 457 | "util-deprecate": "^1.0.1" 458 | }, 459 | "engines": { 460 | "node": ">= 6" 461 | } 462 | }, 463 | "node_modules/rimraf": { 464 | "version": "3.0.2", 465 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 466 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 467 | "dependencies": { 468 | "glob": "^7.1.3" 469 | }, 470 | "bin": { 471 | "rimraf": "bin.js" 472 | }, 473 | "funding": { 474 | "url": "https://github.com/sponsors/isaacs" 475 | } 476 | }, 477 | "node_modules/safe-buffer": { 478 | "version": "5.2.1", 479 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 480 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 481 | "funding": [ 482 | { 483 | "type": "github", 484 | "url": "https://github.com/sponsors/feross" 485 | }, 486 | { 487 | "type": "patreon", 488 | "url": "https://www.patreon.com/feross" 489 | }, 490 | { 491 | "type": "consulting", 492 | "url": "https://feross.org/support" 493 | } 494 | ] 495 | }, 496 | "node_modules/string_decoder": { 497 | "version": "1.3.0", 498 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 499 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 500 | "dependencies": { 501 | "safe-buffer": "~5.2.0" 502 | } 503 | }, 504 | "node_modules/tar-fs": { 505 | "version": "2.0.0", 506 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", 507 | "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", 508 | "dependencies": { 509 | "chownr": "^1.1.1", 510 | "mkdirp": "^0.5.1", 511 | "pump": "^3.0.0", 512 | "tar-stream": "^2.0.0" 513 | } 514 | }, 515 | "node_modules/tar-stream": { 516 | "version": "2.2.0", 517 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 518 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 519 | "dependencies": { 520 | "bl": "^4.0.3", 521 | "end-of-stream": "^1.4.1", 522 | "fs-constants": "^1.0.0", 523 | "inherits": "^2.0.3", 524 | "readable-stream": "^3.1.1" 525 | }, 526 | "engines": { 527 | "node": ">=6" 528 | } 529 | }, 530 | "node_modules/through": { 531 | "version": "2.3.8", 532 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 533 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 534 | }, 535 | "node_modules/unbzip2-stream": { 536 | "version": "1.3.3", 537 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", 538 | "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", 539 | "dependencies": { 540 | "buffer": "^5.2.1", 541 | "through": "^2.3.8" 542 | } 543 | }, 544 | "node_modules/util-deprecate": { 545 | "version": "1.0.2", 546 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 547 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 548 | }, 549 | "node_modules/wrappy": { 550 | "version": "1.0.2", 551 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 552 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 553 | }, 554 | "node_modules/ws": { 555 | "version": "7.4.6", 556 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", 557 | "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", 558 | "engines": { 559 | "node": ">=8.3.0" 560 | }, 561 | "peerDependencies": { 562 | "bufferutil": "^4.0.1", 563 | "utf-8-validate": "^5.0.2" 564 | }, 565 | "peerDependenciesMeta": { 566 | "bufferutil": { 567 | "optional": true 568 | }, 569 | "utf-8-validate": { 570 | "optional": true 571 | } 572 | } 573 | }, 574 | "node_modules/yauzl": { 575 | "version": "2.10.0", 576 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 577 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 578 | "dependencies": { 579 | "buffer-crc32": "~0.2.3", 580 | "fd-slicer": "~1.1.0" 581 | } 582 | } 583 | }, 584 | "dependencies": { 585 | "@types/node": { 586 | "version": "16.4.2", 587 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.2.tgz", 588 | "integrity": "sha512-vxyhOzFCm+jC/T5KugbVsYy1DbQM0h3NCFUrVbu0+pYa/nr+heeucpqxpa8j4pUmIGLPYzboY9zIdOF0niFAjQ==", 589 | "optional": true 590 | }, 591 | "@types/yauzl": { 592 | "version": "2.9.2", 593 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", 594 | "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", 595 | "optional": true, 596 | "requires": { 597 | "@types/node": "*" 598 | } 599 | }, 600 | "agent-base": { 601 | "version": "6.0.2", 602 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 603 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 604 | "requires": { 605 | "debug": "4" 606 | } 607 | }, 608 | "balanced-match": { 609 | "version": "1.0.2", 610 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 611 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 612 | }, 613 | "base64-js": { 614 | "version": "1.5.1", 615 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 616 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 617 | }, 618 | "bl": { 619 | "version": "4.1.0", 620 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 621 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 622 | "requires": { 623 | "buffer": "^5.5.0", 624 | "inherits": "^2.0.4", 625 | "readable-stream": "^3.4.0" 626 | } 627 | }, 628 | "brace-expansion": { 629 | "version": "1.1.11", 630 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 631 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 632 | "requires": { 633 | "balanced-match": "^1.0.0", 634 | "concat-map": "0.0.1" 635 | } 636 | }, 637 | "buffer": { 638 | "version": "5.7.1", 639 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 640 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 641 | "requires": { 642 | "base64-js": "^1.3.1", 643 | "ieee754": "^1.1.13" 644 | } 645 | }, 646 | "buffer-crc32": { 647 | "version": "0.2.13", 648 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 649 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 650 | }, 651 | "chownr": { 652 | "version": "1.1.4", 653 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 654 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 655 | }, 656 | "concat-map": { 657 | "version": "0.0.1", 658 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 659 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 660 | }, 661 | "debug": { 662 | "version": "4.3.1", 663 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 664 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 665 | "requires": { 666 | "ms": "2.1.2" 667 | } 668 | }, 669 | "devtools-protocol": { 670 | "version": "0.0.883894", 671 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.883894.tgz", 672 | "integrity": "sha512-33idhm54QJzf3Q7QofMgCvIVSd2o9H3kQPWaKT/fhoZh+digc+WSiMhbkeG3iN79WY4Hwr9G05NpbhEVrsOYAg==" 673 | }, 674 | "end-of-stream": { 675 | "version": "1.4.4", 676 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 677 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 678 | "requires": { 679 | "once": "^1.4.0" 680 | } 681 | }, 682 | "extract-zip": { 683 | "version": "2.0.1", 684 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 685 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 686 | "requires": { 687 | "@types/yauzl": "^2.9.1", 688 | "debug": "^4.1.1", 689 | "get-stream": "^5.1.0", 690 | "yauzl": "^2.10.0" 691 | } 692 | }, 693 | "fd-slicer": { 694 | "version": "1.1.0", 695 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 696 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 697 | "requires": { 698 | "pend": "~1.2.0" 699 | } 700 | }, 701 | "find-up": { 702 | "version": "4.1.0", 703 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 704 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 705 | "requires": { 706 | "locate-path": "^5.0.0", 707 | "path-exists": "^4.0.0" 708 | } 709 | }, 710 | "fs-constants": { 711 | "version": "1.0.0", 712 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 713 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 714 | }, 715 | "fs.realpath": { 716 | "version": "1.0.0", 717 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 718 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 719 | }, 720 | "get-stream": { 721 | "version": "5.2.0", 722 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 723 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 724 | "requires": { 725 | "pump": "^3.0.0" 726 | } 727 | }, 728 | "glob": { 729 | "version": "7.1.7", 730 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 731 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 732 | "requires": { 733 | "fs.realpath": "^1.0.0", 734 | "inflight": "^1.0.4", 735 | "inherits": "2", 736 | "minimatch": "^3.0.4", 737 | "once": "^1.3.0", 738 | "path-is-absolute": "^1.0.0" 739 | } 740 | }, 741 | "https-proxy-agent": { 742 | "version": "5.0.0", 743 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 744 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 745 | "requires": { 746 | "agent-base": "6", 747 | "debug": "4" 748 | } 749 | }, 750 | "ieee754": { 751 | "version": "1.2.1", 752 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 753 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 754 | }, 755 | "inflight": { 756 | "version": "1.0.6", 757 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 758 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 759 | "requires": { 760 | "once": "^1.3.0", 761 | "wrappy": "1" 762 | } 763 | }, 764 | "inherits": { 765 | "version": "2.0.4", 766 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 767 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 768 | }, 769 | "locate-path": { 770 | "version": "5.0.0", 771 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 772 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 773 | "requires": { 774 | "p-locate": "^4.1.0" 775 | } 776 | }, 777 | "minimatch": { 778 | "version": "3.0.4", 779 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 780 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 781 | "requires": { 782 | "brace-expansion": "^1.1.7" 783 | } 784 | }, 785 | "minimist": { 786 | "version": "1.2.5", 787 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 788 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 789 | }, 790 | "mkdirp": { 791 | "version": "0.5.5", 792 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 793 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 794 | "requires": { 795 | "minimist": "^1.2.5" 796 | } 797 | }, 798 | "ms": { 799 | "version": "2.1.2", 800 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 801 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 802 | }, 803 | "node-fetch": { 804 | "version": "2.6.1", 805 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 806 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 807 | }, 808 | "once": { 809 | "version": "1.4.0", 810 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 811 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 812 | "requires": { 813 | "wrappy": "1" 814 | } 815 | }, 816 | "p-limit": { 817 | "version": "2.3.0", 818 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 819 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 820 | "requires": { 821 | "p-try": "^2.0.0" 822 | } 823 | }, 824 | "p-locate": { 825 | "version": "4.1.0", 826 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 827 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 828 | "requires": { 829 | "p-limit": "^2.2.0" 830 | } 831 | }, 832 | "p-try": { 833 | "version": "2.2.0", 834 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 835 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 836 | }, 837 | "path-exists": { 838 | "version": "4.0.0", 839 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 840 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 841 | }, 842 | "path-is-absolute": { 843 | "version": "1.0.1", 844 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 845 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 846 | }, 847 | "pend": { 848 | "version": "1.2.0", 849 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 850 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 851 | }, 852 | "pkg-dir": { 853 | "version": "4.2.0", 854 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 855 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 856 | "requires": { 857 | "find-up": "^4.0.0" 858 | } 859 | }, 860 | "progress": { 861 | "version": "2.0.1", 862 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", 863 | "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==" 864 | }, 865 | "proxy-from-env": { 866 | "version": "1.1.0", 867 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 868 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 869 | }, 870 | "pump": { 871 | "version": "3.0.0", 872 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 873 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 874 | "requires": { 875 | "end-of-stream": "^1.1.0", 876 | "once": "^1.3.1" 877 | } 878 | }, 879 | "puppeteer": { 880 | "version": "10.1.0", 881 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.1.0.tgz", 882 | "integrity": "sha512-bsyDHbFBvbofZ63xqF7hMhuKBX1h4WsqFIAoh1GuHr/Y9cewh+EFNAOdqWSkQRHLiBU/MY6M+8PUnXXjAPtuSg==", 883 | "requires": { 884 | "debug": "4.3.1", 885 | "devtools-protocol": "0.0.883894", 886 | "extract-zip": "2.0.1", 887 | "https-proxy-agent": "5.0.0", 888 | "node-fetch": "2.6.1", 889 | "pkg-dir": "4.2.0", 890 | "progress": "2.0.1", 891 | "proxy-from-env": "1.1.0", 892 | "rimraf": "3.0.2", 893 | "tar-fs": "2.0.0", 894 | "unbzip2-stream": "1.3.3", 895 | "ws": "7.4.6" 896 | } 897 | }, 898 | "readable-stream": { 899 | "version": "3.6.0", 900 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 901 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 902 | "requires": { 903 | "inherits": "^2.0.3", 904 | "string_decoder": "^1.1.1", 905 | "util-deprecate": "^1.0.1" 906 | } 907 | }, 908 | "rimraf": { 909 | "version": "3.0.2", 910 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 911 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 912 | "requires": { 913 | "glob": "^7.1.3" 914 | } 915 | }, 916 | "safe-buffer": { 917 | "version": "5.2.1", 918 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 919 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 920 | }, 921 | "string_decoder": { 922 | "version": "1.3.0", 923 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 924 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 925 | "requires": { 926 | "safe-buffer": "~5.2.0" 927 | } 928 | }, 929 | "tar-fs": { 930 | "version": "2.0.0", 931 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", 932 | "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", 933 | "requires": { 934 | "chownr": "^1.1.1", 935 | "mkdirp": "^0.5.1", 936 | "pump": "^3.0.0", 937 | "tar-stream": "^2.0.0" 938 | } 939 | }, 940 | "tar-stream": { 941 | "version": "2.2.0", 942 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 943 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 944 | "requires": { 945 | "bl": "^4.0.3", 946 | "end-of-stream": "^1.4.1", 947 | "fs-constants": "^1.0.0", 948 | "inherits": "^2.0.3", 949 | "readable-stream": "^3.1.1" 950 | } 951 | }, 952 | "through": { 953 | "version": "2.3.8", 954 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 955 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 956 | }, 957 | "unbzip2-stream": { 958 | "version": "1.3.3", 959 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", 960 | "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", 961 | "requires": { 962 | "buffer": "^5.2.1", 963 | "through": "^2.3.8" 964 | } 965 | }, 966 | "util-deprecate": { 967 | "version": "1.0.2", 968 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 969 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 970 | }, 971 | "wrappy": { 972 | "version": "1.0.2", 973 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 974 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 975 | }, 976 | "ws": { 977 | "version": "7.4.6", 978 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", 979 | "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", 980 | "requires": {} 981 | }, 982 | "yauzl": { 983 | "version": "2.10.0", 984 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 985 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 986 | "requires": { 987 | "buffer-crc32": "~0.2.3", 988 | "fd-slicer": "~1.1.0" 989 | } 990 | } 991 | } 992 | } 993 | -------------------------------------------------------------------------------- /tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppeteer-video-recording-tests", 3 | "version": "1.0.0", 4 | "description": "The test folder is now separated from the main folder, in order to ansure we don't depend Puppeteer for whoever needs to just use the package as is", 5 | "main": "openGoogle.js", 6 | "scripts": { 7 | "init-images-path": "rm -rf ./images; mkdir -p ./images", 8 | "test": "node ./openGoogle.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/shaynet10/puppeteer-video-recorder.git" 13 | }, 14 | "keywords": [ 15 | "puppeteer", 16 | "mass", 17 | "screenshots", 18 | "video", 19 | "record" 20 | ], 21 | "author": "Shay Gueta", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/shaynet10/puppeteer-video-recorder/issues" 25 | }, 26 | "homepage": "https://github.com/shaynet10/puppeteer-video-recorder#readme", 27 | "dependencies": { 28 | "puppeteer": "^10.1.0" 29 | } 30 | } 31 | --------------------------------------------------------------------------------