├── .gitignore ├── LICENSE ├── README.md ├── index.js ├── package-lock.json ├── package.json └── test.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | user_data -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 dsf 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 | # Snapchat Web Automation 2 | Allows you to automate tasks on Snapchat Web 3 | - [API](#api) 4 | - [Example](#example) 5 | 6 | ## How to authenticate 7 | Once calling the function `Snapchat.Login` we will boot up all the essentials for the client, if you aren't authenticated we will wait for you to log in to your snapchat account before continuing execution of the program. If authentication exists you should still call this function as it handles events etc 8 | > To remove your data delete the `user_data` folder 9 | 10 | --- 11 | 12 | ## API 13 | 14 | ### Get Friend Data 15 | This contains the exact data returned from the snapchat API on friend information. 16 | ```js 17 | Snapchat.friends 18 | ``` 19 | 20 | ### Message Event 21 | Event fires every time a message is sent within the current channel. 22 | ```js 23 | Snapchat.events.on("message") 24 | ``` 25 | 26 | ### (async) Snapchat.Login 27 | This function initializes and loads up snapchat web, if you already authenticated it won't go through the authentication process. 28 | ```js 29 | await Snapchat.Login() : void 30 | ``` 31 | 32 | ### (async) Snapchat.CloseChat 33 | This function closes the current chat active on the browser. 34 | ```js 35 | await Snapchat.CloseChat() : void 36 | ``` 37 | 38 | ### (async) Snapchat.OpenChat 39 | This function opens a chat within the browser. 40 | ```js 41 | await Snapchat.OpenChat() : void 42 | ``` 43 | 44 | ### (async) Snapchat.GetChats 45 | This function returns an array of chat names on your account. 46 | ```js 47 | await Snapchat.GetChats() : [string...] 48 | ``` 49 | 50 | ### (async) Snapchat.GetMessages 51 | This function returns an array of all messages within the current channel. 52 | ```js 53 | await Snapchat.GetMessages(): [{ author: string, content: string }...] 54 | ``` 55 | 56 | ### (async) Snapchat.SendMessage 57 | This function sends a message in the current channel. 58 | ```js 59 | await Snapchat.SendMessage() : void 60 | ``` 61 | 62 | --- 63 | 64 | ## Example 65 | ```js 66 | const Snapchat = require("."); 67 | 68 | (async () => { 69 | const client = await Snapchat.Login(); 70 | const chats = await client.GetChats(); 71 | await client.OpenChat(chats[0]); // open first chat 72 | 73 | // event only fires when a chat is open 74 | client.events.on("message", async (message) => { 75 | console.log(message); 76 | if (message.content === "ping") { 77 | await client.SendMessage("pong!"); 78 | } 79 | }); 80 | })(); 81 | ``` 82 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const puppeteer = require("puppeteer"); 2 | const { existsSync } = require("fs"); 3 | const ncp = require("copy-paste"); 4 | const { EventEmitter } = require("node:events"); 5 | 6 | class SnapchatEvent extends EventEmitter { } 7 | 8 | let page; 9 | let browser; 10 | let inchat; 11 | 12 | const emitter = new SnapchatEvent(); 13 | 14 | module.exports = new class Snapchat { 15 | events = emitter; 16 | 17 | async Login() { 18 | return new Promise(async (resolve) => { 19 | const gbrowser = browser || await puppeteer.launch({ headless: false, userDataDir: "./user_data" }); 20 | const gpage = await gbrowser.newPage(); 21 | 22 | page = gpage; 23 | browser = gbrowser; 24 | 25 | await page.exposeFunction("debug", (...a) => console.log(...a)); 26 | await page.exposeFunction("error", (...a) => console.error(...a)); 27 | await page.goto("https://web.snapchat.com"); 28 | 29 | const friends = await page.waitForResponse((response) => { 30 | return response.url().match("friends"); 31 | }, { timeout: 0 }); 32 | this.friends = await friends.json(); 33 | this._loggedin = true; 34 | 35 | await page.waitForSelector("#root > div.Fpg8t > div.BL7do > nav > div:nth-child(1) > div > div > div:nth-child(1) > div > div.LNwMF", { 36 | visible: true 37 | }); 38 | 39 | let LastMessages; 40 | setInterval(async () => { 41 | if (!inchat) return; 42 | 43 | if (!LastMessages) { 44 | LastMessages = await this.GetMessages(); 45 | return; 46 | } 47 | 48 | const Messages = await this.GetMessages(); 49 | if (Messages.length > LastMessages.length) { 50 | let data = [...Messages].pop(); 51 | data.channel = inchat; 52 | this.events.emit("message", data); 53 | } 54 | 55 | LastMessages = Messages; 56 | }, 10); 57 | 58 | resolve(this); 59 | }) 60 | } 61 | 62 | async CloseChat() { 63 | if (!this._loggedin) { 64 | throw "You need to initialize Snapchat using Snapchat.Login before using this function"; 65 | } 66 | 67 | inchat = false; 68 | return await page.evaluate(() => document.getElementsByClassName("enQRR eKaL7")[0].click()); 69 | } 70 | 71 | async OpenChat(name) { 72 | if (!this._loggedin) { 73 | throw "You need to initialize Snapchat using Snapchat.Login before using this function"; 74 | } 75 | 76 | return new Promise(async (resolve, reject) => { 77 | await page.evaluate((name) => { 78 | let Index = Array.from(document.getElementsByClassName("FiLwP")).findIndex(child => child.textContent === name); 79 | if (Index < 0) return error(`Couldn't find chat "${name}"`); 80 | 81 | document.getElementsByClassName("ReactVirtualized__Grid__innerScrollContainer")[0].children[Index].children[0].click(); 82 | }, name); 83 | 84 | await page.waitForSelector("#root > div.Fpg8t > div.Vbjsg.WJjwl > div > div > div > div.NvRM8") 85 | try { 86 | await page.waitForSelector("#root > div.Fpg8t > div.Vbjsg.WJjwl > div > div > div > div.NvRM8.vhccd > div.IBqK8 > div.ejVI4 > div", { timeout: 2000 }); 87 | await page.click("#root > div.Fpg8t > div.Vbjsg.WJjwl > div > div > div > div.NvRM8.vhccd > div.IBqK8 > div.ejVI4 > div"); 88 | } catch (er) { 89 | console.log(`Was present in ${name}`); 90 | } 91 | 92 | inchat = name; 93 | resolve(); 94 | }); 95 | } 96 | 97 | async GetChats() { 98 | if (!this._loggedin) { 99 | throw "You need to initialize Snapchat using Snapchat.Login before using this function"; 100 | } 101 | 102 | return await page.evaluate(() => { 103 | let chats = []; 104 | for (let chat of document.getElementsByClassName("FiLwP")) { 105 | chats.push(chat.textContent); 106 | } 107 | return chats; 108 | }); 109 | } 110 | 111 | async GetMessages() { 112 | if (!this._loggedin) { 113 | throw "You need to initialize Snapchat using Snapchat.Login before using this function"; 114 | } 115 | 116 | return await page.evaluate(() => { 117 | let msgs = document.getElementsByClassName("T1yt2"); 118 | let data = []; 119 | for (let message of msgs) { 120 | let Author = message.getElementsByClassName("R1ne3") 121 | if (!Author) { 122 | continue; 123 | } 124 | 125 | let embedded = message.getElementsByClassName("bJaPL")[0] 126 | if (!embedded) { 127 | continue; 128 | } 129 | 130 | for (let independant of embedded.children) { 131 | data.push({ 132 | author: Author[0].textContent, 133 | content: independant.textContent 134 | }) 135 | } 136 | } 137 | return data; 138 | }); 139 | } 140 | 141 | async SendMessage(content) { 142 | if (!this._loggedin) { 143 | throw "You need to initialize Snapchat using Snapchat.Login before using this function"; 144 | } 145 | 146 | return new Promise(async (resolve) => { 147 | ncp.copy(content, async function () { 148 | await page.keyboard.down('Control') 149 | await page.keyboard.press('V') 150 | await page.keyboard.up('Control'); 151 | await page.keyboard.down("Enter"); 152 | await page.keyboard.up("Enter"); 153 | resolve(); 154 | }); 155 | }); 156 | } 157 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "snapchatwebautomation", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "snapchatwebautomation", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "copy-paste": "^1.3.0", 13 | "puppeteer": "^19.7.0" 14 | } 15 | }, 16 | "node_modules/@babel/code-frame": { 17 | "version": "7.18.6", 18 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 19 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 20 | "dependencies": { 21 | "@babel/highlight": "^7.18.6" 22 | }, 23 | "engines": { 24 | "node": ">=6.9.0" 25 | } 26 | }, 27 | "node_modules/@babel/helper-validator-identifier": { 28 | "version": "7.19.1", 29 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 30 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 31 | "engines": { 32 | "node": ">=6.9.0" 33 | } 34 | }, 35 | "node_modules/@babel/highlight": { 36 | "version": "7.18.6", 37 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 38 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 39 | "dependencies": { 40 | "@babel/helper-validator-identifier": "^7.18.6", 41 | "chalk": "^2.0.0", 42 | "js-tokens": "^4.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=6.9.0" 46 | } 47 | }, 48 | "node_modules/@types/node": { 49 | "version": "18.13.0", 50 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", 51 | "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==", 52 | "optional": true 53 | }, 54 | "node_modules/@types/yauzl": { 55 | "version": "2.10.0", 56 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 57 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 58 | "optional": true, 59 | "dependencies": { 60 | "@types/node": "*" 61 | } 62 | }, 63 | "node_modules/agent-base": { 64 | "version": "6.0.2", 65 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 66 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 67 | "dependencies": { 68 | "debug": "4" 69 | }, 70 | "engines": { 71 | "node": ">= 6.0.0" 72 | } 73 | }, 74 | "node_modules/ansi-styles": { 75 | "version": "3.2.1", 76 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 77 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 78 | "dependencies": { 79 | "color-convert": "^1.9.0" 80 | }, 81 | "engines": { 82 | "node": ">=4" 83 | } 84 | }, 85 | "node_modules/argparse": { 86 | "version": "2.0.1", 87 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 88 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 89 | }, 90 | "node_modules/balanced-match": { 91 | "version": "1.0.2", 92 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 93 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 94 | }, 95 | "node_modules/base64-js": { 96 | "version": "1.5.1", 97 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 98 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 99 | "funding": [ 100 | { 101 | "type": "github", 102 | "url": "https://github.com/sponsors/feross" 103 | }, 104 | { 105 | "type": "patreon", 106 | "url": "https://www.patreon.com/feross" 107 | }, 108 | { 109 | "type": "consulting", 110 | "url": "https://feross.org/support" 111 | } 112 | ] 113 | }, 114 | "node_modules/bl": { 115 | "version": "4.1.0", 116 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 117 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 118 | "dependencies": { 119 | "buffer": "^5.5.0", 120 | "inherits": "^2.0.4", 121 | "readable-stream": "^3.4.0" 122 | } 123 | }, 124 | "node_modules/brace-expansion": { 125 | "version": "1.1.11", 126 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 127 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 128 | "dependencies": { 129 | "balanced-match": "^1.0.0", 130 | "concat-map": "0.0.1" 131 | } 132 | }, 133 | "node_modules/buffer": { 134 | "version": "5.7.1", 135 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 136 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 137 | "funding": [ 138 | { 139 | "type": "github", 140 | "url": "https://github.com/sponsors/feross" 141 | }, 142 | { 143 | "type": "patreon", 144 | "url": "https://www.patreon.com/feross" 145 | }, 146 | { 147 | "type": "consulting", 148 | "url": "https://feross.org/support" 149 | } 150 | ], 151 | "dependencies": { 152 | "base64-js": "^1.3.1", 153 | "ieee754": "^1.1.13" 154 | } 155 | }, 156 | "node_modules/buffer-crc32": { 157 | "version": "0.2.13", 158 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 159 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 160 | "engines": { 161 | "node": "*" 162 | } 163 | }, 164 | "node_modules/callsites": { 165 | "version": "3.1.0", 166 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 167 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 168 | "engines": { 169 | "node": ">=6" 170 | } 171 | }, 172 | "node_modules/chalk": { 173 | "version": "2.4.2", 174 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 175 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 176 | "dependencies": { 177 | "ansi-styles": "^3.2.1", 178 | "escape-string-regexp": "^1.0.5", 179 | "supports-color": "^5.3.0" 180 | }, 181 | "engines": { 182 | "node": ">=4" 183 | } 184 | }, 185 | "node_modules/chownr": { 186 | "version": "1.1.4", 187 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 188 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 189 | }, 190 | "node_modules/chromium-bidi": { 191 | "version": "0.4.3", 192 | "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.3.tgz", 193 | "integrity": "sha512-A40H1rdpJqkTdnGhnYDzMhtDdIbkXNFj2wgIfivMXL7LyHFDmBtv1hdyycDhnxtYunbPLDZtTs/n+ZT5j7Vnew==", 194 | "peerDependencies": { 195 | "devtools-protocol": "*", 196 | "mitt": "*" 197 | } 198 | }, 199 | "node_modules/color-convert": { 200 | "version": "1.9.3", 201 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 202 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 203 | "dependencies": { 204 | "color-name": "1.1.3" 205 | } 206 | }, 207 | "node_modules/color-name": { 208 | "version": "1.1.3", 209 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 210 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 211 | }, 212 | "node_modules/concat-map": { 213 | "version": "0.0.1", 214 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 215 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 216 | }, 217 | "node_modules/copy-paste": { 218 | "version": "1.3.0", 219 | "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz", 220 | "integrity": "sha512-HA6le4vPZW2EuPFixuGUpVRKPdAmZyRlF30x5lTbfX7xXHN9NwX/+Sff7Getowosoe/lZIFwrjn4hvsYGe2vRw==", 221 | "dependencies": { 222 | "iconv-lite": "^0.4.8" 223 | }, 224 | "optionalDependencies": { 225 | "sync-exec": "~0.6.x" 226 | } 227 | }, 228 | "node_modules/cosmiconfig": { 229 | "version": "8.0.0", 230 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", 231 | "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", 232 | "dependencies": { 233 | "import-fresh": "^3.2.1", 234 | "js-yaml": "^4.1.0", 235 | "parse-json": "^5.0.0", 236 | "path-type": "^4.0.0" 237 | }, 238 | "engines": { 239 | "node": ">=14" 240 | } 241 | }, 242 | "node_modules/cross-fetch": { 243 | "version": "3.1.5", 244 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 245 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 246 | "dependencies": { 247 | "node-fetch": "2.6.7" 248 | } 249 | }, 250 | "node_modules/debug": { 251 | "version": "4.3.4", 252 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 253 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 254 | "dependencies": { 255 | "ms": "2.1.2" 256 | }, 257 | "engines": { 258 | "node": ">=6.0" 259 | }, 260 | "peerDependenciesMeta": { 261 | "supports-color": { 262 | "optional": true 263 | } 264 | } 265 | }, 266 | "node_modules/devtools-protocol": { 267 | "version": "0.0.1094867", 268 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", 269 | "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==" 270 | }, 271 | "node_modules/end-of-stream": { 272 | "version": "1.4.4", 273 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 274 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 275 | "dependencies": { 276 | "once": "^1.4.0" 277 | } 278 | }, 279 | "node_modules/error-ex": { 280 | "version": "1.3.2", 281 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 282 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 283 | "dependencies": { 284 | "is-arrayish": "^0.2.1" 285 | } 286 | }, 287 | "node_modules/escape-string-regexp": { 288 | "version": "1.0.5", 289 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 290 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 291 | "engines": { 292 | "node": ">=0.8.0" 293 | } 294 | }, 295 | "node_modules/extract-zip": { 296 | "version": "2.0.1", 297 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 298 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 299 | "dependencies": { 300 | "debug": "^4.1.1", 301 | "get-stream": "^5.1.0", 302 | "yauzl": "^2.10.0" 303 | }, 304 | "bin": { 305 | "extract-zip": "cli.js" 306 | }, 307 | "engines": { 308 | "node": ">= 10.17.0" 309 | }, 310 | "optionalDependencies": { 311 | "@types/yauzl": "^2.9.1" 312 | } 313 | }, 314 | "node_modules/fd-slicer": { 315 | "version": "1.1.0", 316 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 317 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 318 | "dependencies": { 319 | "pend": "~1.2.0" 320 | } 321 | }, 322 | "node_modules/fs-constants": { 323 | "version": "1.0.0", 324 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 325 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 326 | }, 327 | "node_modules/fs.realpath": { 328 | "version": "1.0.0", 329 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 330 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 331 | }, 332 | "node_modules/get-stream": { 333 | "version": "5.2.0", 334 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 335 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 336 | "dependencies": { 337 | "pump": "^3.0.0" 338 | }, 339 | "engines": { 340 | "node": ">=8" 341 | }, 342 | "funding": { 343 | "url": "https://github.com/sponsors/sindresorhus" 344 | } 345 | }, 346 | "node_modules/glob": { 347 | "version": "7.2.3", 348 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 349 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 350 | "dependencies": { 351 | "fs.realpath": "^1.0.0", 352 | "inflight": "^1.0.4", 353 | "inherits": "2", 354 | "minimatch": "^3.1.1", 355 | "once": "^1.3.0", 356 | "path-is-absolute": "^1.0.0" 357 | }, 358 | "engines": { 359 | "node": "*" 360 | }, 361 | "funding": { 362 | "url": "https://github.com/sponsors/isaacs" 363 | } 364 | }, 365 | "node_modules/has-flag": { 366 | "version": "3.0.0", 367 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 368 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 369 | "engines": { 370 | "node": ">=4" 371 | } 372 | }, 373 | "node_modules/https-proxy-agent": { 374 | "version": "5.0.1", 375 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 376 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 377 | "dependencies": { 378 | "agent-base": "6", 379 | "debug": "4" 380 | }, 381 | "engines": { 382 | "node": ">= 6" 383 | } 384 | }, 385 | "node_modules/iconv-lite": { 386 | "version": "0.4.24", 387 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 388 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 389 | "dependencies": { 390 | "safer-buffer": ">= 2.1.2 < 3" 391 | }, 392 | "engines": { 393 | "node": ">=0.10.0" 394 | } 395 | }, 396 | "node_modules/ieee754": { 397 | "version": "1.2.1", 398 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 399 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 400 | "funding": [ 401 | { 402 | "type": "github", 403 | "url": "https://github.com/sponsors/feross" 404 | }, 405 | { 406 | "type": "patreon", 407 | "url": "https://www.patreon.com/feross" 408 | }, 409 | { 410 | "type": "consulting", 411 | "url": "https://feross.org/support" 412 | } 413 | ] 414 | }, 415 | "node_modules/import-fresh": { 416 | "version": "3.3.0", 417 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 418 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 419 | "dependencies": { 420 | "parent-module": "^1.0.0", 421 | "resolve-from": "^4.0.0" 422 | }, 423 | "engines": { 424 | "node": ">=6" 425 | }, 426 | "funding": { 427 | "url": "https://github.com/sponsors/sindresorhus" 428 | } 429 | }, 430 | "node_modules/inflight": { 431 | "version": "1.0.6", 432 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 433 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 434 | "dependencies": { 435 | "once": "^1.3.0", 436 | "wrappy": "1" 437 | } 438 | }, 439 | "node_modules/inherits": { 440 | "version": "2.0.4", 441 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 442 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 443 | }, 444 | "node_modules/is-arrayish": { 445 | "version": "0.2.1", 446 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 447 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 448 | }, 449 | "node_modules/js-tokens": { 450 | "version": "4.0.0", 451 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 452 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 453 | }, 454 | "node_modules/js-yaml": { 455 | "version": "4.1.0", 456 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 457 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 458 | "dependencies": { 459 | "argparse": "^2.0.1" 460 | }, 461 | "bin": { 462 | "js-yaml": "bin/js-yaml.js" 463 | } 464 | }, 465 | "node_modules/json-parse-even-better-errors": { 466 | "version": "2.3.1", 467 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 468 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 469 | }, 470 | "node_modules/lines-and-columns": { 471 | "version": "1.2.4", 472 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 473 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 474 | }, 475 | "node_modules/minimatch": { 476 | "version": "3.1.2", 477 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 478 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 479 | "dependencies": { 480 | "brace-expansion": "^1.1.7" 481 | }, 482 | "engines": { 483 | "node": "*" 484 | } 485 | }, 486 | "node_modules/mitt": { 487 | "version": "3.0.0", 488 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", 489 | "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", 490 | "peer": true 491 | }, 492 | "node_modules/mkdirp-classic": { 493 | "version": "0.5.3", 494 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 495 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 496 | }, 497 | "node_modules/ms": { 498 | "version": "2.1.2", 499 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 500 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 501 | }, 502 | "node_modules/node-fetch": { 503 | "version": "2.6.7", 504 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 505 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 506 | "dependencies": { 507 | "whatwg-url": "^5.0.0" 508 | }, 509 | "engines": { 510 | "node": "4.x || >=6.0.0" 511 | }, 512 | "peerDependencies": { 513 | "encoding": "^0.1.0" 514 | }, 515 | "peerDependenciesMeta": { 516 | "encoding": { 517 | "optional": true 518 | } 519 | } 520 | }, 521 | "node_modules/once": { 522 | "version": "1.4.0", 523 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 524 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 525 | "dependencies": { 526 | "wrappy": "1" 527 | } 528 | }, 529 | "node_modules/parent-module": { 530 | "version": "1.0.1", 531 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 532 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 533 | "dependencies": { 534 | "callsites": "^3.0.0" 535 | }, 536 | "engines": { 537 | "node": ">=6" 538 | } 539 | }, 540 | "node_modules/parse-json": { 541 | "version": "5.2.0", 542 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 543 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 544 | "dependencies": { 545 | "@babel/code-frame": "^7.0.0", 546 | "error-ex": "^1.3.1", 547 | "json-parse-even-better-errors": "^2.3.0", 548 | "lines-and-columns": "^1.1.6" 549 | }, 550 | "engines": { 551 | "node": ">=8" 552 | }, 553 | "funding": { 554 | "url": "https://github.com/sponsors/sindresorhus" 555 | } 556 | }, 557 | "node_modules/path-is-absolute": { 558 | "version": "1.0.1", 559 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 560 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 561 | "engines": { 562 | "node": ">=0.10.0" 563 | } 564 | }, 565 | "node_modules/path-type": { 566 | "version": "4.0.0", 567 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 568 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 569 | "engines": { 570 | "node": ">=8" 571 | } 572 | }, 573 | "node_modules/pend": { 574 | "version": "1.2.0", 575 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 576 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 577 | }, 578 | "node_modules/progress": { 579 | "version": "2.0.3", 580 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 581 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 582 | "engines": { 583 | "node": ">=0.4.0" 584 | } 585 | }, 586 | "node_modules/proxy-from-env": { 587 | "version": "1.1.0", 588 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 589 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 590 | }, 591 | "node_modules/pump": { 592 | "version": "3.0.0", 593 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 594 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 595 | "dependencies": { 596 | "end-of-stream": "^1.1.0", 597 | "once": "^1.3.1" 598 | } 599 | }, 600 | "node_modules/puppeteer": { 601 | "version": "19.7.0", 602 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.0.tgz", 603 | "integrity": "sha512-ri4XTvTWL09E3L+SNhY9FKRdEOCRhFyyuBppg7D5lk9q4BZKvDWivpjstwmtz5lr8ufxju/jkn9y7uGowISHgw==", 604 | "hasInstallScript": true, 605 | "dependencies": { 606 | "cosmiconfig": "8.0.0", 607 | "https-proxy-agent": "5.0.1", 608 | "progress": "2.0.3", 609 | "proxy-from-env": "1.1.0", 610 | "puppeteer-core": "19.7.0" 611 | }, 612 | "engines": { 613 | "node": ">=14.1.0" 614 | } 615 | }, 616 | "node_modules/puppeteer-core": { 617 | "version": "19.7.0", 618 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.0.tgz", 619 | "integrity": "sha512-BU05W24N+fWudCCeWxv/+R9fnMGmS6HCNPJbieoy0S4yAloVOoVDpOnHV8ZpFTGMPTHQ2EuPyZPWA+idPKO0pw==", 620 | "dependencies": { 621 | "chromium-bidi": "0.4.3", 622 | "cross-fetch": "3.1.5", 623 | "debug": "4.3.4", 624 | "devtools-protocol": "0.0.1094867", 625 | "extract-zip": "2.0.1", 626 | "https-proxy-agent": "5.0.1", 627 | "proxy-from-env": "1.1.0", 628 | "rimraf": "3.0.2", 629 | "tar-fs": "2.1.1", 630 | "unbzip2-stream": "1.4.3", 631 | "ws": "8.11.0" 632 | }, 633 | "engines": { 634 | "node": ">=14.1.0" 635 | }, 636 | "peerDependencies": { 637 | "typescript": ">= 4.7.4" 638 | }, 639 | "peerDependenciesMeta": { 640 | "typescript": { 641 | "optional": true 642 | } 643 | } 644 | }, 645 | "node_modules/readable-stream": { 646 | "version": "3.6.0", 647 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 648 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 649 | "dependencies": { 650 | "inherits": "^2.0.3", 651 | "string_decoder": "^1.1.1", 652 | "util-deprecate": "^1.0.1" 653 | }, 654 | "engines": { 655 | "node": ">= 6" 656 | } 657 | }, 658 | "node_modules/resolve-from": { 659 | "version": "4.0.0", 660 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 661 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 662 | "engines": { 663 | "node": ">=4" 664 | } 665 | }, 666 | "node_modules/rimraf": { 667 | "version": "3.0.2", 668 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 669 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 670 | "dependencies": { 671 | "glob": "^7.1.3" 672 | }, 673 | "bin": { 674 | "rimraf": "bin.js" 675 | }, 676 | "funding": { 677 | "url": "https://github.com/sponsors/isaacs" 678 | } 679 | }, 680 | "node_modules/safe-buffer": { 681 | "version": "5.2.1", 682 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 683 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 684 | "funding": [ 685 | { 686 | "type": "github", 687 | "url": "https://github.com/sponsors/feross" 688 | }, 689 | { 690 | "type": "patreon", 691 | "url": "https://www.patreon.com/feross" 692 | }, 693 | { 694 | "type": "consulting", 695 | "url": "https://feross.org/support" 696 | } 697 | ] 698 | }, 699 | "node_modules/safer-buffer": { 700 | "version": "2.1.2", 701 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 702 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 703 | }, 704 | "node_modules/string_decoder": { 705 | "version": "1.3.0", 706 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 707 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 708 | "dependencies": { 709 | "safe-buffer": "~5.2.0" 710 | } 711 | }, 712 | "node_modules/supports-color": { 713 | "version": "5.5.0", 714 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 715 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 716 | "dependencies": { 717 | "has-flag": "^3.0.0" 718 | }, 719 | "engines": { 720 | "node": ">=4" 721 | } 722 | }, 723 | "node_modules/sync-exec": { 724 | "version": "0.6.2", 725 | "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz", 726 | "integrity": "sha512-FHup6L3hMWn+2asiIC/7kj/3CaMM8aAAKPx62DRk42hQkz4H2yBADR0OnnY8Eh5Bxrzb371aPUfnW4WzAUYItQ==", 727 | "optional": true 728 | }, 729 | "node_modules/tar-fs": { 730 | "version": "2.1.1", 731 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 732 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 733 | "dependencies": { 734 | "chownr": "^1.1.1", 735 | "mkdirp-classic": "^0.5.2", 736 | "pump": "^3.0.0", 737 | "tar-stream": "^2.1.4" 738 | } 739 | }, 740 | "node_modules/tar-stream": { 741 | "version": "2.2.0", 742 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 743 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 744 | "dependencies": { 745 | "bl": "^4.0.3", 746 | "end-of-stream": "^1.4.1", 747 | "fs-constants": "^1.0.0", 748 | "inherits": "^2.0.3", 749 | "readable-stream": "^3.1.1" 750 | }, 751 | "engines": { 752 | "node": ">=6" 753 | } 754 | }, 755 | "node_modules/through": { 756 | "version": "2.3.8", 757 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 758 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 759 | }, 760 | "node_modules/tr46": { 761 | "version": "0.0.3", 762 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 763 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 764 | }, 765 | "node_modules/unbzip2-stream": { 766 | "version": "1.4.3", 767 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 768 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 769 | "dependencies": { 770 | "buffer": "^5.2.1", 771 | "through": "^2.3.8" 772 | } 773 | }, 774 | "node_modules/util-deprecate": { 775 | "version": "1.0.2", 776 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 777 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 778 | }, 779 | "node_modules/webidl-conversions": { 780 | "version": "3.0.1", 781 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 782 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 783 | }, 784 | "node_modules/whatwg-url": { 785 | "version": "5.0.0", 786 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 787 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 788 | "dependencies": { 789 | "tr46": "~0.0.3", 790 | "webidl-conversions": "^3.0.0" 791 | } 792 | }, 793 | "node_modules/wrappy": { 794 | "version": "1.0.2", 795 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 796 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 797 | }, 798 | "node_modules/ws": { 799 | "version": "8.11.0", 800 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", 801 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", 802 | "engines": { 803 | "node": ">=10.0.0" 804 | }, 805 | "peerDependencies": { 806 | "bufferutil": "^4.0.1", 807 | "utf-8-validate": "^5.0.2" 808 | }, 809 | "peerDependenciesMeta": { 810 | "bufferutil": { 811 | "optional": true 812 | }, 813 | "utf-8-validate": { 814 | "optional": true 815 | } 816 | } 817 | }, 818 | "node_modules/yauzl": { 819 | "version": "2.10.0", 820 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 821 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 822 | "dependencies": { 823 | "buffer-crc32": "~0.2.3", 824 | "fd-slicer": "~1.1.0" 825 | } 826 | } 827 | }, 828 | "dependencies": { 829 | "@babel/code-frame": { 830 | "version": "7.18.6", 831 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 832 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 833 | "requires": { 834 | "@babel/highlight": "^7.18.6" 835 | } 836 | }, 837 | "@babel/helper-validator-identifier": { 838 | "version": "7.19.1", 839 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 840 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" 841 | }, 842 | "@babel/highlight": { 843 | "version": "7.18.6", 844 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 845 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 846 | "requires": { 847 | "@babel/helper-validator-identifier": "^7.18.6", 848 | "chalk": "^2.0.0", 849 | "js-tokens": "^4.0.0" 850 | } 851 | }, 852 | "@types/node": { 853 | "version": "18.13.0", 854 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", 855 | "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==", 856 | "optional": true 857 | }, 858 | "@types/yauzl": { 859 | "version": "2.10.0", 860 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 861 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 862 | "optional": true, 863 | "requires": { 864 | "@types/node": "*" 865 | } 866 | }, 867 | "agent-base": { 868 | "version": "6.0.2", 869 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 870 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 871 | "requires": { 872 | "debug": "4" 873 | } 874 | }, 875 | "ansi-styles": { 876 | "version": "3.2.1", 877 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 878 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 879 | "requires": { 880 | "color-convert": "^1.9.0" 881 | } 882 | }, 883 | "argparse": { 884 | "version": "2.0.1", 885 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 886 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 887 | }, 888 | "balanced-match": { 889 | "version": "1.0.2", 890 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 891 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 892 | }, 893 | "base64-js": { 894 | "version": "1.5.1", 895 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 896 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 897 | }, 898 | "bl": { 899 | "version": "4.1.0", 900 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 901 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 902 | "requires": { 903 | "buffer": "^5.5.0", 904 | "inherits": "^2.0.4", 905 | "readable-stream": "^3.4.0" 906 | } 907 | }, 908 | "brace-expansion": { 909 | "version": "1.1.11", 910 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 911 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 912 | "requires": { 913 | "balanced-match": "^1.0.0", 914 | "concat-map": "0.0.1" 915 | } 916 | }, 917 | "buffer": { 918 | "version": "5.7.1", 919 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 920 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 921 | "requires": { 922 | "base64-js": "^1.3.1", 923 | "ieee754": "^1.1.13" 924 | } 925 | }, 926 | "buffer-crc32": { 927 | "version": "0.2.13", 928 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 929 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" 930 | }, 931 | "callsites": { 932 | "version": "3.1.0", 933 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 934 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 935 | }, 936 | "chalk": { 937 | "version": "2.4.2", 938 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 939 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 940 | "requires": { 941 | "ansi-styles": "^3.2.1", 942 | "escape-string-regexp": "^1.0.5", 943 | "supports-color": "^5.3.0" 944 | } 945 | }, 946 | "chownr": { 947 | "version": "1.1.4", 948 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 949 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 950 | }, 951 | "chromium-bidi": { 952 | "version": "0.4.3", 953 | "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.3.tgz", 954 | "integrity": "sha512-A40H1rdpJqkTdnGhnYDzMhtDdIbkXNFj2wgIfivMXL7LyHFDmBtv1hdyycDhnxtYunbPLDZtTs/n+ZT5j7Vnew==", 955 | "requires": {} 956 | }, 957 | "color-convert": { 958 | "version": "1.9.3", 959 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 960 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 961 | "requires": { 962 | "color-name": "1.1.3" 963 | } 964 | }, 965 | "color-name": { 966 | "version": "1.1.3", 967 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 968 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 969 | }, 970 | "concat-map": { 971 | "version": "0.0.1", 972 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 973 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 974 | }, 975 | "copy-paste": { 976 | "version": "1.3.0", 977 | "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz", 978 | "integrity": "sha512-HA6le4vPZW2EuPFixuGUpVRKPdAmZyRlF30x5lTbfX7xXHN9NwX/+Sff7Getowosoe/lZIFwrjn4hvsYGe2vRw==", 979 | "requires": { 980 | "iconv-lite": "^0.4.8", 981 | "sync-exec": "~0.6.x" 982 | } 983 | }, 984 | "cosmiconfig": { 985 | "version": "8.0.0", 986 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", 987 | "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", 988 | "requires": { 989 | "import-fresh": "^3.2.1", 990 | "js-yaml": "^4.1.0", 991 | "parse-json": "^5.0.0", 992 | "path-type": "^4.0.0" 993 | } 994 | }, 995 | "cross-fetch": { 996 | "version": "3.1.5", 997 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 998 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 999 | "requires": { 1000 | "node-fetch": "2.6.7" 1001 | } 1002 | }, 1003 | "debug": { 1004 | "version": "4.3.4", 1005 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1006 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1007 | "requires": { 1008 | "ms": "2.1.2" 1009 | } 1010 | }, 1011 | "devtools-protocol": { 1012 | "version": "0.0.1094867", 1013 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", 1014 | "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==" 1015 | }, 1016 | "end-of-stream": { 1017 | "version": "1.4.4", 1018 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1019 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1020 | "requires": { 1021 | "once": "^1.4.0" 1022 | } 1023 | }, 1024 | "error-ex": { 1025 | "version": "1.3.2", 1026 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1027 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1028 | "requires": { 1029 | "is-arrayish": "^0.2.1" 1030 | } 1031 | }, 1032 | "escape-string-regexp": { 1033 | "version": "1.0.5", 1034 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1035 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 1036 | }, 1037 | "extract-zip": { 1038 | "version": "2.0.1", 1039 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 1040 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 1041 | "requires": { 1042 | "@types/yauzl": "^2.9.1", 1043 | "debug": "^4.1.1", 1044 | "get-stream": "^5.1.0", 1045 | "yauzl": "^2.10.0" 1046 | } 1047 | }, 1048 | "fd-slicer": { 1049 | "version": "1.1.0", 1050 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 1051 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 1052 | "requires": { 1053 | "pend": "~1.2.0" 1054 | } 1055 | }, 1056 | "fs-constants": { 1057 | "version": "1.0.0", 1058 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1059 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 1060 | }, 1061 | "fs.realpath": { 1062 | "version": "1.0.0", 1063 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1064 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 1065 | }, 1066 | "get-stream": { 1067 | "version": "5.2.0", 1068 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1069 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1070 | "requires": { 1071 | "pump": "^3.0.0" 1072 | } 1073 | }, 1074 | "glob": { 1075 | "version": "7.2.3", 1076 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1077 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1078 | "requires": { 1079 | "fs.realpath": "^1.0.0", 1080 | "inflight": "^1.0.4", 1081 | "inherits": "2", 1082 | "minimatch": "^3.1.1", 1083 | "once": "^1.3.0", 1084 | "path-is-absolute": "^1.0.0" 1085 | } 1086 | }, 1087 | "has-flag": { 1088 | "version": "3.0.0", 1089 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1090 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1091 | }, 1092 | "https-proxy-agent": { 1093 | "version": "5.0.1", 1094 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1095 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1096 | "requires": { 1097 | "agent-base": "6", 1098 | "debug": "4" 1099 | } 1100 | }, 1101 | "iconv-lite": { 1102 | "version": "0.4.24", 1103 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1104 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1105 | "requires": { 1106 | "safer-buffer": ">= 2.1.2 < 3" 1107 | } 1108 | }, 1109 | "ieee754": { 1110 | "version": "1.2.1", 1111 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1112 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1113 | }, 1114 | "import-fresh": { 1115 | "version": "3.3.0", 1116 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1117 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1118 | "requires": { 1119 | "parent-module": "^1.0.0", 1120 | "resolve-from": "^4.0.0" 1121 | } 1122 | }, 1123 | "inflight": { 1124 | "version": "1.0.6", 1125 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1126 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1127 | "requires": { 1128 | "once": "^1.3.0", 1129 | "wrappy": "1" 1130 | } 1131 | }, 1132 | "inherits": { 1133 | "version": "2.0.4", 1134 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1135 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1136 | }, 1137 | "is-arrayish": { 1138 | "version": "0.2.1", 1139 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1140 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 1141 | }, 1142 | "js-tokens": { 1143 | "version": "4.0.0", 1144 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1145 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1146 | }, 1147 | "js-yaml": { 1148 | "version": "4.1.0", 1149 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1150 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1151 | "requires": { 1152 | "argparse": "^2.0.1" 1153 | } 1154 | }, 1155 | "json-parse-even-better-errors": { 1156 | "version": "2.3.1", 1157 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1158 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1159 | }, 1160 | "lines-and-columns": { 1161 | "version": "1.2.4", 1162 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1163 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 1164 | }, 1165 | "minimatch": { 1166 | "version": "3.1.2", 1167 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1168 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1169 | "requires": { 1170 | "brace-expansion": "^1.1.7" 1171 | } 1172 | }, 1173 | "mitt": { 1174 | "version": "3.0.0", 1175 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", 1176 | "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", 1177 | "peer": true 1178 | }, 1179 | "mkdirp-classic": { 1180 | "version": "0.5.3", 1181 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1182 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 1183 | }, 1184 | "ms": { 1185 | "version": "2.1.2", 1186 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1187 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1188 | }, 1189 | "node-fetch": { 1190 | "version": "2.6.7", 1191 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1192 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1193 | "requires": { 1194 | "whatwg-url": "^5.0.0" 1195 | } 1196 | }, 1197 | "once": { 1198 | "version": "1.4.0", 1199 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1200 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1201 | "requires": { 1202 | "wrappy": "1" 1203 | } 1204 | }, 1205 | "parent-module": { 1206 | "version": "1.0.1", 1207 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1208 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1209 | "requires": { 1210 | "callsites": "^3.0.0" 1211 | } 1212 | }, 1213 | "parse-json": { 1214 | "version": "5.2.0", 1215 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1216 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1217 | "requires": { 1218 | "@babel/code-frame": "^7.0.0", 1219 | "error-ex": "^1.3.1", 1220 | "json-parse-even-better-errors": "^2.3.0", 1221 | "lines-and-columns": "^1.1.6" 1222 | } 1223 | }, 1224 | "path-is-absolute": { 1225 | "version": "1.0.1", 1226 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1227 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1228 | }, 1229 | "path-type": { 1230 | "version": "4.0.0", 1231 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1232 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 1233 | }, 1234 | "pend": { 1235 | "version": "1.2.0", 1236 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1237 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 1238 | }, 1239 | "progress": { 1240 | "version": "2.0.3", 1241 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1242 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1243 | }, 1244 | "proxy-from-env": { 1245 | "version": "1.1.0", 1246 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1247 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1248 | }, 1249 | "pump": { 1250 | "version": "3.0.0", 1251 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1252 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1253 | "requires": { 1254 | "end-of-stream": "^1.1.0", 1255 | "once": "^1.3.1" 1256 | } 1257 | }, 1258 | "puppeteer": { 1259 | "version": "19.7.0", 1260 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.0.tgz", 1261 | "integrity": "sha512-ri4XTvTWL09E3L+SNhY9FKRdEOCRhFyyuBppg7D5lk9q4BZKvDWivpjstwmtz5lr8ufxju/jkn9y7uGowISHgw==", 1262 | "requires": { 1263 | "cosmiconfig": "8.0.0", 1264 | "https-proxy-agent": "5.0.1", 1265 | "progress": "2.0.3", 1266 | "proxy-from-env": "1.1.0", 1267 | "puppeteer-core": "19.7.0" 1268 | } 1269 | }, 1270 | "puppeteer-core": { 1271 | "version": "19.7.0", 1272 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.0.tgz", 1273 | "integrity": "sha512-BU05W24N+fWudCCeWxv/+R9fnMGmS6HCNPJbieoy0S4yAloVOoVDpOnHV8ZpFTGMPTHQ2EuPyZPWA+idPKO0pw==", 1274 | "requires": { 1275 | "chromium-bidi": "0.4.3", 1276 | "cross-fetch": "3.1.5", 1277 | "debug": "4.3.4", 1278 | "devtools-protocol": "0.0.1094867", 1279 | "extract-zip": "2.0.1", 1280 | "https-proxy-agent": "5.0.1", 1281 | "proxy-from-env": "1.1.0", 1282 | "rimraf": "3.0.2", 1283 | "tar-fs": "2.1.1", 1284 | "unbzip2-stream": "1.4.3", 1285 | "ws": "8.11.0" 1286 | } 1287 | }, 1288 | "readable-stream": { 1289 | "version": "3.6.0", 1290 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1291 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1292 | "requires": { 1293 | "inherits": "^2.0.3", 1294 | "string_decoder": "^1.1.1", 1295 | "util-deprecate": "^1.0.1" 1296 | } 1297 | }, 1298 | "resolve-from": { 1299 | "version": "4.0.0", 1300 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1301 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1302 | }, 1303 | "rimraf": { 1304 | "version": "3.0.2", 1305 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1306 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1307 | "requires": { 1308 | "glob": "^7.1.3" 1309 | } 1310 | }, 1311 | "safe-buffer": { 1312 | "version": "5.2.1", 1313 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1314 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1315 | }, 1316 | "safer-buffer": { 1317 | "version": "2.1.2", 1318 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1319 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1320 | }, 1321 | "string_decoder": { 1322 | "version": "1.3.0", 1323 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1324 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1325 | "requires": { 1326 | "safe-buffer": "~5.2.0" 1327 | } 1328 | }, 1329 | "supports-color": { 1330 | "version": "5.5.0", 1331 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1332 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1333 | "requires": { 1334 | "has-flag": "^3.0.0" 1335 | } 1336 | }, 1337 | "sync-exec": { 1338 | "version": "0.6.2", 1339 | "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz", 1340 | "integrity": "sha512-FHup6L3hMWn+2asiIC/7kj/3CaMM8aAAKPx62DRk42hQkz4H2yBADR0OnnY8Eh5Bxrzb371aPUfnW4WzAUYItQ==", 1341 | "optional": true 1342 | }, 1343 | "tar-fs": { 1344 | "version": "2.1.1", 1345 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 1346 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 1347 | "requires": { 1348 | "chownr": "^1.1.1", 1349 | "mkdirp-classic": "^0.5.2", 1350 | "pump": "^3.0.0", 1351 | "tar-stream": "^2.1.4" 1352 | } 1353 | }, 1354 | "tar-stream": { 1355 | "version": "2.2.0", 1356 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 1357 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 1358 | "requires": { 1359 | "bl": "^4.0.3", 1360 | "end-of-stream": "^1.4.1", 1361 | "fs-constants": "^1.0.0", 1362 | "inherits": "^2.0.3", 1363 | "readable-stream": "^3.1.1" 1364 | } 1365 | }, 1366 | "through": { 1367 | "version": "2.3.8", 1368 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1369 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 1370 | }, 1371 | "tr46": { 1372 | "version": "0.0.3", 1373 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1374 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1375 | }, 1376 | "unbzip2-stream": { 1377 | "version": "1.4.3", 1378 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 1379 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 1380 | "requires": { 1381 | "buffer": "^5.2.1", 1382 | "through": "^2.3.8" 1383 | } 1384 | }, 1385 | "util-deprecate": { 1386 | "version": "1.0.2", 1387 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1388 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1389 | }, 1390 | "webidl-conversions": { 1391 | "version": "3.0.1", 1392 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1393 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1394 | }, 1395 | "whatwg-url": { 1396 | "version": "5.0.0", 1397 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1398 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1399 | "requires": { 1400 | "tr46": "~0.0.3", 1401 | "webidl-conversions": "^3.0.0" 1402 | } 1403 | }, 1404 | "wrappy": { 1405 | "version": "1.0.2", 1406 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1407 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1408 | }, 1409 | "ws": { 1410 | "version": "8.11.0", 1411 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", 1412 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", 1413 | "requires": {} 1414 | }, 1415 | "yauzl": { 1416 | "version": "2.10.0", 1417 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1418 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 1419 | "requires": { 1420 | "buffer-crc32": "~0.2.3", 1421 | "fd-slicer": "~1.1.0" 1422 | } 1423 | } 1424 | } 1425 | } 1426 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "snapchatwebautomation", 3 | "version": "1.0.0", 4 | "description": "Allows you to automate tasks on Snapchat Web", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/NotDSF/SnapchatWebAutomation.git" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "bugs": { 17 | "url": "https://github.com/NotDSF/SnapchatWebAutomation/issues" 18 | }, 19 | "homepage": "https://github.com/NotDSF/SnapchatWebAutomation#readme", 20 | "dependencies": { 21 | "copy-paste": "^1.3.0", 22 | "puppeteer": "^19.7.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | const Snapchat = require("."); 2 | 3 | (async () => { 4 | const client = await Snapchat.Login(); 5 | const chats = await client.GetChats(); 6 | await client.OpenChat(chats[0]); // open first chat 7 | 8 | // event only fires when a chat is open 9 | client.events.on("message", async (message) => { 10 | console.log(message); 11 | if (message.content === "ping") { 12 | await client.SendMessage("pong!"); 13 | } 14 | }); 15 | })(); --------------------------------------------------------------------------------