├── .DS_Store ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── index.js ├── model ├── aidream │ └── index.js ├── base.js ├── forefront │ └── index.js ├── index.js ├── phind │ └── index.js └── you │ └── index.js ├── package-lock.json ├── package.json ├── pool └── puppeteer.js └── utils ├── emailFactory.js ├── index.js └── proxyAgent.js /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Thaon/gpt4free-js/ad1ef0b4bb8be79ae099743566a79d3ae85ef14f/.DS_Store -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Serverless directories 108 | .serverless/ 109 | 110 | # FuseBox cache 111 | .fusebox/ 112 | 113 | # DynamoDB Local files 114 | .dynamodb/ 115 | 116 | # TernJS port file 117 | .tern-port 118 | 119 | # Stores VSCode versions used for testing VSCode extensions 120 | .vscode-test 121 | 122 | # yarn v2 123 | .yarn/cache 124 | .yarn/unplugged 125 | .yarn/build-state.yml 126 | .yarn/install-state.gz 127 | .pnp.* 128 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 YAP! 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 | This is a replication project for the JavaScript version of [gpt4free](https://github.com/xtekky/gpt4free) and using a rewrite of [gpt4free-ts](xiangsx/gpt4free-ts) 2 | 3 | ## Active Models 4 | 5 | Still striving to keep updating. 6 | 7 | Have implemented models here: 8 | If you do not want your website to appear here, please raise an issue and I will remove it immediately. 9 | |model|support|status| 10 | |--|--|--| 11 | |[forefront.ai](forefront.ai)|GPT-4/gpt3.5|![Active](https://img.shields.io/badge/Active-grey) 12 | |[aidream](http://aidream.cloud)|GPT-3.5|![Active](https://img.shields.io/badge/Active-grey) 13 | |[you.com](you.com)|GPT-3.5|![Active](https://img.shields.io/badge/Active-brightgreen) 14 | |[phind.com](https://www.phind.com/)|GPT-4 / Internet / search|![Active](https://img.shields.io/badge/Active-grey) 15 | 16 | ## Run locally 17 | 18 | ```shell 19 | # clone project 20 | git clone 21 | # install modules 22 | npm i 23 | ``` 24 | 25 | ```javascript 26 | // import project 27 | import { generate } from gpt4free-js 28 | // use it 29 | generate('you', 'what's the capital of Italy?', [options]).then((res) => console.log(res.text)) 30 | ``` 31 | 32 | Note: at the moment only the YOU provider works, sorry, working on it. 33 | 34 | ## generate Params 35 | 36 | ``` 37 | prompt: string; // required 38 | ``` 39 | 40 | aidread options 41 | 42 | ``` 43 | parentMessageId: string // if you need context try this 44 | systemMessage: string // default: You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown. 45 | temperature: number; // default: 1 46 | top_p: number // default:1 47 | parse: boolean; // default:true only valid in stream;if set false,return source data contains parentMessageId... 48 | ``` 49 | 50 | forefront options 51 | 52 | ``` 53 | chatId?: string; 54 | actionType?: Action; // 'new' or 'continue' 55 | defaultPersona?: string; 56 | gptmodel?: Model; // gpt-4 or gpt-3.5-turbo 57 | resignup?: number; // default 0 if set 1, auto sign up when gpt4 times use up 58 | // event: error 59 | // data: GPT-4 rate limit exceeded (>5 messages every 3 hours). Time remaining: 179 minutes 60 | // if you see this try set resignup=1 or use gpt-3.5-turbo 61 | 62 | // if you want chat with context, set actionType=continue and chatId={Defined constant uuid} 63 | ``` 64 | 65 | ## 🌟 Star History 66 | 67 | [![Star History Chart](https://api.star-history.com/svg?repos=thaon/gpt4free-js&type=Date)](https://star-history.com/#thaon/gpt4free-js&&type=Date) 68 | 69 | gpt4free logo 70 | 71 | ## Legal Notice 72 | 73 | This repository is _not_ associated with or endorsed by providers of the APIs contained in this GitHub repository. This 74 | project is intended **for educational purposes only**. This is just a little personal project. Sites may contact me to 75 | improve their security or request the removal of their site from this repository. 76 | 77 | Please note the following: 78 | 79 | 1. **Disclaimer**: The APIs, services, and trademarks mentioned in this repository belong to their respective owners. 80 | This project is _not_ claiming any right over them nor is it affiliated with or endorsed by any of the providers 81 | mentioned. 82 | 83 | 2. **Responsibility**: The author of this repository is _not_ responsible for any consequences, damages, or losses 84 | arising from the use or misuse of this repository or the content provided by the third-party APIs. Users are solely 85 | responsible for their actions and any repercussions that may follow. We strongly recommend the users to follow the 86 | TOS of the each Website. 87 | 88 | 3. **Educational Purposes Only**: This repository and its content are provided strictly for educational purposes. By 89 | using the information and code provided, users acknowledge that they are using the APIs and models at their own risk 90 | and agree to comply with any applicable laws and regulations. 91 | 92 | 4. **Copyright**: All content in this repository, including but not limited to code, images, and documentation, is the 93 | intellectual property of the repository author, unless otherwise stated. Unauthorized copying, distribution, or use 94 | of any content in this repository is strictly prohibited without the express written consent of the repository 95 | author. 96 | 97 | 5. **Indemnification**: Users agree to indemnify, defend, and hold harmless the author of this repository from and 98 | against any and all claims, liabilities, damages, losses, or expenses, including legal fees and costs, arising out of 99 | or in any way connected with their use or misuse of this repository, its content, or related third-party APIs. 100 | 101 | 6. **Updates and Changes**: The author reserves the right to modify, update, or remove any content, information, or 102 | features in this repository at any time without prior notice. Users are responsible for regularly reviewing the 103 | content and any changes made to this repository. 104 | 105 | By using this repository or any code related to it, you agree to these terms. The author is not responsible for any 106 | copies, forks, or reuploads made by other users. This is the author's only account and repository. To prevent 107 | impersonation or irresponsible actions, you may comply with the GNU GPL license this Repository uses. 108 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import { ChatModelFactory } from "./model/index.js"; 2 | import dotenv from "dotenv"; 3 | 4 | dotenv.config(); 5 | 6 | export const generate = async (model, prompt, options) => { 7 | const chatModel = new ChatModelFactory(); 8 | 9 | if (!prompt) { 10 | return "please input prompt"; 11 | } 12 | const chat = chatModel.get(model); 13 | if (!chat) { 14 | return "Unsupported model"; 15 | } 16 | const res = await chat.ask({ prompt, options }); 17 | 18 | return res; 19 | }; 20 | -------------------------------------------------------------------------------- /model/aidream/index.js: -------------------------------------------------------------------------------- 1 | import { Chat } from "../base.js"; 2 | import { CreateAxiosProxy } from "../../utils/proxyAgent.js"; 3 | import es from "event-stream"; 4 | import { parseJSON } from "../../utils/index.js"; 5 | 6 | export class AiDream extends Chat { 7 | client; 8 | 9 | constructor(options) { 10 | super(options); 11 | this.client = CreateAxiosProxy({ 12 | baseURL: "http://aidream.cloud/api/", 13 | headers: { 14 | "Cache-Control": "no-cache", 15 | "Proxy-Connection": "keep-alive", 16 | }, 17 | }); 18 | } 19 | 20 | async ask(req) { 21 | req.options = req.options || {}; 22 | const res = await this.askStream(req); 23 | const result = { 24 | text: "", 25 | other: {}, 26 | }; 27 | return new Promise((resolve) => { 28 | res.text 29 | .pipe(es.split(/\r?\n/)) 30 | .pipe( 31 | es.map(async (chunk, cb) => { 32 | const data = parseJSON(chunk, {}); 33 | if (!data?.detail?.choices) { 34 | cb(null, ""); 35 | return; 36 | } 37 | const [ 38 | { 39 | delta: { content }, 40 | }, 41 | ] = data.detail.choices; 42 | result.other.parentMessageId = data.parentMessageId; 43 | cb(null, content); 44 | }) 45 | ) 46 | .on("data", (data) => { 47 | result.text += data; 48 | }) 49 | .on("close", () => { 50 | resolve(result); 51 | }); 52 | }); 53 | } 54 | 55 | async askStream(req) { 56 | const { prompt = "" } = req; 57 | const { 58 | systemMessage = "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.", 59 | temperature = 1.0, 60 | top_p = 1, 61 | parentMessageId, 62 | parse = true, 63 | } = req.options; 64 | const data = { 65 | options: { parentMessageId }, 66 | prompt, 67 | systemMessage, 68 | temperature, 69 | top_p, 70 | }; 71 | const res = await this.client.post("/chat-process", data, { 72 | responseType: "stream", 73 | }); 74 | if (parse) { 75 | return { 76 | text: this.parseData(res.data), 77 | }; 78 | } 79 | return { text: res.data }; 80 | } 81 | 82 | parseData(v) { 83 | return v.pipe(es.split(/\r?\n/)).pipe( 84 | es.map(async (chunk, cb) => { 85 | const data = parseJSON(chunk, {}); 86 | if (!data?.detail?.choices) { 87 | cb(null, ""); 88 | return; 89 | } 90 | const [ 91 | { 92 | delta: { content }, 93 | }, 94 | ] = data.detail.choices; 95 | cb(null, content); 96 | }) 97 | ); 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /model/base.js: -------------------------------------------------------------------------------- 1 | import { Stream } from "stream"; 2 | 3 | // export interface ChatOptions { 4 | // } 5 | 6 | // export interface Response { 7 | // text: string | null; 8 | // other?: any; 9 | // } 10 | 11 | // export interface ResponseStream { 12 | // text: Stream; 13 | // other?: any; 14 | // } 15 | 16 | // export interface Request { 17 | // prompt: string; 18 | // options?: any; 19 | // } 20 | 21 | export class Chat { 22 | options; 23 | 24 | constructor(options) { 25 | this.options = options; 26 | } 27 | 28 | ask(req) {} 29 | 30 | askStream(req) {} 31 | } 32 | -------------------------------------------------------------------------------- /model/forefront/index.js: -------------------------------------------------------------------------------- 1 | import { Chat } from "../base.js"; 2 | import { freeBrowserPool } from "../../pool/puppeteer.js"; 3 | import { CreateEmail } from "../../utils/emailFactory.js"; 4 | import { CreateTlsProxy } from "../../utils/proxyAgent.js"; 5 | import { PassThrough } from "stream"; 6 | 7 | export class Forefrontnew extends Chat { 8 | browser; 9 | page = undefined; 10 | url = "https://chat.forefront.ai/"; 11 | writing = undefined; 12 | 13 | constructor(options) { 14 | super(options); 15 | } 16 | 17 | async ask(req) { 18 | const res = await this.askStream(req); 19 | let text = ""; 20 | return new Promise((resolve) => { 21 | res.text 22 | .on("data", (data) => { 23 | if (!data) { 24 | return; 25 | } 26 | text += data; 27 | }) 28 | .on("close", () => { 29 | resolve({ text, other: res.other }); 30 | }); 31 | }); 32 | } 33 | 34 | async askStream(req) { 35 | if (this.writing) { 36 | const pt = new PassThrough(); 37 | pt.write("Other conversation"); 38 | pt.end(); 39 | return { text: pt }; 40 | } 41 | await freeBrowserPool.init(1, false); 42 | if (!this.browser) { 43 | this.browser = freeBrowserPool.getRandom(); 44 | } 45 | let needRegister = false; 46 | if (!this.page) { 47 | this.page = await this.browser.getPage(this.url); 48 | await this.page.setViewport({ width: 1920, height: 1080 }); 49 | } 50 | if (this.page.url() !== this.url) { 51 | await this.page.goto(this.url); 52 | } 53 | try { 54 | console.log("try find text input"); 55 | await this.page.waitForSelector( 56 | ".relative > .flex > .w-full > .text-th-primary-dark > div", 57 | { timeout: 10000 } 58 | ); 59 | } catch (e) { 60 | console.log("not found text input."); 61 | console.log("try register"); 62 | await this.page.waitForSelector( 63 | ".cl-rootBox > .cl-card > .cl-footer > .cl-footerAction > .cl-footerActionLink", 64 | { timeout: 10000 } 65 | ); 66 | await this.page.click( 67 | ".cl-rootBox > .cl-card > .cl-footer > .cl-footerAction > .cl-footerActionLink" 68 | ); 69 | await this.page.waitForSelector("#emailAddress-field"); 70 | await this.page.click("#emailAddress-field"); 71 | 72 | await this.page.waitForSelector( 73 | ".cl-rootBox > .cl-card > .cl-main > .cl-form > .cl-formButtonPrimary" 74 | ); 75 | await this.page.click( 76 | ".cl-rootBox > .cl-card > .cl-main > .cl-form > .cl-formButtonPrimary" 77 | ); 78 | 79 | const emailBox = CreateEmail("temp-email44"); 80 | const emailAddress = await emailBox.getMailAddress(); 81 | // 将文本键入焦点元素 82 | await this.page.keyboard.type(emailAddress, { delay: 10 }); 83 | await this.page.keyboard.press("Enter"); 84 | 85 | const msgs = await emailBox.waitMails(); 86 | let validateURL; 87 | for (const msg of msgs) { 88 | validateURL = msg.content.match( 89 | /https:\/\/clerk\.forefront\.ai\/v1\/verify\?token=[^\s"]+/i 90 | )?.[0]; 91 | if (validateURL) { 92 | break; 93 | } 94 | } 95 | if (!validateURL) { 96 | throw new Error("Error while obtaining verfication URL!"); 97 | } 98 | const tsl = await CreateTlsProxy({ clientIdentifier: "chrome_108" }).get( 99 | validateURL 100 | ); 101 | console.log("register successfully"); 102 | await this.page.waitForSelector( 103 | ".flex > .modal > .modal-box > .flex > .px-3:nth-child(1)", 104 | { timeout: 10000 } 105 | ); 106 | await this.page.click( 107 | ".flex > .modal > .modal-box > .flex > .px-3:nth-child(1)" 108 | ); 109 | await this.page.waitForSelector( 110 | ".relative > .flex > .w-full > .text-th-primary-dark > div", 111 | { timeout: 10000 } 112 | ); 113 | console.log("try save cookie"); 114 | console.log("save cookie successfully"); 115 | } finally { 116 | const se = await this.page.$("#model-select"); 117 | if (se) { 118 | await this.page.click("#model-select"); 119 | await this.page.select("#model-select", "gpt-4"); 120 | } 121 | } 122 | console.log("try to find input"); 123 | await this.page.waitForSelector( 124 | ".relative > .flex > .w-full > .text-th-primary-dark > div", 125 | { 126 | timeout: 10000, 127 | visible: true, 128 | } 129 | ); 130 | console.log("found"); 131 | await this.page.click( 132 | ".relative > .flex > .w-full > .text-th-primary-dark > div" 133 | ); 134 | await this.page.focus( 135 | ".relative > .flex > .w-full > .text-th-primary-dark > div" 136 | ); 137 | await this.page.keyboard.type(req.prompt, { delay: 10 }); 138 | await this.page.keyboard.press("Enter"); 139 | await this.page.waitForSelector( 140 | "#__next > .flex > .relative > .relative > .flex-1" 141 | ); 142 | // find markdown list container 143 | const mdList = await this.page.$( 144 | "#__next > .flex > .relative > .relative > .flex-1" 145 | ); 146 | const md = mdList; 147 | // get latest markdown id 148 | const id = await md?.evaluate((el) => el.children.length); 149 | console.log(id); 150 | const selector = `.flex-1 > .flex:nth-child(${id}) > .relative > .grid > .post-markdown`; 151 | await this.page.waitForSelector(selector); 152 | const result = await this.page.$(selector); 153 | // get latest markdown text 154 | let oldText = ""; 155 | const pt = new PassThrough(); 156 | (async () => { 157 | const itl = setInterval(async () => { 158 | const text = await result?.evaluate((el) => { 159 | return el.textContent; 160 | }); 161 | if (typeof text != "string") { 162 | return; 163 | } 164 | if (oldText.length === text.length) { 165 | return; 166 | } 167 | pt.write(text.slice(oldText.length - text.length)); 168 | oldText = text; 169 | }, 100); 170 | if (!this.page) { 171 | return; 172 | } 173 | try { 174 | await this.page.waitForSelector( 175 | `.flex-1 > .flex:nth-child(${id}) > .relative > .grid > .opacity-100` 176 | ); 177 | const text = await result?.evaluate((el) => { 178 | console.log(el); 179 | return el.textContent; 180 | }); 181 | pt.write(text.slice(oldText.length - text.length)); 182 | } finally { 183 | pt.end(); 184 | clearInterval(itl); 185 | } 186 | })().then(); 187 | return { text: pt }; 188 | } 189 | } 190 | -------------------------------------------------------------------------------- /model/index.js: -------------------------------------------------------------------------------- 1 | import { You } from "./you/index.js"; 2 | import { AiDream } from "./aidream/index.js"; 3 | import { Phind } from "./phind/index.js"; 4 | import { Forefrontnew } from "./forefront/index.js"; 5 | 6 | // export enum Model { 7 | // // define new model here 8 | // You = 'you', 9 | // Forefront = 'forefront', 10 | // AiDream = 'aidream', 11 | // Phind = 'phind', 12 | // } 13 | 14 | export class ChatModelFactory { 15 | modelMap; 16 | options; 17 | 18 | constructor(options) { 19 | this.modelMap = new Map(); 20 | this.options = options; 21 | this.init(); 22 | } 23 | 24 | init() { 25 | // register new model here 26 | this.modelMap.set("you", new You(this.options)); 27 | this.modelMap.set("forefront", new Forefrontnew(this.options)); 28 | this.modelMap.set("aidream", new AiDream(this.options)); 29 | this.modelMap.set("phind", new Phind(this.options)); 30 | } 31 | 32 | get(model) { 33 | return this.modelMap.get(model); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /model/phind/index.js: -------------------------------------------------------------------------------- 1 | import { Chat } from "../base.js"; 2 | import { freeBrowserPool } from "../../pool/puppeteer.js"; 3 | import { Stream } from "stream"; 4 | 5 | export class Phind extends Chat { 6 | browser; 7 | page = undefined; 8 | 9 | constructor(options) { 10 | super(options); 11 | } 12 | 13 | async ask(req) { 14 | return Promise.resolve({ text: "" }); 15 | } 16 | 17 | async askStream(req) { 18 | if (!this.browser) { 19 | this.browser = freeBrowserPool.getRandom(); 20 | } 21 | if (!this.page) { 22 | this.page = await this.browser.getPage("https://phind.com"); 23 | await this.page.setViewport({ width: 1920, height: 1080 }); 24 | // await this.page.waitForNavigation(); 25 | } 26 | 27 | // await this.page.waitForSelector('.col-md-10 > .container-xl > .mb-3 > .input-group > .form-control') 28 | // await this.page.click('.col-md-10 > .container-xl > .mb-3 > .input-group > .form-control') 29 | // todo complete 30 | return Promise.resolve({ text: new Stream() }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /model/you/index.js: -------------------------------------------------------------------------------- 1 | import { v4 as uuidv4 } from "uuid"; 2 | //@ts-ignore 3 | import UserAgent from "user-agents"; 4 | import { parseJSON, toEventCB, toEventStream } from "../../utils/index.js"; 5 | import { Chat } from "../base.js"; 6 | import { CreateTlsProxy } from "../../utils/proxyAgent.js"; 7 | 8 | const userAgent = new UserAgent(); 9 | 10 | export class You extends Chat { 11 | session; 12 | 13 | constructor(props) { 14 | super(props); 15 | this.session = CreateTlsProxy({ clientIdentifier: "chrome_108" }); 16 | this.session.headers = this.getHeaders(); 17 | } 18 | 19 | async request(req) { 20 | let { 21 | page = 1, 22 | count = 10, 23 | safeSearch = "Moderate", 24 | onShoppingPage = "False", 25 | mkt = "", 26 | responseFilter = "WebPages,Translations,TimeZone,Computation,RelatedSearches", 27 | domain = "youchat", 28 | queryTraceId = null, 29 | chat = null, 30 | includeLinks = "False", 31 | detailed = "False", 32 | debug = "False", 33 | } = req.options || {}; 34 | if (!chat) { 35 | chat = []; 36 | } 37 | return await this.session.get("https://you.com/api/streamingSearch", { 38 | params: { 39 | q: req.prompt, 40 | page: page + "", 41 | count: count + "", 42 | safeSearch: safeSearch + "", 43 | onShoppingPage: onShoppingPage + "", 44 | mkt: mkt + "", 45 | responseFilter: responseFilter + "", 46 | domain: domain + "", 47 | queryTraceId: queryTraceId || uuidv4(), 48 | chat: JSON.stringify(chat), 49 | }, 50 | }); 51 | } 52 | 53 | async askStream(req) { 54 | const response = await this.request(req); 55 | return { text: toEventStream(response.content), other: {} }; 56 | } 57 | 58 | async ask(req) { 59 | const response = await this.request(req); 60 | return new Promise((resolve) => { 61 | const res = { 62 | text: "", 63 | other: {}, 64 | }; 65 | toEventCB(response.content, (eventName, data) => { 66 | let obj; 67 | switch (eventName) { 68 | case "youChatToken": 69 | obj = parseJSON(data, {}); 70 | res.text += obj.youChatToken; 71 | break; 72 | case "done": 73 | resolve(res); 74 | return; 75 | default: 76 | obj = parseJSON(data, {}); 77 | res.other[eventName] = obj; 78 | return; 79 | } 80 | }); 81 | }); 82 | } 83 | 84 | getHeaders() { 85 | return { 86 | authority: "you.com", 87 | accept: "text/event-stream", 88 | "accept-language": 89 | "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3", 90 | "cache-control": "no-cache", 91 | referer: "https://you.com/search?q=who+are+you&tbm=youchat", 92 | "sec-ch-ua": 93 | '"Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"', 94 | "sec-ch-ua-mobile": "?0", 95 | "sec-ch-ua-platform": '"Windows"', 96 | "sec-fetch-dest": "empty", 97 | "sec-fetch-mode": "cors", 98 | "sec-fetch-site": "same-origin", 99 | cookie: `safesearch_guest=Moderate; uuid_guest=${uuidv4()}`, 100 | "user-agent": userAgent.toString(), 101 | }; 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gpt4free-js", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "gpt4free-js", 9 | "version": "0.0.1", 10 | "dependencies": { 11 | "axios": "^1.4.0", 12 | "dotenv": "^16.0.3", 13 | "event-stream": "^4.0.1", 14 | "fake-useragent": "^1.0.1", 15 | "http-proxy-agent": "^6.0.1", 16 | "https-proxy-agent": "^5.0.1", 17 | "koa": "^2.14.2", 18 | "koa-bodyparser": "^4.4.0", 19 | "koa-router": "^12.0.0", 20 | "puppeteer": "^20.1.2", 21 | "tls-client": "^0.0.5", 22 | "user-agents": "^1.0.1367", 23 | "uuid": "^9.0.0", 24 | "xregexp": "^5.1.1" 25 | } 26 | }, 27 | "node_modules/@babel/code-frame": { 28 | "version": "7.21.4", 29 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", 30 | "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", 31 | "dependencies": { 32 | "@babel/highlight": "^7.18.6" 33 | }, 34 | "engines": { 35 | "node": ">=6.9.0" 36 | } 37 | }, 38 | "node_modules/@babel/helper-validator-identifier": { 39 | "version": "7.19.1", 40 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 41 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 42 | "engines": { 43 | "node": ">=6.9.0" 44 | } 45 | }, 46 | "node_modules/@babel/highlight": { 47 | "version": "7.18.6", 48 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 49 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 50 | "dependencies": { 51 | "@babel/helper-validator-identifier": "^7.18.6", 52 | "chalk": "^2.0.0", 53 | "js-tokens": "^4.0.0" 54 | }, 55 | "engines": { 56 | "node": ">=6.9.0" 57 | } 58 | }, 59 | "node_modules/@babel/runtime-corejs3": { 60 | "version": "7.21.5", 61 | "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.5.tgz", 62 | "integrity": "sha512-FRqFlFKNazWYykft5zvzuEl1YyTDGsIRrjV9rvxvYkUC7W/ueBng1X68Xd6uRMzAaJ0xMKn08/wem5YS1lpX8w==", 63 | "dependencies": { 64 | "core-js-pure": "^3.25.1", 65 | "regenerator-runtime": "^0.13.11" 66 | }, 67 | "engines": { 68 | "node": ">=6.9.0" 69 | } 70 | }, 71 | "node_modules/@puppeteer/browsers": { 72 | "version": "1.1.0", 73 | "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.1.0.tgz", 74 | "integrity": "sha512-+Nfk52G9cRAKq/V2LEaOlKIMsIuERSofk8hXEy6kMQtjg9Te1iuKymWOR+iKwwzj1RCkZU0fuOoSIclR839MNw==", 75 | "dependencies": { 76 | "debug": "4.3.4", 77 | "extract-zip": "2.0.1", 78 | "http-proxy-agent": "5.0.0", 79 | "https-proxy-agent": "5.0.1", 80 | "progress": "2.0.3", 81 | "proxy-from-env": "1.1.0", 82 | "tar-fs": "2.1.1", 83 | "unbzip2-stream": "1.4.3", 84 | "yargs": "17.7.1" 85 | }, 86 | "bin": { 87 | "browsers": "lib/cjs/main-cli.js" 88 | }, 89 | "engines": { 90 | "node": ">=16.0.0" 91 | }, 92 | "peerDependencies": { 93 | "typescript": ">= 4.7.4" 94 | }, 95 | "peerDependenciesMeta": { 96 | "typescript": { 97 | "optional": true 98 | } 99 | } 100 | }, 101 | "node_modules/@puppeteer/browsers/node_modules/agent-base": { 102 | "version": "6.0.2", 103 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 104 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 105 | "dependencies": { 106 | "debug": "4" 107 | }, 108 | "engines": { 109 | "node": ">= 6.0.0" 110 | } 111 | }, 112 | "node_modules/@puppeteer/browsers/node_modules/http-proxy-agent": { 113 | "version": "5.0.0", 114 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 115 | "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 116 | "dependencies": { 117 | "@tootallnate/once": "2", 118 | "agent-base": "6", 119 | "debug": "4" 120 | }, 121 | "engines": { 122 | "node": ">= 6" 123 | } 124 | }, 125 | "node_modules/@tootallnate/once": { 126 | "version": "2.0.0", 127 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 128 | "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", 129 | "engines": { 130 | "node": ">= 10" 131 | } 132 | }, 133 | "node_modules/@types/node": { 134 | "version": "18.16.6", 135 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.6.tgz", 136 | "integrity": "sha512-N7KINmeB8IN3vRR8dhgHEp+YpWvGFcpDoh5XZ8jB5a00AdFKCKEyyGTOPTddUf4JqU1ZKTVxkOxakDvchNVI2Q==", 137 | "optional": true 138 | }, 139 | "node_modules/@types/yauzl": { 140 | "version": "2.10.0", 141 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 142 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 143 | "optional": true, 144 | "dependencies": { 145 | "@types/node": "*" 146 | } 147 | }, 148 | "node_modules/accepts": { 149 | "version": "1.3.8", 150 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 151 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 152 | "dependencies": { 153 | "mime-types": "~2.1.34", 154 | "negotiator": "0.6.3" 155 | }, 156 | "engines": { 157 | "node": ">= 0.6" 158 | } 159 | }, 160 | "node_modules/agent-base": { 161 | "version": "7.0.1", 162 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.0.1.tgz", 163 | "integrity": "sha512-V9to8gr2GK7eA+xskWGAFUX/TLSQKuH2TI06c/jGLL6yLp3oEjtnqM7a5tPV9fC1rabLeAgThZeBwsYX+WWHpw==", 164 | "dependencies": { 165 | "debug": "^4.3.4" 166 | }, 167 | "engines": { 168 | "node": ">= 14" 169 | } 170 | }, 171 | "node_modules/ansi-regex": { 172 | "version": "5.0.1", 173 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 174 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 175 | "engines": { 176 | "node": ">=8" 177 | } 178 | }, 179 | "node_modules/ansi-styles": { 180 | "version": "3.2.1", 181 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 182 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 183 | "dependencies": { 184 | "color-convert": "^1.9.0" 185 | }, 186 | "engines": { 187 | "node": ">=4" 188 | } 189 | }, 190 | "node_modules/argparse": { 191 | "version": "2.0.1", 192 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 193 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 194 | }, 195 | "node_modules/asynckit": { 196 | "version": "0.4.0", 197 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 198 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 199 | }, 200 | "node_modules/axios": { 201 | "version": "1.4.0", 202 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", 203 | "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", 204 | "dependencies": { 205 | "follow-redirects": "^1.15.0", 206 | "form-data": "^4.0.0", 207 | "proxy-from-env": "^1.1.0" 208 | } 209 | }, 210 | "node_modules/base64-js": { 211 | "version": "1.5.1", 212 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 213 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 214 | "funding": [ 215 | { 216 | "type": "github", 217 | "url": "https://github.com/sponsors/feross" 218 | }, 219 | { 220 | "type": "patreon", 221 | "url": "https://www.patreon.com/feross" 222 | }, 223 | { 224 | "type": "consulting", 225 | "url": "https://feross.org/support" 226 | } 227 | ] 228 | }, 229 | "node_modules/bl": { 230 | "version": "4.1.0", 231 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 232 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 233 | "dependencies": { 234 | "buffer": "^5.5.0", 235 | "inherits": "^2.0.4", 236 | "readable-stream": "^3.4.0" 237 | } 238 | }, 239 | "node_modules/buffer": { 240 | "version": "5.7.1", 241 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 242 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 243 | "funding": [ 244 | { 245 | "type": "github", 246 | "url": "https://github.com/sponsors/feross" 247 | }, 248 | { 249 | "type": "patreon", 250 | "url": "https://www.patreon.com/feross" 251 | }, 252 | { 253 | "type": "consulting", 254 | "url": "https://feross.org/support" 255 | } 256 | ], 257 | "dependencies": { 258 | "base64-js": "^1.3.1", 259 | "ieee754": "^1.1.13" 260 | } 261 | }, 262 | "node_modules/buffer-crc32": { 263 | "version": "0.2.13", 264 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 265 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 266 | "engines": { 267 | "node": "*" 268 | } 269 | }, 270 | "node_modules/bytes": { 271 | "version": "3.1.2", 272 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 273 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 274 | "engines": { 275 | "node": ">= 0.8" 276 | } 277 | }, 278 | "node_modules/cache-content-type": { 279 | "version": "1.0.1", 280 | "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", 281 | "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", 282 | "dependencies": { 283 | "mime-types": "^2.1.18", 284 | "ylru": "^1.2.0" 285 | }, 286 | "engines": { 287 | "node": ">= 6.0.0" 288 | } 289 | }, 290 | "node_modules/call-bind": { 291 | "version": "1.0.2", 292 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 293 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 294 | "dependencies": { 295 | "function-bind": "^1.1.1", 296 | "get-intrinsic": "^1.0.2" 297 | }, 298 | "funding": { 299 | "url": "https://github.com/sponsors/ljharb" 300 | } 301 | }, 302 | "node_modules/callsites": { 303 | "version": "3.1.0", 304 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 305 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 306 | "engines": { 307 | "node": ">=6" 308 | } 309 | }, 310 | "node_modules/chalk": { 311 | "version": "2.4.2", 312 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 313 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 314 | "dependencies": { 315 | "ansi-styles": "^3.2.1", 316 | "escape-string-regexp": "^1.0.5", 317 | "supports-color": "^5.3.0" 318 | }, 319 | "engines": { 320 | "node": ">=4" 321 | } 322 | }, 323 | "node_modules/chownr": { 324 | "version": "1.1.4", 325 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 326 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 327 | }, 328 | "node_modules/chromium-bidi": { 329 | "version": "0.4.7", 330 | "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.7.tgz", 331 | "integrity": "sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==", 332 | "dependencies": { 333 | "mitt": "3.0.0" 334 | }, 335 | "peerDependencies": { 336 | "devtools-protocol": "*" 337 | } 338 | }, 339 | "node_modules/cliui": { 340 | "version": "8.0.1", 341 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 342 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 343 | "dependencies": { 344 | "string-width": "^4.2.0", 345 | "strip-ansi": "^6.0.1", 346 | "wrap-ansi": "^7.0.0" 347 | }, 348 | "engines": { 349 | "node": ">=12" 350 | } 351 | }, 352 | "node_modules/co": { 353 | "version": "4.6.0", 354 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 355 | "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", 356 | "engines": { 357 | "iojs": ">= 1.0.0", 358 | "node": ">= 0.12.0" 359 | } 360 | }, 361 | "node_modules/co-body": { 362 | "version": "6.1.0", 363 | "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", 364 | "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", 365 | "dependencies": { 366 | "inflation": "^2.0.0", 367 | "qs": "^6.5.2", 368 | "raw-body": "^2.3.3", 369 | "type-is": "^1.6.16" 370 | } 371 | }, 372 | "node_modules/color-convert": { 373 | "version": "1.9.3", 374 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 375 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 376 | "dependencies": { 377 | "color-name": "1.1.3" 378 | } 379 | }, 380 | "node_modules/color-name": { 381 | "version": "1.1.3", 382 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 383 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 384 | }, 385 | "node_modules/combined-stream": { 386 | "version": "1.0.8", 387 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 388 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 389 | "dependencies": { 390 | "delayed-stream": "~1.0.0" 391 | }, 392 | "engines": { 393 | "node": ">= 0.8" 394 | } 395 | }, 396 | "node_modules/content-disposition": { 397 | "version": "0.5.4", 398 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 399 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 400 | "dependencies": { 401 | "safe-buffer": "5.2.1" 402 | }, 403 | "engines": { 404 | "node": ">= 0.6" 405 | } 406 | }, 407 | "node_modules/content-type": { 408 | "version": "1.0.5", 409 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 410 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 411 | "engines": { 412 | "node": ">= 0.6" 413 | } 414 | }, 415 | "node_modules/cookies": { 416 | "version": "0.8.0", 417 | "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", 418 | "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", 419 | "dependencies": { 420 | "depd": "~2.0.0", 421 | "keygrip": "~1.1.0" 422 | }, 423 | "engines": { 424 | "node": ">= 0.8" 425 | } 426 | }, 427 | "node_modules/copy-to": { 428 | "version": "2.0.1", 429 | "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", 430 | "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" 431 | }, 432 | "node_modules/core-js-pure": { 433 | "version": "3.30.2", 434 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz", 435 | "integrity": "sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg==", 436 | "hasInstallScript": true, 437 | "funding": { 438 | "type": "opencollective", 439 | "url": "https://opencollective.com/core-js" 440 | } 441 | }, 442 | "node_modules/cosmiconfig": { 443 | "version": "8.1.3", 444 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", 445 | "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", 446 | "dependencies": { 447 | "import-fresh": "^3.2.1", 448 | "js-yaml": "^4.1.0", 449 | "parse-json": "^5.0.0", 450 | "path-type": "^4.0.0" 451 | }, 452 | "engines": { 453 | "node": ">=14" 454 | }, 455 | "funding": { 456 | "url": "https://github.com/sponsors/d-fischer" 457 | } 458 | }, 459 | "node_modules/cross-fetch": { 460 | "version": "3.1.5", 461 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 462 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 463 | "dependencies": { 464 | "node-fetch": "2.6.7" 465 | } 466 | }, 467 | "node_modules/debug": { 468 | "version": "4.3.4", 469 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 470 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 471 | "dependencies": { 472 | "ms": "2.1.2" 473 | }, 474 | "engines": { 475 | "node": ">=6.0" 476 | }, 477 | "peerDependenciesMeta": { 478 | "supports-color": { 479 | "optional": true 480 | } 481 | } 482 | }, 483 | "node_modules/deep-equal": { 484 | "version": "1.0.1", 485 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 486 | "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" 487 | }, 488 | "node_modules/delayed-stream": { 489 | "version": "1.0.0", 490 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 491 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 492 | "engines": { 493 | "node": ">=0.4.0" 494 | } 495 | }, 496 | "node_modules/delegates": { 497 | "version": "1.0.0", 498 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 499 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" 500 | }, 501 | "node_modules/depd": { 502 | "version": "2.0.0", 503 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 504 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 505 | "engines": { 506 | "node": ">= 0.8" 507 | } 508 | }, 509 | "node_modules/destroy": { 510 | "version": "1.2.0", 511 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 512 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 513 | "engines": { 514 | "node": ">= 0.8", 515 | "npm": "1.2.8000 || >= 1.4.16" 516 | } 517 | }, 518 | "node_modules/detect-indent": { 519 | "version": "6.0.0", 520 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", 521 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", 522 | "engines": { 523 | "node": ">=8" 524 | } 525 | }, 526 | "node_modules/devtools-protocol": { 527 | "version": "0.0.1120988", 528 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1120988.tgz", 529 | "integrity": "sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==" 530 | }, 531 | "node_modules/docopt": { 532 | "version": "0.6.2", 533 | "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", 534 | "integrity": "sha512-NqTbaYeE4gA/wU1hdKFdU+AFahpDOpgGLzHP42k6H6DKExJd0A55KEVWYhL9FEmHmgeLvEU2vuKXDuU+4yToOw==", 535 | "engines": { 536 | "node": ">=0.10.0" 537 | } 538 | }, 539 | "node_modules/dot-json": { 540 | "version": "1.3.0", 541 | "resolved": "https://registry.npmjs.org/dot-json/-/dot-json-1.3.0.tgz", 542 | "integrity": "sha512-Pu11Prog/Yjf2lBICow82/DSV46n3a2XT1Rqt/CeuhkO1fuacF7xydYhI0SwQx2Ue0jCyLtQzgKPFEO6ewv+bQ==", 543 | "dependencies": { 544 | "detect-indent": "~6.0.0", 545 | "docopt": "~0.6.2", 546 | "underscore-keypath": "~0.0.22" 547 | }, 548 | "bin": { 549 | "dot-json": "bin/dot-json.js" 550 | } 551 | }, 552 | "node_modules/dotenv": { 553 | "version": "16.0.3", 554 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 555 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", 556 | "engines": { 557 | "node": ">=12" 558 | } 559 | }, 560 | "node_modules/duplexer": { 561 | "version": "0.1.2", 562 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", 563 | "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" 564 | }, 565 | "node_modules/ee-first": { 566 | "version": "1.1.1", 567 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 568 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 569 | }, 570 | "node_modules/emoji-regex": { 571 | "version": "8.0.0", 572 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 573 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 574 | }, 575 | "node_modules/encodeurl": { 576 | "version": "1.0.2", 577 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 578 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 579 | "engines": { 580 | "node": ">= 0.8" 581 | } 582 | }, 583 | "node_modules/end-of-stream": { 584 | "version": "1.4.4", 585 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 586 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 587 | "dependencies": { 588 | "once": "^1.4.0" 589 | } 590 | }, 591 | "node_modules/error-ex": { 592 | "version": "1.3.2", 593 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 594 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 595 | "dependencies": { 596 | "is-arrayish": "^0.2.1" 597 | } 598 | }, 599 | "node_modules/escalade": { 600 | "version": "3.1.1", 601 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 602 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 603 | "engines": { 604 | "node": ">=6" 605 | } 606 | }, 607 | "node_modules/escape-html": { 608 | "version": "1.0.3", 609 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 610 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 611 | }, 612 | "node_modules/escape-string-regexp": { 613 | "version": "1.0.5", 614 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 615 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 616 | "engines": { 617 | "node": ">=0.8.0" 618 | } 619 | }, 620 | "node_modules/event-stream": { 621 | "version": "4.0.1", 622 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", 623 | "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", 624 | "dependencies": { 625 | "duplexer": "^0.1.1", 626 | "from": "^0.1.7", 627 | "map-stream": "0.0.7", 628 | "pause-stream": "^0.0.11", 629 | "split": "^1.0.1", 630 | "stream-combiner": "^0.2.2", 631 | "through": "^2.3.8" 632 | } 633 | }, 634 | "node_modules/extract-zip": { 635 | "version": "2.0.1", 636 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 637 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 638 | "dependencies": { 639 | "debug": "^4.1.1", 640 | "get-stream": "^5.1.0", 641 | "yauzl": "^2.10.0" 642 | }, 643 | "bin": { 644 | "extract-zip": "cli.js" 645 | }, 646 | "engines": { 647 | "node": ">= 10.17.0" 648 | }, 649 | "optionalDependencies": { 650 | "@types/yauzl": "^2.9.1" 651 | } 652 | }, 653 | "node_modules/fake-useragent": { 654 | "version": "1.0.1", 655 | "resolved": "https://registry.npmjs.org/fake-useragent/-/fake-useragent-1.0.1.tgz", 656 | "integrity": "sha512-BOQh1TM//DhrVaeZ+b3w3s4E40rfYcDTn5aoSM2w1xVsZVGglNOzPR5H8KDO8NmF8sT4ppxyb4/MHGIHfZsVDA==" 657 | }, 658 | "node_modules/fd-slicer": { 659 | "version": "1.1.0", 660 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 661 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 662 | "dependencies": { 663 | "pend": "~1.2.0" 664 | } 665 | }, 666 | "node_modules/ffi-napi": { 667 | "version": "4.0.3", 668 | "resolved": "https://registry.npmjs.org/ffi-napi/-/ffi-napi-4.0.3.tgz", 669 | "integrity": "sha512-PMdLCIvDY9mS32RxZ0XGb95sonPRal8aqRhLbeEtWKZTe2A87qRFG9HjOhvG8EX2UmQw5XNRMIOT+1MYlWmdeg==", 670 | "hasInstallScript": true, 671 | "dependencies": { 672 | "debug": "^4.1.1", 673 | "get-uv-event-loop-napi-h": "^1.0.5", 674 | "node-addon-api": "^3.0.0", 675 | "node-gyp-build": "^4.2.1", 676 | "ref-napi": "^2.0.1 || ^3.0.2", 677 | "ref-struct-di": "^1.1.0" 678 | }, 679 | "engines": { 680 | "node": ">=10" 681 | } 682 | }, 683 | "node_modules/follow-redirects": { 684 | "version": "1.15.2", 685 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 686 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 687 | "funding": [ 688 | { 689 | "type": "individual", 690 | "url": "https://github.com/sponsors/RubenVerborgh" 691 | } 692 | ], 693 | "engines": { 694 | "node": ">=4.0" 695 | }, 696 | "peerDependenciesMeta": { 697 | "debug": { 698 | "optional": true 699 | } 700 | } 701 | }, 702 | "node_modules/form-data": { 703 | "version": "4.0.0", 704 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 705 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 706 | "dependencies": { 707 | "asynckit": "^0.4.0", 708 | "combined-stream": "^1.0.8", 709 | "mime-types": "^2.1.12" 710 | }, 711 | "engines": { 712 | "node": ">= 6" 713 | } 714 | }, 715 | "node_modules/fresh": { 716 | "version": "0.5.2", 717 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 718 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 719 | "engines": { 720 | "node": ">= 0.6" 721 | } 722 | }, 723 | "node_modules/from": { 724 | "version": "0.1.7", 725 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 726 | "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" 727 | }, 728 | "node_modules/fs-constants": { 729 | "version": "1.0.0", 730 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 731 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 732 | }, 733 | "node_modules/function-bind": { 734 | "version": "1.1.1", 735 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 736 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 737 | }, 738 | "node_modules/get-caller-file": { 739 | "version": "2.0.5", 740 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 741 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 742 | "engines": { 743 | "node": "6.* || 8.* || >= 10.*" 744 | } 745 | }, 746 | "node_modules/get-intrinsic": { 747 | "version": "1.2.0", 748 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 749 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 750 | "dependencies": { 751 | "function-bind": "^1.1.1", 752 | "has": "^1.0.3", 753 | "has-symbols": "^1.0.3" 754 | }, 755 | "funding": { 756 | "url": "https://github.com/sponsors/ljharb" 757 | } 758 | }, 759 | "node_modules/get-stream": { 760 | "version": "5.2.0", 761 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 762 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 763 | "dependencies": { 764 | "pump": "^3.0.0" 765 | }, 766 | "engines": { 767 | "node": ">=8" 768 | }, 769 | "funding": { 770 | "url": "https://github.com/sponsors/sindresorhus" 771 | } 772 | }, 773 | "node_modules/get-symbol-from-current-process-h": { 774 | "version": "1.0.2", 775 | "resolved": "https://registry.npmjs.org/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz", 776 | "integrity": "sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw==" 777 | }, 778 | "node_modules/get-uv-event-loop-napi-h": { 779 | "version": "1.0.6", 780 | "resolved": "https://registry.npmjs.org/get-uv-event-loop-napi-h/-/get-uv-event-loop-napi-h-1.0.6.tgz", 781 | "integrity": "sha512-t5c9VNR84nRoF+eLiz6wFrEp1SE2Acg0wS+Ysa2zF0eROes+LzOfuTaVHxGy8AbS8rq7FHEJzjnCZo1BupwdJg==", 782 | "dependencies": { 783 | "get-symbol-from-current-process-h": "^1.0.1" 784 | } 785 | }, 786 | "node_modules/has": { 787 | "version": "1.0.3", 788 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 789 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 790 | "dependencies": { 791 | "function-bind": "^1.1.1" 792 | }, 793 | "engines": { 794 | "node": ">= 0.4.0" 795 | } 796 | }, 797 | "node_modules/has-flag": { 798 | "version": "3.0.0", 799 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 800 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 801 | "engines": { 802 | "node": ">=4" 803 | } 804 | }, 805 | "node_modules/has-symbols": { 806 | "version": "1.0.3", 807 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 808 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 809 | "engines": { 810 | "node": ">= 0.4" 811 | }, 812 | "funding": { 813 | "url": "https://github.com/sponsors/ljharb" 814 | } 815 | }, 816 | "node_modules/has-tostringtag": { 817 | "version": "1.0.0", 818 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 819 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 820 | "dependencies": { 821 | "has-symbols": "^1.0.2" 822 | }, 823 | "engines": { 824 | "node": ">= 0.4" 825 | }, 826 | "funding": { 827 | "url": "https://github.com/sponsors/ljharb" 828 | } 829 | }, 830 | "node_modules/http-assert": { 831 | "version": "1.5.0", 832 | "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", 833 | "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", 834 | "dependencies": { 835 | "deep-equal": "~1.0.1", 836 | "http-errors": "~1.8.0" 837 | }, 838 | "engines": { 839 | "node": ">= 0.8" 840 | } 841 | }, 842 | "node_modules/http-errors": { 843 | "version": "1.8.1", 844 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 845 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 846 | "dependencies": { 847 | "depd": "~1.1.2", 848 | "inherits": "2.0.4", 849 | "setprototypeof": "1.2.0", 850 | "statuses": ">= 1.5.0 < 2", 851 | "toidentifier": "1.0.1" 852 | }, 853 | "engines": { 854 | "node": ">= 0.6" 855 | } 856 | }, 857 | "node_modules/http-errors/node_modules/depd": { 858 | "version": "1.1.2", 859 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 860 | "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", 861 | "engines": { 862 | "node": ">= 0.6" 863 | } 864 | }, 865 | "node_modules/http-proxy-agent": { 866 | "version": "6.0.1", 867 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-6.0.1.tgz", 868 | "integrity": "sha512-rD8wrfJHbnVll9lkIpQH3vDbKON1Ssciggwydom/r89HLBXEqdMhL6wx7QF5WePDPSr0OdoztdXoojbrXadG5Q==", 869 | "dependencies": { 870 | "agent-base": "^7.0.1", 871 | "debug": "^4.3.4" 872 | }, 873 | "engines": { 874 | "node": ">= 14" 875 | } 876 | }, 877 | "node_modules/https-proxy-agent": { 878 | "version": "5.0.1", 879 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 880 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 881 | "dependencies": { 882 | "agent-base": "6", 883 | "debug": "4" 884 | }, 885 | "engines": { 886 | "node": ">= 6" 887 | } 888 | }, 889 | "node_modules/https-proxy-agent/node_modules/agent-base": { 890 | "version": "6.0.2", 891 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 892 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 893 | "dependencies": { 894 | "debug": "4" 895 | }, 896 | "engines": { 897 | "node": ">= 6.0.0" 898 | } 899 | }, 900 | "node_modules/iconv-lite": { 901 | "version": "0.4.24", 902 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 903 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 904 | "dependencies": { 905 | "safer-buffer": ">= 2.1.2 < 3" 906 | }, 907 | "engines": { 908 | "node": ">=0.10.0" 909 | } 910 | }, 911 | "node_modules/ieee754": { 912 | "version": "1.2.1", 913 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 914 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 915 | "funding": [ 916 | { 917 | "type": "github", 918 | "url": "https://github.com/sponsors/feross" 919 | }, 920 | { 921 | "type": "patreon", 922 | "url": "https://www.patreon.com/feross" 923 | }, 924 | { 925 | "type": "consulting", 926 | "url": "https://feross.org/support" 927 | } 928 | ] 929 | }, 930 | "node_modules/import-fresh": { 931 | "version": "3.3.0", 932 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 933 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 934 | "dependencies": { 935 | "parent-module": "^1.0.0", 936 | "resolve-from": "^4.0.0" 937 | }, 938 | "engines": { 939 | "node": ">=6" 940 | }, 941 | "funding": { 942 | "url": "https://github.com/sponsors/sindresorhus" 943 | } 944 | }, 945 | "node_modules/inflation": { 946 | "version": "2.0.0", 947 | "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", 948 | "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", 949 | "engines": { 950 | "node": ">= 0.8.0" 951 | } 952 | }, 953 | "node_modules/inherits": { 954 | "version": "2.0.4", 955 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 956 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 957 | }, 958 | "node_modules/is-arrayish": { 959 | "version": "0.2.1", 960 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 961 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 962 | }, 963 | "node_modules/is-fullwidth-code-point": { 964 | "version": "3.0.0", 965 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 966 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 967 | "engines": { 968 | "node": ">=8" 969 | } 970 | }, 971 | "node_modules/is-generator-function": { 972 | "version": "1.0.10", 973 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", 974 | "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", 975 | "dependencies": { 976 | "has-tostringtag": "^1.0.0" 977 | }, 978 | "engines": { 979 | "node": ">= 0.4" 980 | }, 981 | "funding": { 982 | "url": "https://github.com/sponsors/ljharb" 983 | } 984 | }, 985 | "node_modules/js-tokens": { 986 | "version": "4.0.0", 987 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 988 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 989 | }, 990 | "node_modules/js-yaml": { 991 | "version": "4.1.0", 992 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 993 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 994 | "dependencies": { 995 | "argparse": "^2.0.1" 996 | }, 997 | "bin": { 998 | "js-yaml": "bin/js-yaml.js" 999 | } 1000 | }, 1001 | "node_modules/json-parse-even-better-errors": { 1002 | "version": "2.3.1", 1003 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1004 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1005 | }, 1006 | "node_modules/keygrip": { 1007 | "version": "1.1.0", 1008 | "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", 1009 | "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", 1010 | "dependencies": { 1011 | "tsscmp": "1.0.6" 1012 | }, 1013 | "engines": { 1014 | "node": ">= 0.6" 1015 | } 1016 | }, 1017 | "node_modules/koa": { 1018 | "version": "2.14.2", 1019 | "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", 1020 | "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", 1021 | "dependencies": { 1022 | "accepts": "^1.3.5", 1023 | "cache-content-type": "^1.0.0", 1024 | "content-disposition": "~0.5.2", 1025 | "content-type": "^1.0.4", 1026 | "cookies": "~0.8.0", 1027 | "debug": "^4.3.2", 1028 | "delegates": "^1.0.0", 1029 | "depd": "^2.0.0", 1030 | "destroy": "^1.0.4", 1031 | "encodeurl": "^1.0.2", 1032 | "escape-html": "^1.0.3", 1033 | "fresh": "~0.5.2", 1034 | "http-assert": "^1.3.0", 1035 | "http-errors": "^1.6.3", 1036 | "is-generator-function": "^1.0.7", 1037 | "koa-compose": "^4.1.0", 1038 | "koa-convert": "^2.0.0", 1039 | "on-finished": "^2.3.0", 1040 | "only": "~0.0.2", 1041 | "parseurl": "^1.3.2", 1042 | "statuses": "^1.5.0", 1043 | "type-is": "^1.6.16", 1044 | "vary": "^1.1.2" 1045 | }, 1046 | "engines": { 1047 | "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" 1048 | } 1049 | }, 1050 | "node_modules/koa-bodyparser": { 1051 | "version": "4.4.0", 1052 | "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.4.0.tgz", 1053 | "integrity": "sha512-AXPY7wwKZUmbgb8VkTEUFoRNOlx6aWRJwEnQD+zfNf33/7KSAkN4Oo9BqlIk80D+5TvuqlhpQT5dPVcyxl5Zsw==", 1054 | "dependencies": { 1055 | "co-body": "^6.0.0", 1056 | "copy-to": "^2.0.1" 1057 | }, 1058 | "engines": { 1059 | "node": ">=8.0.0" 1060 | } 1061 | }, 1062 | "node_modules/koa-compose": { 1063 | "version": "4.1.0", 1064 | "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", 1065 | "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" 1066 | }, 1067 | "node_modules/koa-convert": { 1068 | "version": "2.0.0", 1069 | "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", 1070 | "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", 1071 | "dependencies": { 1072 | "co": "^4.6.0", 1073 | "koa-compose": "^4.1.0" 1074 | }, 1075 | "engines": { 1076 | "node": ">= 10" 1077 | } 1078 | }, 1079 | "node_modules/koa-router": { 1080 | "version": "12.0.0", 1081 | "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.0.tgz", 1082 | "integrity": "sha512-zGrdiXygGYW8WvrzeGsHZvKnHs4DzyGoqJ9a8iHlRkiwuEAOAPyI27//OlhoWdgFAEIM3qbUgr0KCuRaP/TCag==", 1083 | "dependencies": { 1084 | "http-errors": "^2.0.0", 1085 | "koa-compose": "^4.1.0", 1086 | "methods": "^1.1.2", 1087 | "path-to-regexp": "^6.2.1" 1088 | }, 1089 | "engines": { 1090 | "node": ">= 12" 1091 | } 1092 | }, 1093 | "node_modules/koa-router/node_modules/http-errors": { 1094 | "version": "2.0.0", 1095 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1096 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1097 | "dependencies": { 1098 | "depd": "2.0.0", 1099 | "inherits": "2.0.4", 1100 | "setprototypeof": "1.2.0", 1101 | "statuses": "2.0.1", 1102 | "toidentifier": "1.0.1" 1103 | }, 1104 | "engines": { 1105 | "node": ">= 0.8" 1106 | } 1107 | }, 1108 | "node_modules/koa-router/node_modules/statuses": { 1109 | "version": "2.0.1", 1110 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1111 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 1112 | "engines": { 1113 | "node": ">= 0.8" 1114 | } 1115 | }, 1116 | "node_modules/lines-and-columns": { 1117 | "version": "1.2.4", 1118 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1119 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 1120 | }, 1121 | "node_modules/lodash.clonedeep": { 1122 | "version": "4.5.0", 1123 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 1124 | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" 1125 | }, 1126 | "node_modules/map-stream": { 1127 | "version": "0.0.7", 1128 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", 1129 | "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==" 1130 | }, 1131 | "node_modules/media-typer": { 1132 | "version": "0.3.0", 1133 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1134 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 1135 | "engines": { 1136 | "node": ">= 0.6" 1137 | } 1138 | }, 1139 | "node_modules/methods": { 1140 | "version": "1.1.2", 1141 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1142 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 1143 | "engines": { 1144 | "node": ">= 0.6" 1145 | } 1146 | }, 1147 | "node_modules/mime-db": { 1148 | "version": "1.52.0", 1149 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1150 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1151 | "engines": { 1152 | "node": ">= 0.6" 1153 | } 1154 | }, 1155 | "node_modules/mime-types": { 1156 | "version": "2.1.35", 1157 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1158 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1159 | "dependencies": { 1160 | "mime-db": "1.52.0" 1161 | }, 1162 | "engines": { 1163 | "node": ">= 0.6" 1164 | } 1165 | }, 1166 | "node_modules/mitt": { 1167 | "version": "3.0.0", 1168 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", 1169 | "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" 1170 | }, 1171 | "node_modules/mkdirp-classic": { 1172 | "version": "0.5.3", 1173 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1174 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 1175 | }, 1176 | "node_modules/ms": { 1177 | "version": "2.1.2", 1178 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1179 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1180 | }, 1181 | "node_modules/negotiator": { 1182 | "version": "0.6.3", 1183 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1184 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 1185 | "engines": { 1186 | "node": ">= 0.6" 1187 | } 1188 | }, 1189 | "node_modules/node-addon-api": { 1190 | "version": "3.2.1", 1191 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", 1192 | "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" 1193 | }, 1194 | "node_modules/node-fetch": { 1195 | "version": "2.6.7", 1196 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1197 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1198 | "dependencies": { 1199 | "whatwg-url": "^5.0.0" 1200 | }, 1201 | "engines": { 1202 | "node": "4.x || >=6.0.0" 1203 | }, 1204 | "peerDependencies": { 1205 | "encoding": "^0.1.0" 1206 | }, 1207 | "peerDependenciesMeta": { 1208 | "encoding": { 1209 | "optional": true 1210 | } 1211 | } 1212 | }, 1213 | "node_modules/node-gyp-build": { 1214 | "version": "4.6.0", 1215 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", 1216 | "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", 1217 | "bin": { 1218 | "node-gyp-build": "bin.js", 1219 | "node-gyp-build-optional": "optional.js", 1220 | "node-gyp-build-test": "build-test.js" 1221 | } 1222 | }, 1223 | "node_modules/object-inspect": { 1224 | "version": "1.12.3", 1225 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1226 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 1227 | "funding": { 1228 | "url": "https://github.com/sponsors/ljharb" 1229 | } 1230 | }, 1231 | "node_modules/on-finished": { 1232 | "version": "2.4.1", 1233 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1234 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1235 | "dependencies": { 1236 | "ee-first": "1.1.1" 1237 | }, 1238 | "engines": { 1239 | "node": ">= 0.8" 1240 | } 1241 | }, 1242 | "node_modules/once": { 1243 | "version": "1.4.0", 1244 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1245 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1246 | "dependencies": { 1247 | "wrappy": "1" 1248 | } 1249 | }, 1250 | "node_modules/only": { 1251 | "version": "0.0.2", 1252 | "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", 1253 | "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" 1254 | }, 1255 | "node_modules/parent-module": { 1256 | "version": "1.0.1", 1257 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1258 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1259 | "dependencies": { 1260 | "callsites": "^3.0.0" 1261 | }, 1262 | "engines": { 1263 | "node": ">=6" 1264 | } 1265 | }, 1266 | "node_modules/parse-json": { 1267 | "version": "5.2.0", 1268 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1269 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1270 | "dependencies": { 1271 | "@babel/code-frame": "^7.0.0", 1272 | "error-ex": "^1.3.1", 1273 | "json-parse-even-better-errors": "^2.3.0", 1274 | "lines-and-columns": "^1.1.6" 1275 | }, 1276 | "engines": { 1277 | "node": ">=8" 1278 | }, 1279 | "funding": { 1280 | "url": "https://github.com/sponsors/sindresorhus" 1281 | } 1282 | }, 1283 | "node_modules/parseurl": { 1284 | "version": "1.3.3", 1285 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1286 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1287 | "engines": { 1288 | "node": ">= 0.8" 1289 | } 1290 | }, 1291 | "node_modules/path-to-regexp": { 1292 | "version": "6.2.1", 1293 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", 1294 | "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" 1295 | }, 1296 | "node_modules/path-type": { 1297 | "version": "4.0.0", 1298 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1299 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1300 | "engines": { 1301 | "node": ">=8" 1302 | } 1303 | }, 1304 | "node_modules/pause-stream": { 1305 | "version": "0.0.11", 1306 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 1307 | "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", 1308 | "dependencies": { 1309 | "through": "~2.3" 1310 | } 1311 | }, 1312 | "node_modules/pend": { 1313 | "version": "1.2.0", 1314 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1315 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 1316 | }, 1317 | "node_modules/progress": { 1318 | "version": "2.0.3", 1319 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1320 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1321 | "engines": { 1322 | "node": ">=0.4.0" 1323 | } 1324 | }, 1325 | "node_modules/proxy-from-env": { 1326 | "version": "1.1.0", 1327 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1328 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1329 | }, 1330 | "node_modules/psl": { 1331 | "version": "1.9.0", 1332 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 1333 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 1334 | }, 1335 | "node_modules/pump": { 1336 | "version": "3.0.0", 1337 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1338 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1339 | "dependencies": { 1340 | "end-of-stream": "^1.1.0", 1341 | "once": "^1.3.1" 1342 | } 1343 | }, 1344 | "node_modules/punycode": { 1345 | "version": "2.3.0", 1346 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 1347 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 1348 | "engines": { 1349 | "node": ">=6" 1350 | } 1351 | }, 1352 | "node_modules/puppeteer": { 1353 | "version": "20.1.2", 1354 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.1.2.tgz", 1355 | "integrity": "sha512-QYDp+iVMP30TwlkXFOocON9qR3Nac5ez7PdXbY90mfuEgZb9vf3/OXL2vHprxwPtb2hgD4AxXvLZhEIqfD2y8Q==", 1356 | "hasInstallScript": true, 1357 | "dependencies": { 1358 | "@puppeteer/browsers": "1.1.0", 1359 | "cosmiconfig": "8.1.3", 1360 | "puppeteer-core": "20.1.2" 1361 | } 1362 | }, 1363 | "node_modules/puppeteer-core": { 1364 | "version": "20.1.2", 1365 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.1.2.tgz", 1366 | "integrity": "sha512-S1BLte+jVC/ugZkNoxFW9Fvbyr30CKZ0IIumf98FFqLh06Vuc21fddsr34botKtz27T81pqkpDYXNXYomA01dg==", 1367 | "dependencies": { 1368 | "@puppeteer/browsers": "1.1.0", 1369 | "chromium-bidi": "0.4.7", 1370 | "cross-fetch": "3.1.5", 1371 | "debug": "4.3.4", 1372 | "devtools-protocol": "0.0.1120988", 1373 | "ws": "8.13.0" 1374 | }, 1375 | "engines": { 1376 | "node": ">=16.0.0" 1377 | }, 1378 | "peerDependencies": { 1379 | "typescript": ">= 4.7.4" 1380 | }, 1381 | "peerDependenciesMeta": { 1382 | "typescript": { 1383 | "optional": true 1384 | } 1385 | } 1386 | }, 1387 | "node_modules/qs": { 1388 | "version": "6.11.1", 1389 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", 1390 | "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", 1391 | "dependencies": { 1392 | "side-channel": "^1.0.4" 1393 | }, 1394 | "engines": { 1395 | "node": ">=0.6" 1396 | }, 1397 | "funding": { 1398 | "url": "https://github.com/sponsors/ljharb" 1399 | } 1400 | }, 1401 | "node_modules/querystringify": { 1402 | "version": "2.2.0", 1403 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 1404 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 1405 | }, 1406 | "node_modules/raw-body": { 1407 | "version": "2.5.2", 1408 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 1409 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 1410 | "dependencies": { 1411 | "bytes": "3.1.2", 1412 | "http-errors": "2.0.0", 1413 | "iconv-lite": "0.4.24", 1414 | "unpipe": "1.0.0" 1415 | }, 1416 | "engines": { 1417 | "node": ">= 0.8" 1418 | } 1419 | }, 1420 | "node_modules/raw-body/node_modules/http-errors": { 1421 | "version": "2.0.0", 1422 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1423 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1424 | "dependencies": { 1425 | "depd": "2.0.0", 1426 | "inherits": "2.0.4", 1427 | "setprototypeof": "1.2.0", 1428 | "statuses": "2.0.1", 1429 | "toidentifier": "1.0.1" 1430 | }, 1431 | "engines": { 1432 | "node": ">= 0.8" 1433 | } 1434 | }, 1435 | "node_modules/raw-body/node_modules/statuses": { 1436 | "version": "2.0.1", 1437 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1438 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 1439 | "engines": { 1440 | "node": ">= 0.8" 1441 | } 1442 | }, 1443 | "node_modules/readable-stream": { 1444 | "version": "3.6.2", 1445 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1446 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1447 | "dependencies": { 1448 | "inherits": "^2.0.3", 1449 | "string_decoder": "^1.1.1", 1450 | "util-deprecate": "^1.0.1" 1451 | }, 1452 | "engines": { 1453 | "node": ">= 6" 1454 | } 1455 | }, 1456 | "node_modules/ref-napi": { 1457 | "version": "3.0.3", 1458 | "resolved": "https://registry.npmjs.org/ref-napi/-/ref-napi-3.0.3.tgz", 1459 | "integrity": "sha512-LiMq/XDGcgodTYOMppikEtJelWsKQERbLQsYm0IOOnzhwE9xYZC7x8txNnFC9wJNOkPferQI4vD4ZkC0mDyrOA==", 1460 | "hasInstallScript": true, 1461 | "dependencies": { 1462 | "debug": "^4.1.1", 1463 | "get-symbol-from-current-process-h": "^1.0.2", 1464 | "node-addon-api": "^3.0.0", 1465 | "node-gyp-build": "^4.2.1" 1466 | }, 1467 | "engines": { 1468 | "node": ">= 10.0" 1469 | } 1470 | }, 1471 | "node_modules/ref-struct-di": { 1472 | "version": "1.1.1", 1473 | "resolved": "https://registry.npmjs.org/ref-struct-di/-/ref-struct-di-1.1.1.tgz", 1474 | "integrity": "sha512-2Xyn/0Qgz89VT+++WP0sTosdm9oeowLP23wRJYhG4BFdMUrLj3jhwHZNEytYNYgtPKLNTP3KJX4HEgBvM1/Y2g==", 1475 | "dependencies": { 1476 | "debug": "^3.1.0" 1477 | } 1478 | }, 1479 | "node_modules/ref-struct-di/node_modules/debug": { 1480 | "version": "3.2.7", 1481 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1482 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1483 | "dependencies": { 1484 | "ms": "^2.1.1" 1485 | } 1486 | }, 1487 | "node_modules/regenerator-runtime": { 1488 | "version": "0.13.11", 1489 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 1490 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 1491 | }, 1492 | "node_modules/require-directory": { 1493 | "version": "2.1.1", 1494 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1495 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1496 | "engines": { 1497 | "node": ">=0.10.0" 1498 | } 1499 | }, 1500 | "node_modules/requires-port": { 1501 | "version": "1.0.0", 1502 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1503 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 1504 | }, 1505 | "node_modules/resolve-from": { 1506 | "version": "4.0.0", 1507 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1508 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1509 | "engines": { 1510 | "node": ">=4" 1511 | } 1512 | }, 1513 | "node_modules/safe-buffer": { 1514 | "version": "5.2.1", 1515 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1516 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1517 | "funding": [ 1518 | { 1519 | "type": "github", 1520 | "url": "https://github.com/sponsors/feross" 1521 | }, 1522 | { 1523 | "type": "patreon", 1524 | "url": "https://www.patreon.com/feross" 1525 | }, 1526 | { 1527 | "type": "consulting", 1528 | "url": "https://feross.org/support" 1529 | } 1530 | ] 1531 | }, 1532 | "node_modules/safer-buffer": { 1533 | "version": "2.1.2", 1534 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1535 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1536 | }, 1537 | "node_modules/setprototypeof": { 1538 | "version": "1.2.0", 1539 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1540 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1541 | }, 1542 | "node_modules/side-channel": { 1543 | "version": "1.0.4", 1544 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1545 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1546 | "dependencies": { 1547 | "call-bind": "^1.0.0", 1548 | "get-intrinsic": "^1.0.2", 1549 | "object-inspect": "^1.9.0" 1550 | }, 1551 | "funding": { 1552 | "url": "https://github.com/sponsors/ljharb" 1553 | } 1554 | }, 1555 | "node_modules/split": { 1556 | "version": "1.0.1", 1557 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 1558 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 1559 | "dependencies": { 1560 | "through": "2" 1561 | }, 1562 | "engines": { 1563 | "node": "*" 1564 | } 1565 | }, 1566 | "node_modules/statuses": { 1567 | "version": "1.5.0", 1568 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1569 | "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", 1570 | "engines": { 1571 | "node": ">= 0.6" 1572 | } 1573 | }, 1574 | "node_modules/stream-combiner": { 1575 | "version": "0.2.2", 1576 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", 1577 | "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", 1578 | "dependencies": { 1579 | "duplexer": "~0.1.1", 1580 | "through": "~2.3.4" 1581 | } 1582 | }, 1583 | "node_modules/string_decoder": { 1584 | "version": "1.3.0", 1585 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1586 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1587 | "dependencies": { 1588 | "safe-buffer": "~5.2.0" 1589 | } 1590 | }, 1591 | "node_modules/string-width": { 1592 | "version": "4.2.3", 1593 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1594 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1595 | "dependencies": { 1596 | "emoji-regex": "^8.0.0", 1597 | "is-fullwidth-code-point": "^3.0.0", 1598 | "strip-ansi": "^6.0.1" 1599 | }, 1600 | "engines": { 1601 | "node": ">=8" 1602 | } 1603 | }, 1604 | "node_modules/strip-ansi": { 1605 | "version": "6.0.1", 1606 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1607 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1608 | "dependencies": { 1609 | "ansi-regex": "^5.0.1" 1610 | }, 1611 | "engines": { 1612 | "node": ">=8" 1613 | } 1614 | }, 1615 | "node_modules/supports-color": { 1616 | "version": "5.5.0", 1617 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1618 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1619 | "dependencies": { 1620 | "has-flag": "^3.0.0" 1621 | }, 1622 | "engines": { 1623 | "node": ">=4" 1624 | } 1625 | }, 1626 | "node_modules/tar-fs": { 1627 | "version": "2.1.1", 1628 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 1629 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 1630 | "dependencies": { 1631 | "chownr": "^1.1.1", 1632 | "mkdirp-classic": "^0.5.2", 1633 | "pump": "^3.0.0", 1634 | "tar-stream": "^2.1.4" 1635 | } 1636 | }, 1637 | "node_modules/tar-stream": { 1638 | "version": "2.2.0", 1639 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 1640 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 1641 | "dependencies": { 1642 | "bl": "^4.0.3", 1643 | "end-of-stream": "^1.4.1", 1644 | "fs-constants": "^1.0.0", 1645 | "inherits": "^2.0.3", 1646 | "readable-stream": "^3.1.1" 1647 | }, 1648 | "engines": { 1649 | "node": ">=6" 1650 | } 1651 | }, 1652 | "node_modules/through": { 1653 | "version": "2.3.8", 1654 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1655 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 1656 | }, 1657 | "node_modules/tls-client": { 1658 | "version": "0.0.5", 1659 | "resolved": "https://registry.npmjs.org/tls-client/-/tls-client-0.0.5.tgz", 1660 | "integrity": "sha512-kx0+MRC7Ef7VIzdpyOz1zjXlanHMJFror4xT+mu/ZeBR/kbw5j931FSIaiI6W0FKB2Isj0X6XlfMfMB9mjubKA==", 1661 | "dependencies": { 1662 | "ffi-napi": "^4.0.3", 1663 | "tough-cookie": "^4.1.2" 1664 | } 1665 | }, 1666 | "node_modules/toidentifier": { 1667 | "version": "1.0.1", 1668 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1669 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1670 | "engines": { 1671 | "node": ">=0.6" 1672 | } 1673 | }, 1674 | "node_modules/tough-cookie": { 1675 | "version": "4.1.2", 1676 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", 1677 | "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", 1678 | "dependencies": { 1679 | "psl": "^1.1.33", 1680 | "punycode": "^2.1.1", 1681 | "universalify": "^0.2.0", 1682 | "url-parse": "^1.5.3" 1683 | }, 1684 | "engines": { 1685 | "node": ">=6" 1686 | } 1687 | }, 1688 | "node_modules/tr46": { 1689 | "version": "0.0.3", 1690 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1691 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1692 | }, 1693 | "node_modules/tsscmp": { 1694 | "version": "1.0.6", 1695 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", 1696 | "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", 1697 | "engines": { 1698 | "node": ">=0.6.x" 1699 | } 1700 | }, 1701 | "node_modules/type-is": { 1702 | "version": "1.6.18", 1703 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1704 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1705 | "dependencies": { 1706 | "media-typer": "0.3.0", 1707 | "mime-types": "~2.1.24" 1708 | }, 1709 | "engines": { 1710 | "node": ">= 0.6" 1711 | } 1712 | }, 1713 | "node_modules/typescript": { 1714 | "version": "5.0.4", 1715 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", 1716 | "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", 1717 | "optional": true, 1718 | "peer": true, 1719 | "bin": { 1720 | "tsc": "bin/tsc", 1721 | "tsserver": "bin/tsserver" 1722 | }, 1723 | "engines": { 1724 | "node": ">=12.20" 1725 | } 1726 | }, 1727 | "node_modules/unbzip2-stream": { 1728 | "version": "1.4.3", 1729 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 1730 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 1731 | "dependencies": { 1732 | "buffer": "^5.2.1", 1733 | "through": "^2.3.8" 1734 | } 1735 | }, 1736 | "node_modules/underscore": { 1737 | "version": "1.13.6", 1738 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", 1739 | "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" 1740 | }, 1741 | "node_modules/underscore-keypath": { 1742 | "version": "0.0.22", 1743 | "resolved": "https://registry.npmjs.org/underscore-keypath/-/underscore-keypath-0.0.22.tgz", 1744 | "integrity": "sha512-fU7aYj1J2LQd+jqdQ67AlCOZKK3Pl+VErS8fGYcgZG75XB9/bY+RLM+F2xEcKHhHNtLvqqFyXAoZQlLYfec3Xg==", 1745 | "dependencies": { 1746 | "underscore": "*" 1747 | } 1748 | }, 1749 | "node_modules/universalify": { 1750 | "version": "0.2.0", 1751 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 1752 | "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", 1753 | "engines": { 1754 | "node": ">= 4.0.0" 1755 | } 1756 | }, 1757 | "node_modules/unpipe": { 1758 | "version": "1.0.0", 1759 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1760 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 1761 | "engines": { 1762 | "node": ">= 0.8" 1763 | } 1764 | }, 1765 | "node_modules/url-parse": { 1766 | "version": "1.5.10", 1767 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 1768 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 1769 | "dependencies": { 1770 | "querystringify": "^2.1.1", 1771 | "requires-port": "^1.0.0" 1772 | } 1773 | }, 1774 | "node_modules/user-agents": { 1775 | "version": "1.0.1374", 1776 | "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.0.1374.tgz", 1777 | "integrity": "sha512-HM3RZ4CCuo/TG6+DNeolWOlm6xqVfvNk4aCHXFht7MGr5HStiLlG3lyGjfnAIagrlTuc+tGEo0qy3ePastIUgw==", 1778 | "dependencies": { 1779 | "dot-json": "^1.3.0", 1780 | "lodash.clonedeep": "^4.5.0" 1781 | } 1782 | }, 1783 | "node_modules/util-deprecate": { 1784 | "version": "1.0.2", 1785 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1786 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1787 | }, 1788 | "node_modules/uuid": { 1789 | "version": "9.0.0", 1790 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", 1791 | "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", 1792 | "bin": { 1793 | "uuid": "dist/bin/uuid" 1794 | } 1795 | }, 1796 | "node_modules/vary": { 1797 | "version": "1.1.2", 1798 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1799 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 1800 | "engines": { 1801 | "node": ">= 0.8" 1802 | } 1803 | }, 1804 | "node_modules/webidl-conversions": { 1805 | "version": "3.0.1", 1806 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1807 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1808 | }, 1809 | "node_modules/whatwg-url": { 1810 | "version": "5.0.0", 1811 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1812 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1813 | "dependencies": { 1814 | "tr46": "~0.0.3", 1815 | "webidl-conversions": "^3.0.0" 1816 | } 1817 | }, 1818 | "node_modules/wrap-ansi": { 1819 | "version": "7.0.0", 1820 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1821 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1822 | "dependencies": { 1823 | "ansi-styles": "^4.0.0", 1824 | "string-width": "^4.1.0", 1825 | "strip-ansi": "^6.0.0" 1826 | }, 1827 | "engines": { 1828 | "node": ">=10" 1829 | }, 1830 | "funding": { 1831 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1832 | } 1833 | }, 1834 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 1835 | "version": "4.3.0", 1836 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1837 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1838 | "dependencies": { 1839 | "color-convert": "^2.0.1" 1840 | }, 1841 | "engines": { 1842 | "node": ">=8" 1843 | }, 1844 | "funding": { 1845 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1846 | } 1847 | }, 1848 | "node_modules/wrap-ansi/node_modules/color-convert": { 1849 | "version": "2.0.1", 1850 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1851 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1852 | "dependencies": { 1853 | "color-name": "~1.1.4" 1854 | }, 1855 | "engines": { 1856 | "node": ">=7.0.0" 1857 | } 1858 | }, 1859 | "node_modules/wrap-ansi/node_modules/color-name": { 1860 | "version": "1.1.4", 1861 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1862 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1863 | }, 1864 | "node_modules/wrappy": { 1865 | "version": "1.0.2", 1866 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1867 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1868 | }, 1869 | "node_modules/ws": { 1870 | "version": "8.13.0", 1871 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 1872 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 1873 | "engines": { 1874 | "node": ">=10.0.0" 1875 | }, 1876 | "peerDependencies": { 1877 | "bufferutil": "^4.0.1", 1878 | "utf-8-validate": ">=5.0.2" 1879 | }, 1880 | "peerDependenciesMeta": { 1881 | "bufferutil": { 1882 | "optional": true 1883 | }, 1884 | "utf-8-validate": { 1885 | "optional": true 1886 | } 1887 | } 1888 | }, 1889 | "node_modules/xregexp": { 1890 | "version": "5.1.1", 1891 | "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.1.tgz", 1892 | "integrity": "sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==", 1893 | "dependencies": { 1894 | "@babel/runtime-corejs3": "^7.16.5" 1895 | } 1896 | }, 1897 | "node_modules/y18n": { 1898 | "version": "5.0.8", 1899 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1900 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1901 | "engines": { 1902 | "node": ">=10" 1903 | } 1904 | }, 1905 | "node_modules/yargs": { 1906 | "version": "17.7.1", 1907 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", 1908 | "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", 1909 | "dependencies": { 1910 | "cliui": "^8.0.1", 1911 | "escalade": "^3.1.1", 1912 | "get-caller-file": "^2.0.5", 1913 | "require-directory": "^2.1.1", 1914 | "string-width": "^4.2.3", 1915 | "y18n": "^5.0.5", 1916 | "yargs-parser": "^21.1.1" 1917 | }, 1918 | "engines": { 1919 | "node": ">=12" 1920 | } 1921 | }, 1922 | "node_modules/yargs-parser": { 1923 | "version": "21.1.1", 1924 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 1925 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 1926 | "engines": { 1927 | "node": ">=12" 1928 | } 1929 | }, 1930 | "node_modules/yauzl": { 1931 | "version": "2.10.0", 1932 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1933 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 1934 | "dependencies": { 1935 | "buffer-crc32": "~0.2.3", 1936 | "fd-slicer": "~1.1.0" 1937 | } 1938 | }, 1939 | "node_modules/ylru": { 1940 | "version": "1.3.2", 1941 | "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", 1942 | "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", 1943 | "engines": { 1944 | "node": ">= 4.0.0" 1945 | } 1946 | } 1947 | }, 1948 | "dependencies": { 1949 | "@babel/code-frame": { 1950 | "version": "7.21.4", 1951 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", 1952 | "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", 1953 | "requires": { 1954 | "@babel/highlight": "^7.18.6" 1955 | } 1956 | }, 1957 | "@babel/helper-validator-identifier": { 1958 | "version": "7.19.1", 1959 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 1960 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" 1961 | }, 1962 | "@babel/highlight": { 1963 | "version": "7.18.6", 1964 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1965 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1966 | "requires": { 1967 | "@babel/helper-validator-identifier": "^7.18.6", 1968 | "chalk": "^2.0.0", 1969 | "js-tokens": "^4.0.0" 1970 | } 1971 | }, 1972 | "@babel/runtime-corejs3": { 1973 | "version": "7.21.5", 1974 | "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.5.tgz", 1975 | "integrity": "sha512-FRqFlFKNazWYykft5zvzuEl1YyTDGsIRrjV9rvxvYkUC7W/ueBng1X68Xd6uRMzAaJ0xMKn08/wem5YS1lpX8w==", 1976 | "requires": { 1977 | "core-js-pure": "^3.25.1", 1978 | "regenerator-runtime": "^0.13.11" 1979 | } 1980 | }, 1981 | "@puppeteer/browsers": { 1982 | "version": "1.1.0", 1983 | "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.1.0.tgz", 1984 | "integrity": "sha512-+Nfk52G9cRAKq/V2LEaOlKIMsIuERSofk8hXEy6kMQtjg9Te1iuKymWOR+iKwwzj1RCkZU0fuOoSIclR839MNw==", 1985 | "requires": { 1986 | "debug": "4.3.4", 1987 | "extract-zip": "2.0.1", 1988 | "http-proxy-agent": "5.0.0", 1989 | "https-proxy-agent": "5.0.1", 1990 | "progress": "2.0.3", 1991 | "proxy-from-env": "1.1.0", 1992 | "tar-fs": "2.1.1", 1993 | "unbzip2-stream": "1.4.3", 1994 | "yargs": "17.7.1" 1995 | }, 1996 | "dependencies": { 1997 | "agent-base": { 1998 | "version": "6.0.2", 1999 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 2000 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 2001 | "requires": { 2002 | "debug": "4" 2003 | } 2004 | }, 2005 | "http-proxy-agent": { 2006 | "version": "5.0.0", 2007 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 2008 | "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 2009 | "requires": { 2010 | "@tootallnate/once": "2", 2011 | "agent-base": "6", 2012 | "debug": "4" 2013 | } 2014 | } 2015 | } 2016 | }, 2017 | "@tootallnate/once": { 2018 | "version": "2.0.0", 2019 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 2020 | "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" 2021 | }, 2022 | "@types/node": { 2023 | "version": "18.16.6", 2024 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.6.tgz", 2025 | "integrity": "sha512-N7KINmeB8IN3vRR8dhgHEp+YpWvGFcpDoh5XZ8jB5a00AdFKCKEyyGTOPTddUf4JqU1ZKTVxkOxakDvchNVI2Q==", 2026 | "optional": true 2027 | }, 2028 | "@types/yauzl": { 2029 | "version": "2.10.0", 2030 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 2031 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 2032 | "optional": true, 2033 | "requires": { 2034 | "@types/node": "*" 2035 | } 2036 | }, 2037 | "accepts": { 2038 | "version": "1.3.8", 2039 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 2040 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 2041 | "requires": { 2042 | "mime-types": "~2.1.34", 2043 | "negotiator": "0.6.3" 2044 | } 2045 | }, 2046 | "agent-base": { 2047 | "version": "7.0.1", 2048 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.0.1.tgz", 2049 | "integrity": "sha512-V9to8gr2GK7eA+xskWGAFUX/TLSQKuH2TI06c/jGLL6yLp3oEjtnqM7a5tPV9fC1rabLeAgThZeBwsYX+WWHpw==", 2050 | "requires": { 2051 | "debug": "^4.3.4" 2052 | } 2053 | }, 2054 | "ansi-regex": { 2055 | "version": "5.0.1", 2056 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2057 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 2058 | }, 2059 | "ansi-styles": { 2060 | "version": "3.2.1", 2061 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2062 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2063 | "requires": { 2064 | "color-convert": "^1.9.0" 2065 | } 2066 | }, 2067 | "argparse": { 2068 | "version": "2.0.1", 2069 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2070 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 2071 | }, 2072 | "asynckit": { 2073 | "version": "0.4.0", 2074 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 2075 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 2076 | }, 2077 | "axios": { 2078 | "version": "1.4.0", 2079 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", 2080 | "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", 2081 | "requires": { 2082 | "follow-redirects": "^1.15.0", 2083 | "form-data": "^4.0.0", 2084 | "proxy-from-env": "^1.1.0" 2085 | } 2086 | }, 2087 | "base64-js": { 2088 | "version": "1.5.1", 2089 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 2090 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 2091 | }, 2092 | "bl": { 2093 | "version": "4.1.0", 2094 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 2095 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 2096 | "requires": { 2097 | "buffer": "^5.5.0", 2098 | "inherits": "^2.0.4", 2099 | "readable-stream": "^3.4.0" 2100 | } 2101 | }, 2102 | "buffer": { 2103 | "version": "5.7.1", 2104 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 2105 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 2106 | "requires": { 2107 | "base64-js": "^1.3.1", 2108 | "ieee754": "^1.1.13" 2109 | } 2110 | }, 2111 | "buffer-crc32": { 2112 | "version": "0.2.13", 2113 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 2114 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" 2115 | }, 2116 | "bytes": { 2117 | "version": "3.1.2", 2118 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 2119 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 2120 | }, 2121 | "cache-content-type": { 2122 | "version": "1.0.1", 2123 | "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", 2124 | "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", 2125 | "requires": { 2126 | "mime-types": "^2.1.18", 2127 | "ylru": "^1.2.0" 2128 | } 2129 | }, 2130 | "call-bind": { 2131 | "version": "1.0.2", 2132 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 2133 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 2134 | "requires": { 2135 | "function-bind": "^1.1.1", 2136 | "get-intrinsic": "^1.0.2" 2137 | } 2138 | }, 2139 | "callsites": { 2140 | "version": "3.1.0", 2141 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2142 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 2143 | }, 2144 | "chalk": { 2145 | "version": "2.4.2", 2146 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2147 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2148 | "requires": { 2149 | "ansi-styles": "^3.2.1", 2150 | "escape-string-regexp": "^1.0.5", 2151 | "supports-color": "^5.3.0" 2152 | } 2153 | }, 2154 | "chownr": { 2155 | "version": "1.1.4", 2156 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 2157 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 2158 | }, 2159 | "chromium-bidi": { 2160 | "version": "0.4.7", 2161 | "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.7.tgz", 2162 | "integrity": "sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==", 2163 | "requires": { 2164 | "mitt": "3.0.0" 2165 | } 2166 | }, 2167 | "cliui": { 2168 | "version": "8.0.1", 2169 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 2170 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 2171 | "requires": { 2172 | "string-width": "^4.2.0", 2173 | "strip-ansi": "^6.0.1", 2174 | "wrap-ansi": "^7.0.0" 2175 | } 2176 | }, 2177 | "co": { 2178 | "version": "4.6.0", 2179 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 2180 | "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" 2181 | }, 2182 | "co-body": { 2183 | "version": "6.1.0", 2184 | "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", 2185 | "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", 2186 | "requires": { 2187 | "inflation": "^2.0.0", 2188 | "qs": "^6.5.2", 2189 | "raw-body": "^2.3.3", 2190 | "type-is": "^1.6.16" 2191 | } 2192 | }, 2193 | "color-convert": { 2194 | "version": "1.9.3", 2195 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2196 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2197 | "requires": { 2198 | "color-name": "1.1.3" 2199 | } 2200 | }, 2201 | "color-name": { 2202 | "version": "1.1.3", 2203 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2204 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 2205 | }, 2206 | "combined-stream": { 2207 | "version": "1.0.8", 2208 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 2209 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 2210 | "requires": { 2211 | "delayed-stream": "~1.0.0" 2212 | } 2213 | }, 2214 | "content-disposition": { 2215 | "version": "0.5.4", 2216 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 2217 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 2218 | "requires": { 2219 | "safe-buffer": "5.2.1" 2220 | } 2221 | }, 2222 | "content-type": { 2223 | "version": "1.0.5", 2224 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 2225 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" 2226 | }, 2227 | "cookies": { 2228 | "version": "0.8.0", 2229 | "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", 2230 | "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", 2231 | "requires": { 2232 | "depd": "~2.0.0", 2233 | "keygrip": "~1.1.0" 2234 | } 2235 | }, 2236 | "copy-to": { 2237 | "version": "2.0.1", 2238 | "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", 2239 | "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" 2240 | }, 2241 | "core-js-pure": { 2242 | "version": "3.30.2", 2243 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz", 2244 | "integrity": "sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg==" 2245 | }, 2246 | "cosmiconfig": { 2247 | "version": "8.1.3", 2248 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", 2249 | "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", 2250 | "requires": { 2251 | "import-fresh": "^3.2.1", 2252 | "js-yaml": "^4.1.0", 2253 | "parse-json": "^5.0.0", 2254 | "path-type": "^4.0.0" 2255 | } 2256 | }, 2257 | "cross-fetch": { 2258 | "version": "3.1.5", 2259 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 2260 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 2261 | "requires": { 2262 | "node-fetch": "2.6.7" 2263 | } 2264 | }, 2265 | "debug": { 2266 | "version": "4.3.4", 2267 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2268 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2269 | "requires": { 2270 | "ms": "2.1.2" 2271 | } 2272 | }, 2273 | "deep-equal": { 2274 | "version": "1.0.1", 2275 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 2276 | "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" 2277 | }, 2278 | "delayed-stream": { 2279 | "version": "1.0.0", 2280 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 2281 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 2282 | }, 2283 | "delegates": { 2284 | "version": "1.0.0", 2285 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 2286 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" 2287 | }, 2288 | "depd": { 2289 | "version": "2.0.0", 2290 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 2291 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 2292 | }, 2293 | "destroy": { 2294 | "version": "1.2.0", 2295 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 2296 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 2297 | }, 2298 | "detect-indent": { 2299 | "version": "6.0.0", 2300 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", 2301 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==" 2302 | }, 2303 | "devtools-protocol": { 2304 | "version": "0.0.1120988", 2305 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1120988.tgz", 2306 | "integrity": "sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==" 2307 | }, 2308 | "docopt": { 2309 | "version": "0.6.2", 2310 | "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", 2311 | "integrity": "sha512-NqTbaYeE4gA/wU1hdKFdU+AFahpDOpgGLzHP42k6H6DKExJd0A55KEVWYhL9FEmHmgeLvEU2vuKXDuU+4yToOw==" 2312 | }, 2313 | "dot-json": { 2314 | "version": "1.3.0", 2315 | "resolved": "https://registry.npmjs.org/dot-json/-/dot-json-1.3.0.tgz", 2316 | "integrity": "sha512-Pu11Prog/Yjf2lBICow82/DSV46n3a2XT1Rqt/CeuhkO1fuacF7xydYhI0SwQx2Ue0jCyLtQzgKPFEO6ewv+bQ==", 2317 | "requires": { 2318 | "detect-indent": "~6.0.0", 2319 | "docopt": "~0.6.2", 2320 | "underscore-keypath": "~0.0.22" 2321 | } 2322 | }, 2323 | "dotenv": { 2324 | "version": "16.0.3", 2325 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 2326 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" 2327 | }, 2328 | "duplexer": { 2329 | "version": "0.1.2", 2330 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", 2331 | "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" 2332 | }, 2333 | "ee-first": { 2334 | "version": "1.1.1", 2335 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 2336 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 2337 | }, 2338 | "emoji-regex": { 2339 | "version": "8.0.0", 2340 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2341 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 2342 | }, 2343 | "encodeurl": { 2344 | "version": "1.0.2", 2345 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 2346 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 2347 | }, 2348 | "end-of-stream": { 2349 | "version": "1.4.4", 2350 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 2351 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 2352 | "requires": { 2353 | "once": "^1.4.0" 2354 | } 2355 | }, 2356 | "error-ex": { 2357 | "version": "1.3.2", 2358 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 2359 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 2360 | "requires": { 2361 | "is-arrayish": "^0.2.1" 2362 | } 2363 | }, 2364 | "escalade": { 2365 | "version": "3.1.1", 2366 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2367 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 2368 | }, 2369 | "escape-html": { 2370 | "version": "1.0.3", 2371 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 2372 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 2373 | }, 2374 | "escape-string-regexp": { 2375 | "version": "1.0.5", 2376 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2377 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 2378 | }, 2379 | "event-stream": { 2380 | "version": "4.0.1", 2381 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", 2382 | "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", 2383 | "requires": { 2384 | "duplexer": "^0.1.1", 2385 | "from": "^0.1.7", 2386 | "map-stream": "0.0.7", 2387 | "pause-stream": "^0.0.11", 2388 | "split": "^1.0.1", 2389 | "stream-combiner": "^0.2.2", 2390 | "through": "^2.3.8" 2391 | } 2392 | }, 2393 | "extract-zip": { 2394 | "version": "2.0.1", 2395 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 2396 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 2397 | "requires": { 2398 | "@types/yauzl": "^2.9.1", 2399 | "debug": "^4.1.1", 2400 | "get-stream": "^5.1.0", 2401 | "yauzl": "^2.10.0" 2402 | } 2403 | }, 2404 | "fake-useragent": { 2405 | "version": "1.0.1", 2406 | "resolved": "https://registry.npmjs.org/fake-useragent/-/fake-useragent-1.0.1.tgz", 2407 | "integrity": "sha512-BOQh1TM//DhrVaeZ+b3w3s4E40rfYcDTn5aoSM2w1xVsZVGglNOzPR5H8KDO8NmF8sT4ppxyb4/MHGIHfZsVDA==" 2408 | }, 2409 | "fd-slicer": { 2410 | "version": "1.1.0", 2411 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 2412 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 2413 | "requires": { 2414 | "pend": "~1.2.0" 2415 | } 2416 | }, 2417 | "ffi-napi": { 2418 | "version": "4.0.3", 2419 | "resolved": "https://registry.npmjs.org/ffi-napi/-/ffi-napi-4.0.3.tgz", 2420 | "integrity": "sha512-PMdLCIvDY9mS32RxZ0XGb95sonPRal8aqRhLbeEtWKZTe2A87qRFG9HjOhvG8EX2UmQw5XNRMIOT+1MYlWmdeg==", 2421 | "requires": { 2422 | "debug": "^4.1.1", 2423 | "get-uv-event-loop-napi-h": "^1.0.5", 2424 | "node-addon-api": "^3.0.0", 2425 | "node-gyp-build": "^4.2.1", 2426 | "ref-napi": "^2.0.1 || ^3.0.2", 2427 | "ref-struct-di": "^1.1.0" 2428 | } 2429 | }, 2430 | "follow-redirects": { 2431 | "version": "1.15.2", 2432 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 2433 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 2434 | }, 2435 | "form-data": { 2436 | "version": "4.0.0", 2437 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 2438 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 2439 | "requires": { 2440 | "asynckit": "^0.4.0", 2441 | "combined-stream": "^1.0.8", 2442 | "mime-types": "^2.1.12" 2443 | } 2444 | }, 2445 | "fresh": { 2446 | "version": "0.5.2", 2447 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 2448 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 2449 | }, 2450 | "from": { 2451 | "version": "0.1.7", 2452 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 2453 | "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" 2454 | }, 2455 | "fs-constants": { 2456 | "version": "1.0.0", 2457 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 2458 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 2459 | }, 2460 | "function-bind": { 2461 | "version": "1.1.1", 2462 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2463 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 2464 | }, 2465 | "get-caller-file": { 2466 | "version": "2.0.5", 2467 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2468 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 2469 | }, 2470 | "get-intrinsic": { 2471 | "version": "1.2.0", 2472 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 2473 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 2474 | "requires": { 2475 | "function-bind": "^1.1.1", 2476 | "has": "^1.0.3", 2477 | "has-symbols": "^1.0.3" 2478 | } 2479 | }, 2480 | "get-stream": { 2481 | "version": "5.2.0", 2482 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 2483 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 2484 | "requires": { 2485 | "pump": "^3.0.0" 2486 | } 2487 | }, 2488 | "get-symbol-from-current-process-h": { 2489 | "version": "1.0.2", 2490 | "resolved": "https://registry.npmjs.org/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz", 2491 | "integrity": "sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw==" 2492 | }, 2493 | "get-uv-event-loop-napi-h": { 2494 | "version": "1.0.6", 2495 | "resolved": "https://registry.npmjs.org/get-uv-event-loop-napi-h/-/get-uv-event-loop-napi-h-1.0.6.tgz", 2496 | "integrity": "sha512-t5c9VNR84nRoF+eLiz6wFrEp1SE2Acg0wS+Ysa2zF0eROes+LzOfuTaVHxGy8AbS8rq7FHEJzjnCZo1BupwdJg==", 2497 | "requires": { 2498 | "get-symbol-from-current-process-h": "^1.0.1" 2499 | } 2500 | }, 2501 | "has": { 2502 | "version": "1.0.3", 2503 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2504 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2505 | "requires": { 2506 | "function-bind": "^1.1.1" 2507 | } 2508 | }, 2509 | "has-flag": { 2510 | "version": "3.0.0", 2511 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2512 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 2513 | }, 2514 | "has-symbols": { 2515 | "version": "1.0.3", 2516 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 2517 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 2518 | }, 2519 | "has-tostringtag": { 2520 | "version": "1.0.0", 2521 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 2522 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 2523 | "requires": { 2524 | "has-symbols": "^1.0.2" 2525 | } 2526 | }, 2527 | "http-assert": { 2528 | "version": "1.5.0", 2529 | "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", 2530 | "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", 2531 | "requires": { 2532 | "deep-equal": "~1.0.1", 2533 | "http-errors": "~1.8.0" 2534 | } 2535 | }, 2536 | "http-errors": { 2537 | "version": "1.8.1", 2538 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 2539 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 2540 | "requires": { 2541 | "depd": "~1.1.2", 2542 | "inherits": "2.0.4", 2543 | "setprototypeof": "1.2.0", 2544 | "statuses": ">= 1.5.0 < 2", 2545 | "toidentifier": "1.0.1" 2546 | }, 2547 | "dependencies": { 2548 | "depd": { 2549 | "version": "1.1.2", 2550 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 2551 | "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" 2552 | } 2553 | } 2554 | }, 2555 | "http-proxy-agent": { 2556 | "version": "6.0.1", 2557 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-6.0.1.tgz", 2558 | "integrity": "sha512-rD8wrfJHbnVll9lkIpQH3vDbKON1Ssciggwydom/r89HLBXEqdMhL6wx7QF5WePDPSr0OdoztdXoojbrXadG5Q==", 2559 | "requires": { 2560 | "agent-base": "^7.0.1", 2561 | "debug": "^4.3.4" 2562 | } 2563 | }, 2564 | "https-proxy-agent": { 2565 | "version": "5.0.1", 2566 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 2567 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 2568 | "requires": { 2569 | "agent-base": "6", 2570 | "debug": "4" 2571 | }, 2572 | "dependencies": { 2573 | "agent-base": { 2574 | "version": "6.0.2", 2575 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 2576 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 2577 | "requires": { 2578 | "debug": "4" 2579 | } 2580 | } 2581 | } 2582 | }, 2583 | "iconv-lite": { 2584 | "version": "0.4.24", 2585 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2586 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2587 | "requires": { 2588 | "safer-buffer": ">= 2.1.2 < 3" 2589 | } 2590 | }, 2591 | "ieee754": { 2592 | "version": "1.2.1", 2593 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 2594 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 2595 | }, 2596 | "import-fresh": { 2597 | "version": "3.3.0", 2598 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2599 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2600 | "requires": { 2601 | "parent-module": "^1.0.0", 2602 | "resolve-from": "^4.0.0" 2603 | } 2604 | }, 2605 | "inflation": { 2606 | "version": "2.0.0", 2607 | "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", 2608 | "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" 2609 | }, 2610 | "inherits": { 2611 | "version": "2.0.4", 2612 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2613 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2614 | }, 2615 | "is-arrayish": { 2616 | "version": "0.2.1", 2617 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2618 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 2619 | }, 2620 | "is-fullwidth-code-point": { 2621 | "version": "3.0.0", 2622 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2623 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 2624 | }, 2625 | "is-generator-function": { 2626 | "version": "1.0.10", 2627 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", 2628 | "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", 2629 | "requires": { 2630 | "has-tostringtag": "^1.0.0" 2631 | } 2632 | }, 2633 | "js-tokens": { 2634 | "version": "4.0.0", 2635 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2636 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2637 | }, 2638 | "js-yaml": { 2639 | "version": "4.1.0", 2640 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2641 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2642 | "requires": { 2643 | "argparse": "^2.0.1" 2644 | } 2645 | }, 2646 | "json-parse-even-better-errors": { 2647 | "version": "2.3.1", 2648 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2649 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 2650 | }, 2651 | "keygrip": { 2652 | "version": "1.1.0", 2653 | "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", 2654 | "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", 2655 | "requires": { 2656 | "tsscmp": "1.0.6" 2657 | } 2658 | }, 2659 | "koa": { 2660 | "version": "2.14.2", 2661 | "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", 2662 | "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", 2663 | "requires": { 2664 | "accepts": "^1.3.5", 2665 | "cache-content-type": "^1.0.0", 2666 | "content-disposition": "~0.5.2", 2667 | "content-type": "^1.0.4", 2668 | "cookies": "~0.8.0", 2669 | "debug": "^4.3.2", 2670 | "delegates": "^1.0.0", 2671 | "depd": "^2.0.0", 2672 | "destroy": "^1.0.4", 2673 | "encodeurl": "^1.0.2", 2674 | "escape-html": "^1.0.3", 2675 | "fresh": "~0.5.2", 2676 | "http-assert": "^1.3.0", 2677 | "http-errors": "^1.6.3", 2678 | "is-generator-function": "^1.0.7", 2679 | "koa-compose": "^4.1.0", 2680 | "koa-convert": "^2.0.0", 2681 | "on-finished": "^2.3.0", 2682 | "only": "~0.0.2", 2683 | "parseurl": "^1.3.2", 2684 | "statuses": "^1.5.0", 2685 | "type-is": "^1.6.16", 2686 | "vary": "^1.1.2" 2687 | } 2688 | }, 2689 | "koa-bodyparser": { 2690 | "version": "4.4.0", 2691 | "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.4.0.tgz", 2692 | "integrity": "sha512-AXPY7wwKZUmbgb8VkTEUFoRNOlx6aWRJwEnQD+zfNf33/7KSAkN4Oo9BqlIk80D+5TvuqlhpQT5dPVcyxl5Zsw==", 2693 | "requires": { 2694 | "co-body": "^6.0.0", 2695 | "copy-to": "^2.0.1" 2696 | } 2697 | }, 2698 | "koa-compose": { 2699 | "version": "4.1.0", 2700 | "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", 2701 | "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" 2702 | }, 2703 | "koa-convert": { 2704 | "version": "2.0.0", 2705 | "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", 2706 | "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", 2707 | "requires": { 2708 | "co": "^4.6.0", 2709 | "koa-compose": "^4.1.0" 2710 | } 2711 | }, 2712 | "koa-router": { 2713 | "version": "12.0.0", 2714 | "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.0.tgz", 2715 | "integrity": "sha512-zGrdiXygGYW8WvrzeGsHZvKnHs4DzyGoqJ9a8iHlRkiwuEAOAPyI27//OlhoWdgFAEIM3qbUgr0KCuRaP/TCag==", 2716 | "requires": { 2717 | "http-errors": "^2.0.0", 2718 | "koa-compose": "^4.1.0", 2719 | "methods": "^1.1.2", 2720 | "path-to-regexp": "^6.2.1" 2721 | }, 2722 | "dependencies": { 2723 | "http-errors": { 2724 | "version": "2.0.0", 2725 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 2726 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 2727 | "requires": { 2728 | "depd": "2.0.0", 2729 | "inherits": "2.0.4", 2730 | "setprototypeof": "1.2.0", 2731 | "statuses": "2.0.1", 2732 | "toidentifier": "1.0.1" 2733 | } 2734 | }, 2735 | "statuses": { 2736 | "version": "2.0.1", 2737 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 2738 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 2739 | } 2740 | } 2741 | }, 2742 | "lines-and-columns": { 2743 | "version": "1.2.4", 2744 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 2745 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 2746 | }, 2747 | "lodash.clonedeep": { 2748 | "version": "4.5.0", 2749 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 2750 | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" 2751 | }, 2752 | "map-stream": { 2753 | "version": "0.0.7", 2754 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", 2755 | "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==" 2756 | }, 2757 | "media-typer": { 2758 | "version": "0.3.0", 2759 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2760 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 2761 | }, 2762 | "methods": { 2763 | "version": "1.1.2", 2764 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 2765 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 2766 | }, 2767 | "mime-db": { 2768 | "version": "1.52.0", 2769 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2770 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 2771 | }, 2772 | "mime-types": { 2773 | "version": "2.1.35", 2774 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2775 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2776 | "requires": { 2777 | "mime-db": "1.52.0" 2778 | } 2779 | }, 2780 | "mitt": { 2781 | "version": "3.0.0", 2782 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", 2783 | "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" 2784 | }, 2785 | "mkdirp-classic": { 2786 | "version": "0.5.3", 2787 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 2788 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 2789 | }, 2790 | "ms": { 2791 | "version": "2.1.2", 2792 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2793 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2794 | }, 2795 | "negotiator": { 2796 | "version": "0.6.3", 2797 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 2798 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 2799 | }, 2800 | "node-addon-api": { 2801 | "version": "3.2.1", 2802 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", 2803 | "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" 2804 | }, 2805 | "node-fetch": { 2806 | "version": "2.6.7", 2807 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 2808 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 2809 | "requires": { 2810 | "whatwg-url": "^5.0.0" 2811 | } 2812 | }, 2813 | "node-gyp-build": { 2814 | "version": "4.6.0", 2815 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", 2816 | "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" 2817 | }, 2818 | "object-inspect": { 2819 | "version": "1.12.3", 2820 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 2821 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" 2822 | }, 2823 | "on-finished": { 2824 | "version": "2.4.1", 2825 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 2826 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 2827 | "requires": { 2828 | "ee-first": "1.1.1" 2829 | } 2830 | }, 2831 | "once": { 2832 | "version": "1.4.0", 2833 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2834 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2835 | "requires": { 2836 | "wrappy": "1" 2837 | } 2838 | }, 2839 | "only": { 2840 | "version": "0.0.2", 2841 | "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", 2842 | "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" 2843 | }, 2844 | "parent-module": { 2845 | "version": "1.0.1", 2846 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2847 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2848 | "requires": { 2849 | "callsites": "^3.0.0" 2850 | } 2851 | }, 2852 | "parse-json": { 2853 | "version": "5.2.0", 2854 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 2855 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 2856 | "requires": { 2857 | "@babel/code-frame": "^7.0.0", 2858 | "error-ex": "^1.3.1", 2859 | "json-parse-even-better-errors": "^2.3.0", 2860 | "lines-and-columns": "^1.1.6" 2861 | } 2862 | }, 2863 | "parseurl": { 2864 | "version": "1.3.3", 2865 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2866 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2867 | }, 2868 | "path-to-regexp": { 2869 | "version": "6.2.1", 2870 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", 2871 | "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" 2872 | }, 2873 | "path-type": { 2874 | "version": "4.0.0", 2875 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2876 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 2877 | }, 2878 | "pause-stream": { 2879 | "version": "0.0.11", 2880 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 2881 | "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", 2882 | "requires": { 2883 | "through": "~2.3" 2884 | } 2885 | }, 2886 | "pend": { 2887 | "version": "1.2.0", 2888 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 2889 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 2890 | }, 2891 | "progress": { 2892 | "version": "2.0.3", 2893 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2894 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 2895 | }, 2896 | "proxy-from-env": { 2897 | "version": "1.1.0", 2898 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 2899 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 2900 | }, 2901 | "psl": { 2902 | "version": "1.9.0", 2903 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 2904 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 2905 | }, 2906 | "pump": { 2907 | "version": "3.0.0", 2908 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2909 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2910 | "requires": { 2911 | "end-of-stream": "^1.1.0", 2912 | "once": "^1.3.1" 2913 | } 2914 | }, 2915 | "punycode": { 2916 | "version": "2.3.0", 2917 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 2918 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" 2919 | }, 2920 | "puppeteer": { 2921 | "version": "20.1.2", 2922 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.1.2.tgz", 2923 | "integrity": "sha512-QYDp+iVMP30TwlkXFOocON9qR3Nac5ez7PdXbY90mfuEgZb9vf3/OXL2vHprxwPtb2hgD4AxXvLZhEIqfD2y8Q==", 2924 | "requires": { 2925 | "@puppeteer/browsers": "1.1.0", 2926 | "cosmiconfig": "8.1.3", 2927 | "puppeteer-core": "20.1.2" 2928 | } 2929 | }, 2930 | "puppeteer-core": { 2931 | "version": "20.1.2", 2932 | "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.1.2.tgz", 2933 | "integrity": "sha512-S1BLte+jVC/ugZkNoxFW9Fvbyr30CKZ0IIumf98FFqLh06Vuc21fddsr34botKtz27T81pqkpDYXNXYomA01dg==", 2934 | "requires": { 2935 | "@puppeteer/browsers": "1.1.0", 2936 | "chromium-bidi": "0.4.7", 2937 | "cross-fetch": "3.1.5", 2938 | "debug": "4.3.4", 2939 | "devtools-protocol": "0.0.1120988", 2940 | "ws": "8.13.0" 2941 | } 2942 | }, 2943 | "qs": { 2944 | "version": "6.11.1", 2945 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", 2946 | "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", 2947 | "requires": { 2948 | "side-channel": "^1.0.4" 2949 | } 2950 | }, 2951 | "querystringify": { 2952 | "version": "2.2.0", 2953 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 2954 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 2955 | }, 2956 | "raw-body": { 2957 | "version": "2.5.2", 2958 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 2959 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 2960 | "requires": { 2961 | "bytes": "3.1.2", 2962 | "http-errors": "2.0.0", 2963 | "iconv-lite": "0.4.24", 2964 | "unpipe": "1.0.0" 2965 | }, 2966 | "dependencies": { 2967 | "http-errors": { 2968 | "version": "2.0.0", 2969 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 2970 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 2971 | "requires": { 2972 | "depd": "2.0.0", 2973 | "inherits": "2.0.4", 2974 | "setprototypeof": "1.2.0", 2975 | "statuses": "2.0.1", 2976 | "toidentifier": "1.0.1" 2977 | } 2978 | }, 2979 | "statuses": { 2980 | "version": "2.0.1", 2981 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 2982 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 2983 | } 2984 | } 2985 | }, 2986 | "readable-stream": { 2987 | "version": "3.6.2", 2988 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 2989 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 2990 | "requires": { 2991 | "inherits": "^2.0.3", 2992 | "string_decoder": "^1.1.1", 2993 | "util-deprecate": "^1.0.1" 2994 | } 2995 | }, 2996 | "ref-napi": { 2997 | "version": "3.0.3", 2998 | "resolved": "https://registry.npmjs.org/ref-napi/-/ref-napi-3.0.3.tgz", 2999 | "integrity": "sha512-LiMq/XDGcgodTYOMppikEtJelWsKQERbLQsYm0IOOnzhwE9xYZC7x8txNnFC9wJNOkPferQI4vD4ZkC0mDyrOA==", 3000 | "requires": { 3001 | "debug": "^4.1.1", 3002 | "get-symbol-from-current-process-h": "^1.0.2", 3003 | "node-addon-api": "^3.0.0", 3004 | "node-gyp-build": "^4.2.1" 3005 | } 3006 | }, 3007 | "ref-struct-di": { 3008 | "version": "1.1.1", 3009 | "resolved": "https://registry.npmjs.org/ref-struct-di/-/ref-struct-di-1.1.1.tgz", 3010 | "integrity": "sha512-2Xyn/0Qgz89VT+++WP0sTosdm9oeowLP23wRJYhG4BFdMUrLj3jhwHZNEytYNYgtPKLNTP3KJX4HEgBvM1/Y2g==", 3011 | "requires": { 3012 | "debug": "^3.1.0" 3013 | }, 3014 | "dependencies": { 3015 | "debug": { 3016 | "version": "3.2.7", 3017 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 3018 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 3019 | "requires": { 3020 | "ms": "^2.1.1" 3021 | } 3022 | } 3023 | } 3024 | }, 3025 | "regenerator-runtime": { 3026 | "version": "0.13.11", 3027 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 3028 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 3029 | }, 3030 | "require-directory": { 3031 | "version": "2.1.1", 3032 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3033 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" 3034 | }, 3035 | "requires-port": { 3036 | "version": "1.0.0", 3037 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3038 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 3039 | }, 3040 | "resolve-from": { 3041 | "version": "4.0.0", 3042 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3043 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 3044 | }, 3045 | "safe-buffer": { 3046 | "version": "5.2.1", 3047 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3048 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 3049 | }, 3050 | "safer-buffer": { 3051 | "version": "2.1.2", 3052 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3053 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 3054 | }, 3055 | "setprototypeof": { 3056 | "version": "1.2.0", 3057 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 3058 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 3059 | }, 3060 | "side-channel": { 3061 | "version": "1.0.4", 3062 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 3063 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 3064 | "requires": { 3065 | "call-bind": "^1.0.0", 3066 | "get-intrinsic": "^1.0.2", 3067 | "object-inspect": "^1.9.0" 3068 | } 3069 | }, 3070 | "split": { 3071 | "version": "1.0.1", 3072 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 3073 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 3074 | "requires": { 3075 | "through": "2" 3076 | } 3077 | }, 3078 | "statuses": { 3079 | "version": "1.5.0", 3080 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3081 | "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" 3082 | }, 3083 | "stream-combiner": { 3084 | "version": "0.2.2", 3085 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", 3086 | "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", 3087 | "requires": { 3088 | "duplexer": "~0.1.1", 3089 | "through": "~2.3.4" 3090 | } 3091 | }, 3092 | "string_decoder": { 3093 | "version": "1.3.0", 3094 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 3095 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 3096 | "requires": { 3097 | "safe-buffer": "~5.2.0" 3098 | } 3099 | }, 3100 | "string-width": { 3101 | "version": "4.2.3", 3102 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3103 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3104 | "requires": { 3105 | "emoji-regex": "^8.0.0", 3106 | "is-fullwidth-code-point": "^3.0.0", 3107 | "strip-ansi": "^6.0.1" 3108 | } 3109 | }, 3110 | "strip-ansi": { 3111 | "version": "6.0.1", 3112 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3113 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3114 | "requires": { 3115 | "ansi-regex": "^5.0.1" 3116 | } 3117 | }, 3118 | "supports-color": { 3119 | "version": "5.5.0", 3120 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3121 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3122 | "requires": { 3123 | "has-flag": "^3.0.0" 3124 | } 3125 | }, 3126 | "tar-fs": { 3127 | "version": "2.1.1", 3128 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 3129 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 3130 | "requires": { 3131 | "chownr": "^1.1.1", 3132 | "mkdirp-classic": "^0.5.2", 3133 | "pump": "^3.0.0", 3134 | "tar-stream": "^2.1.4" 3135 | } 3136 | }, 3137 | "tar-stream": { 3138 | "version": "2.2.0", 3139 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 3140 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 3141 | "requires": { 3142 | "bl": "^4.0.3", 3143 | "end-of-stream": "^1.4.1", 3144 | "fs-constants": "^1.0.0", 3145 | "inherits": "^2.0.3", 3146 | "readable-stream": "^3.1.1" 3147 | } 3148 | }, 3149 | "through": { 3150 | "version": "2.3.8", 3151 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3152 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 3153 | }, 3154 | "tls-client": { 3155 | "version": "0.0.5", 3156 | "resolved": "https://registry.npmjs.org/tls-client/-/tls-client-0.0.5.tgz", 3157 | "integrity": "sha512-kx0+MRC7Ef7VIzdpyOz1zjXlanHMJFror4xT+mu/ZeBR/kbw5j931FSIaiI6W0FKB2Isj0X6XlfMfMB9mjubKA==", 3158 | "requires": { 3159 | "ffi-napi": "^4.0.3", 3160 | "tough-cookie": "^4.1.2" 3161 | } 3162 | }, 3163 | "toidentifier": { 3164 | "version": "1.0.1", 3165 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 3166 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 3167 | }, 3168 | "tough-cookie": { 3169 | "version": "4.1.2", 3170 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", 3171 | "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", 3172 | "requires": { 3173 | "psl": "^1.1.33", 3174 | "punycode": "^2.1.1", 3175 | "universalify": "^0.2.0", 3176 | "url-parse": "^1.5.3" 3177 | } 3178 | }, 3179 | "tr46": { 3180 | "version": "0.0.3", 3181 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 3182 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 3183 | }, 3184 | "tsscmp": { 3185 | "version": "1.0.6", 3186 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", 3187 | "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" 3188 | }, 3189 | "type-is": { 3190 | "version": "1.6.18", 3191 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3192 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3193 | "requires": { 3194 | "media-typer": "0.3.0", 3195 | "mime-types": "~2.1.24" 3196 | } 3197 | }, 3198 | "typescript": { 3199 | "version": "5.0.4", 3200 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", 3201 | "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", 3202 | "optional": true, 3203 | "peer": true 3204 | }, 3205 | "unbzip2-stream": { 3206 | "version": "1.4.3", 3207 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 3208 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 3209 | "requires": { 3210 | "buffer": "^5.2.1", 3211 | "through": "^2.3.8" 3212 | } 3213 | }, 3214 | "underscore": { 3215 | "version": "1.13.6", 3216 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", 3217 | "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" 3218 | }, 3219 | "underscore-keypath": { 3220 | "version": "0.0.22", 3221 | "resolved": "https://registry.npmjs.org/underscore-keypath/-/underscore-keypath-0.0.22.tgz", 3222 | "integrity": "sha512-fU7aYj1J2LQd+jqdQ67AlCOZKK3Pl+VErS8fGYcgZG75XB9/bY+RLM+F2xEcKHhHNtLvqqFyXAoZQlLYfec3Xg==", 3223 | "requires": { 3224 | "underscore": "*" 3225 | } 3226 | }, 3227 | "universalify": { 3228 | "version": "0.2.0", 3229 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 3230 | "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" 3231 | }, 3232 | "unpipe": { 3233 | "version": "1.0.0", 3234 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3235 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 3236 | }, 3237 | "url-parse": { 3238 | "version": "1.5.10", 3239 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 3240 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 3241 | "requires": { 3242 | "querystringify": "^2.1.1", 3243 | "requires-port": "^1.0.0" 3244 | } 3245 | }, 3246 | "user-agents": { 3247 | "version": "1.0.1374", 3248 | "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.0.1374.tgz", 3249 | "integrity": "sha512-HM3RZ4CCuo/TG6+DNeolWOlm6xqVfvNk4aCHXFht7MGr5HStiLlG3lyGjfnAIagrlTuc+tGEo0qy3ePastIUgw==", 3250 | "requires": { 3251 | "dot-json": "^1.3.0", 3252 | "lodash.clonedeep": "^4.5.0" 3253 | } 3254 | }, 3255 | "util-deprecate": { 3256 | "version": "1.0.2", 3257 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3258 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 3259 | }, 3260 | "uuid": { 3261 | "version": "9.0.0", 3262 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", 3263 | "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" 3264 | }, 3265 | "vary": { 3266 | "version": "1.1.2", 3267 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3268 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 3269 | }, 3270 | "webidl-conversions": { 3271 | "version": "3.0.1", 3272 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 3273 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 3274 | }, 3275 | "whatwg-url": { 3276 | "version": "5.0.0", 3277 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 3278 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 3279 | "requires": { 3280 | "tr46": "~0.0.3", 3281 | "webidl-conversions": "^3.0.0" 3282 | } 3283 | }, 3284 | "wrap-ansi": { 3285 | "version": "7.0.0", 3286 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3287 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3288 | "requires": { 3289 | "ansi-styles": "^4.0.0", 3290 | "string-width": "^4.1.0", 3291 | "strip-ansi": "^6.0.0" 3292 | }, 3293 | "dependencies": { 3294 | "ansi-styles": { 3295 | "version": "4.3.0", 3296 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3297 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3298 | "requires": { 3299 | "color-convert": "^2.0.1" 3300 | } 3301 | }, 3302 | "color-convert": { 3303 | "version": "2.0.1", 3304 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3305 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3306 | "requires": { 3307 | "color-name": "~1.1.4" 3308 | } 3309 | }, 3310 | "color-name": { 3311 | "version": "1.1.4", 3312 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3313 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 3314 | } 3315 | } 3316 | }, 3317 | "wrappy": { 3318 | "version": "1.0.2", 3319 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3320 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 3321 | }, 3322 | "ws": { 3323 | "version": "8.13.0", 3324 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", 3325 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 3326 | "requires": {} 3327 | }, 3328 | "xregexp": { 3329 | "version": "5.1.1", 3330 | "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.1.tgz", 3331 | "integrity": "sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==", 3332 | "requires": { 3333 | "@babel/runtime-corejs3": "^7.16.5" 3334 | } 3335 | }, 3336 | "y18n": { 3337 | "version": "5.0.8", 3338 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3339 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" 3340 | }, 3341 | "yargs": { 3342 | "version": "17.7.1", 3343 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", 3344 | "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", 3345 | "requires": { 3346 | "cliui": "^8.0.1", 3347 | "escalade": "^3.1.1", 3348 | "get-caller-file": "^2.0.5", 3349 | "require-directory": "^2.1.1", 3350 | "string-width": "^4.2.3", 3351 | "y18n": "^5.0.5", 3352 | "yargs-parser": "^21.1.1" 3353 | } 3354 | }, 3355 | "yargs-parser": { 3356 | "version": "21.1.1", 3357 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 3358 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" 3359 | }, 3360 | "yauzl": { 3361 | "version": "2.10.0", 3362 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 3363 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 3364 | "requires": { 3365 | "buffer-crc32": "~0.2.3", 3366 | "fd-slicer": "~1.1.0" 3367 | } 3368 | }, 3369 | "ylru": { 3370 | "version": "1.3.2", 3371 | "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", 3372 | "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==" 3373 | } 3374 | } 3375 | } 3376 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "package_name": "gpt4free-js", 3 | "name": "gpt4free-js", 4 | "version": "1.0.0", 5 | "description": "gpt4free javascript version", 6 | "main": "index.js", 7 | "scripts": { 8 | "start": "node index.js" 9 | }, 10 | "keywords": [ 11 | "gpt4free", 12 | "javascript" 13 | ], 14 | "type": "module", 15 | "author": "thaon", 16 | "dependencies": { 17 | "axios": "^1.4.0", 18 | "dotenv": "^16.0.3", 19 | "event-stream": "^4.0.1", 20 | "fake-useragent": "^1.0.1", 21 | "http-proxy-agent": "^6.0.1", 22 | "https-proxy-agent": "^5.0.1", 23 | "koa": "^2.14.2", 24 | "koa-bodyparser": "^4.4.0", 25 | "koa-router": "^12.0.0", 26 | "puppeteer": "^20.1.2", 27 | "tls-client": "^0.0.5", 28 | "user-agents": "^1.0.1367", 29 | "uuid": "^9.0.0" 30 | }, 31 | "devDependencies": {}, 32 | "repository": { 33 | "type": "git", 34 | "url": "git+https://github.com/Thaon/gpt4free-js.git" 35 | }, 36 | "license": "MIT", 37 | "bugs": { 38 | "url": "https://github.com/Thaon/gpt4free-js/issues" 39 | }, 40 | "homepage": "https://github.com/Thaon/gpt4free-js#readme" 41 | } 42 | -------------------------------------------------------------------------------- /pool/puppeteer.js: -------------------------------------------------------------------------------- 1 | import puppeteer from "puppeteer"; 2 | import fs from "fs"; 3 | import path from "path"; 4 | 5 | const runPath = path.join("./run"); 6 | 7 | export class FreeBrowser { 8 | browser = undefined; 9 | options; 10 | urls = new Set(); 11 | pages = {}; 12 | id; 13 | 14 | constructor(id, options) { 15 | this.options = { 16 | userDataDir: path.join(runPath, id), 17 | ...options, 18 | }; 19 | this.id = id; 20 | } 21 | 22 | async init() { 23 | this.browser = await puppeteer.launch(this.options); 24 | } 25 | 26 | async getPage(url) { 27 | if (!this.browser) { 28 | throw new Error("Browser must init first"); 29 | } 30 | if (this.pages[url]) { 31 | return this.pages[url]; 32 | } 33 | const page = await this.browser.newPage(); 34 | await page.goto(url); 35 | 36 | this.pages[url] = page; 37 | return page; 38 | } 39 | } 40 | 41 | class FreeBrowserPool { 42 | size = 0; 43 | pool; 44 | 45 | constructor() { 46 | this.pool = []; 47 | } 48 | 49 | async init(size, debug) { 50 | console.log(`browser pool init size:${size}`); 51 | if (!fs.existsSync(runPath)) { 52 | fs.mkdirSync(runPath); 53 | } 54 | this.size = size; 55 | const options = { 56 | headless: !debug, 57 | }; 58 | for (let i = 0; i < size; i++) { 59 | const browser = new FreeBrowser(`${i}`, options); 60 | await browser.init(); 61 | this.pool.push(browser); 62 | } 63 | } 64 | 65 | getRandom() { 66 | return this.pool[Math.floor(Math.random() * this.pool.length)]; 67 | } 68 | } 69 | 70 | export const freeBrowserPool = new FreeBrowserPool(); 71 | -------------------------------------------------------------------------------- /utils/emailFactory.js: -------------------------------------------------------------------------------- 1 | import { md5, randomStr } from "./index.js"; 2 | import { CreateAxiosProxy } from "./proxyAgent.js"; 3 | 4 | // export enum TempEmailType { 5 | // // need credit card https://rapidapi.com/Privatix/api/temp-mail 6 | // TempEmail = 'temp-email', 7 | // // not need credit card , hard limit 100/day https://rapidapi.com/calvinloveland335703-0p6BxLYIH8f/api/temp-mail44 8 | // TempEmail44 = 'temp-email44', 9 | // } 10 | 11 | // export interface BaseMailMessage { 12 | // // main content of email 13 | // content: string; 14 | // } 15 | 16 | // export interface TempMailMessage extends BaseMailMessage { 17 | // _id: { 18 | // oid: string; 19 | // }; 20 | // createdAt: { 21 | // milliseconds: number; 22 | // }; 23 | // mail_id: string; 24 | // mail_address_id: string; 25 | // mail_from: string; 26 | // mail_subject: string; 27 | // mail_preview: string; 28 | // mail_text_only: string; 29 | // mail_text: string; 30 | // mail_html: string; 31 | // mail_timestamp: number; 32 | // mail_attachments_count: number; 33 | // mail_attachments: { 34 | // attachment[]; 35 | // }; 36 | // } 37 | 38 | // interface BaseOptions { 39 | // } 40 | 41 | // export interface TempMailOptions extends BaseOptions { 42 | // apikey?: string; 43 | // } 44 | 45 | export function CreateEmail(tempMailType, options) { 46 | switch (tempMailType) { 47 | case "temp-email44": 48 | return new TempMail44(options); 49 | case "temp-email": 50 | return new TempMail(options); 51 | default: 52 | throw new Error("not support TempEmailType"); 53 | } 54 | } 55 | 56 | class BaseEmail { 57 | constructor(options) {} 58 | 59 | getMailAddress() {} 60 | 61 | waitMails() {} 62 | } 63 | 64 | class TempMail extends BaseEmail { 65 | client; 66 | address; 67 | mailID; 68 | 69 | constructor(options) { 70 | super(options); 71 | const apikey = options?.apikey || process.env.rapid_api_key; 72 | if (!apikey) { 73 | throw new Error("Need apikey for TempMail"); 74 | } 75 | this.client = CreateAxiosProxy({ 76 | baseURL: "https://privatix-temp-mail-v1.p.rapidapi.com/request/", 77 | headers: { 78 | "X-RapidAPI-Key": apikey, 79 | "X-RapidAPI-Host": "privatix-temp-mail-v1.p.rapidapi.com", 80 | }, 81 | }); 82 | } 83 | 84 | async getMailAddress() { 85 | this.address = `${randomStr()}${await this.randomDomain()}`; 86 | this.mailID = md5(this.address); 87 | return this.address; 88 | } 89 | 90 | async waitMails() { 91 | const mailID = this.mailID; 92 | return new Promise((resolve) => { 93 | let time = 0; 94 | const itl = setInterval(async () => { 95 | const response = await this.client.get(`/mail/id/${mailID}`); 96 | if (response.data && response.data.length > 0) { 97 | resolve( 98 | response.data.map((item) => ({ ...item, content: item.mail_html })) 99 | ); 100 | clearInterval(itl); 101 | return; 102 | } 103 | if (time > 5) { 104 | resolve([]); 105 | clearInterval(itl); 106 | return; 107 | } 108 | time++; 109 | }, 5000); 110 | }); 111 | } 112 | 113 | async getDomainsList() { 114 | const res = await this.client.get(`/domains/`); 115 | return res.data; 116 | } 117 | 118 | async randomDomain() { 119 | const domainList = await this.getDomainsList(); 120 | return domainList[Math.floor(Math.random() * domainList.length)]; 121 | } 122 | } 123 | 124 | class TempMail44 extends BaseEmail { 125 | client; 126 | address; 127 | 128 | constructor(options) { 129 | super(options); 130 | const apikey = options?.apikey || process.env.rapid_api_key; 131 | if (!apikey) { 132 | throw new Error("Need apikey for TempMail"); 133 | } 134 | this.client = CreateAxiosProxy({ 135 | baseURL: "https://temp-mail44.p.rapidapi.com/api/v3/email/", 136 | headers: { 137 | "X-RapidAPI-Key": apikey, 138 | "X-RapidAPI-Host": "temp-mail44.p.rapidapi.com", 139 | }, 140 | }); 141 | } 142 | 143 | async getMailAddress() { 144 | const response = await this.client.post( 145 | "/new", 146 | {}, 147 | { 148 | headers: { 149 | "content-type": "application/json", 150 | }, 151 | } 152 | ); 153 | this.address = response.data.email; 154 | return this.address; 155 | } 156 | 157 | async waitMails() { 158 | return new Promise((resolve) => { 159 | let time = 0; 160 | const itl = setInterval(async () => { 161 | const response = await this.client.get(`/${this.address}/messages`); 162 | if (response.data && response.data.length > 0) { 163 | resolve( 164 | response.data.map((item) => ({ ...item, content: item.body_html })) 165 | ); 166 | clearInterval(itl); 167 | return; 168 | } 169 | if (time > 5) { 170 | resolve([]); 171 | clearInterval(itl); 172 | return; 173 | } 174 | time++; 175 | }, 5000); 176 | }); 177 | } 178 | } 179 | -------------------------------------------------------------------------------- /utils/index.js: -------------------------------------------------------------------------------- 1 | import es from "event-stream"; 2 | import { PassThrough } from "stream"; 3 | import * as crypto from "crypto"; 4 | import { v4 } from "uuid"; 5 | 6 | // type eventFunc = (eventName, data) => void; 7 | 8 | export function toEventCB(arr, emit) { 9 | const pt = new PassThrough(); 10 | pt.write(arr); 11 | pt.pipe(es.split(/\r?\n\r?\n/)) //split stream to break on newlines 12 | .pipe( 13 | es.map(async function (chunk, cb) { 14 | //turn this async function into a stream 15 | const [eventStr, dataStr] = chunk.split(/\r?\n/); 16 | const event = eventStr.replace(/event: /, ""); 17 | const data = dataStr.replace(/data: /, ""); 18 | emit(event, data); 19 | cb(null, { data, event }); 20 | }) 21 | ); 22 | } 23 | 24 | export function toEventStream(arr) { 25 | const pt = new PassThrough(); 26 | pt.write(arr); 27 | return pt; 28 | } 29 | 30 | export function md5(str) { 31 | return crypto.createHash("md5").update(str).digest("hex"); 32 | } 33 | 34 | export function randomStr() { 35 | return v4().split("-").join("").slice(-6); 36 | } 37 | 38 | export function parseJSON(str, defaultObj) { 39 | try { 40 | return JSON.parse(str); 41 | } catch (e) { 42 | console.error(str, e); 43 | return defaultObj; 44 | } 45 | } 46 | 47 | export function encryptWithAes256Cbc(data, key) { 48 | const hash = crypto.createHash("sha256").update(key).digest(); 49 | const iv = crypto.randomBytes(16); 50 | const cipher = crypto.createCipheriv("aes-256-cbc", hash, iv); 51 | 52 | let encryptedData = cipher.update(data, "utf-8", "hex"); 53 | encryptedData += cipher.final("hex"); 54 | 55 | return iv.toString("hex") + encryptedData; 56 | } 57 | -------------------------------------------------------------------------------- /utils/proxyAgent.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import HttpsProxyAgent from "https-proxy-agent"; 3 | import tlsClient from "tls-client"; 4 | 5 | export function CreateAxiosProxy(config, proxy) { 6 | const createConfig = { ...config }; 7 | const useProxy = process.env.http_proxy || proxy; 8 | if (useProxy) { 9 | createConfig.proxy = false; 10 | createConfig.httpAgent = HttpsProxyAgent(useProxy); 11 | createConfig.httpsAgent = HttpsProxyAgent(useProxy); 12 | } 13 | return axios.create(createConfig); 14 | } 15 | 16 | export function CreateTlsProxy(config, proxy) { 17 | const client = new tlsClient.Session(config); 18 | const useProxy = process.env.http_proxy || proxy; 19 | if (useProxy) { 20 | client.proxy = useProxy; 21 | } 22 | return client; 23 | } 24 | --------------------------------------------------------------------------------