From a12d5dbb78f4161033b38eb2cffba353db26c598 Mon Sep 17 00:00:00 2001 From: Leifer Date: Mon, 24 Oct 2022 13:22:12 +0200 Subject: [PATCH 001/459] first --- package.json | 5 +++++ packages/README.md | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 packages/README.md diff --git a/package.json b/package.json index df28d5d..4c2c0bc 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,11 @@ "start": "node ./app.js", "test": "echo \"Error: no test specified\" && exit 1" }, + "workspaces":[ + "packages/cli", + "packages/io", + "packages/providers" + ], "keywords": [ "whatsapp", "bot-whatsapp", diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 0000000..18681e2 --- /dev/null +++ b/packages/README.md @@ -0,0 +1,30 @@ +### 🚀 Packages + +Se separaran responsabilidades del proyecto en diferentes packages, de esta manera se podra versionar y controlar los diferentes versionamientos y cambios con un mayor desacoplamiento. + +##### Principales Funciones + El bot tiene tres funciones principales hasta este momento la cuales divideremos en paquetes para que puedan trabajarse y por separador sin acoplamiento. + +__Package CLI__ (*Command Line Interface*) +> Sera basicamente un asistente via `cosola` el cual nos ayudara a realizar las instalacion de las dependencias necesarias y a crear un archivo de configuracion para tener un migrado rápido. +> La idea esque se pueda ejecutar un commando parecido a `npm create bot@leifermendez` o algo parecido y comienze a instalar todo. + +🤞 Funciones deseadas: + +- Que actualice y corrija los problema de versionamientos más frecuetes +- Verificar la versión de NODE correcta +- Verificar OS para brindar mejor soporte de puppeter +- Limpiar sesion, borrar carpeta de sesion +- Seleccionar provider +- Poder usar un archivo .json con la configuración + + +__Package Provider__ +> Es parte clave del proyecto la idea es poder tener la opcion de incluir otro proveedor de mensajeria como la api oficial o api de twilio + +- WhatsappWeb (*default*) +- Whatsapp API official +- Twilio + +__Package Input/Output__ +> Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos \ No newline at end of file From 40b08622ece48006b4fe7a10ee2c3e1333e530ab Mon Sep 17 00:00:00 2001 From: Leifer Date: Mon, 24 Oct 2022 14:37:20 +0200 Subject: [PATCH 002/459] monorepo/cli --- package-lock.json | 82 ++++++++++++++++++++++++++------------- package.json | 2 +- packages/cli/TODO.md | 4 ++ packages/cli/check.js | 34 ++++++++++++++++ packages/cli/index.js | 0 packages/cli/package.json | 15 +++++++ packages/cli/tool.js | 0 7 files changed, 109 insertions(+), 28 deletions(-) create mode 100644 packages/cli/TODO.md create mode 100644 packages/cli/check.js create mode 100644 packages/cli/index.js create mode 100644 packages/cli/package.json create mode 100644 packages/cli/tool.js diff --git a/package-lock.json b/package-lock.json index 5e7dbf1..86634be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,11 @@ "name": "bot-whatsapp", "version": "1.0.0", "license": "ISC", + "workspaces": [ + "packages/cli", + "packages/io", + "packages/providers" + ], "dependencies": { "@google-cloud/dialogflow": "^5.2.0", "cors": "^2.8.5", @@ -27,8 +32,7 @@ }, "devDependencies": { "pm2": "^5.2.0", - "prettier": "2.7.1", - "rollup": "^3.2.3" + "prettier": "2.7.1" }, "engines": { "node": "16.x" @@ -1133,6 +1137,10 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "node_modules/cli": { + "resolved": "packages/cli", + "link": true + }, "node_modules/cli-tableau": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", @@ -2728,6 +2736,15 @@ "graceful-fs": "^4.1.9" } }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/lazy": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", @@ -4242,22 +4259,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rollup": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", - "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/run-series": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", @@ -5126,6 +5127,15 @@ "which": "bin/which" } }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/wmf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", @@ -5319,6 +5329,14 @@ "engines": { "node": ">= 10" } + }, + "packages/cli": { + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "kleur": "^4.1.5", + "which-pm-runs": "^1.1.0" + } } }, "dependencies": { @@ -6192,6 +6210,13 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "cli": { + "version": "file:packages/cli", + "requires": { + "kleur": "*", + "which-pm-runs": "^1.1.0" + } + }, "cli-tableau": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", @@ -7435,6 +7460,12 @@ "graceful-fs": "^4.1.9" } }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, "lazy": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", @@ -8598,15 +8629,6 @@ "glob": "^7.1.3" } }, - "rollup": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", - "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, "run-series": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", @@ -9260,6 +9282,12 @@ "isexe": "^2.0.0" } }, + "which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "dev": true + }, "wmf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", diff --git a/package.json b/package.json index 4c2c0bc..2e5c735 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "start": "node ./app.js", "test": "echo \"Error: no test specified\" && exit 1" }, - "workspaces":[ + "workspaces": [ "packages/cli", "packages/io", "packages/providers" diff --git a/packages/cli/TODO.md b/packages/cli/TODO.md new file mode 100644 index 0000000..8970046 --- /dev/null +++ b/packages/cli/TODO.md @@ -0,0 +1,4 @@ +- [X] Revisar version de NODE +- [X] Revisar OS +- Obtener Package Manager +- Revisar las libreria de WhatsappWeb para obtener version reciente \ No newline at end of file diff --git a/packages/cli/check.js b/packages/cli/check.js new file mode 100644 index 0000000..b1c4749 --- /dev/null +++ b/packages/cli/check.js @@ -0,0 +1,34 @@ +const {red, yellow} = require('kleur') + +const checkNodeVersion = () => { + const version = process.version; + const majorVersion = parseInt(version.replace('v','').split('.').shift()) + if(majorVersion < 16){ + console.error( + red(`🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}`) + ) + process.exit(1) + } + +} + +const checkOs = () => { + const os = process.platform + if(!os.includes('win32')){ + const messages = [ + `El sistema operativo actual (${os}) posiblemente requiera`, + `una confiuración adicional referente al puppeter`, + ``, + `Recuerda pasar por el WIKI`, + `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`, + `` + ] + + console.log( + yellow(messages.join(' \n')) + ) + } +} + + +module.exports ={ checkNodeVersion, checkOs } \ No newline at end of file diff --git a/packages/cli/index.js b/packages/cli/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 0000000..48834ca --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,15 @@ +{ + "name": "cli", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "kleur": "^4.1.5" + } +} diff --git a/packages/cli/tool.js b/packages/cli/tool.js new file mode 100644 index 0000000..e69de29 From 5dc81f60c00325692c3fe26c626e72c0be859f8d Mon Sep 17 00:00:00 2001 From: Leifer Date: Mon, 24 Oct 2022 17:55:07 +0200 Subject: [PATCH 003/459] cli update --- .prettierrc.json | Bin 2 -> 280 bytes package-lock.json | 368 ++++++++++++++++++++++++++++++-- packages/README.md | 11 +- packages/cli/.prettierrc.json | Bin 0 -> 66 bytes packages/cli/README.md | 18 ++ packages/cli/TODO.md | 4 +- packages/cli/check.js | 8 +- packages/cli/clean.js | 20 ++ packages/cli/install.js | 18 ++ packages/cli/interactive.js | 53 +++++ packages/cli/package.json | 9 +- packages/cli/pkg-to-update.json | 3 + packages/cli/tool.js | 72 +++++++ 13 files changed, 561 insertions(+), 23 deletions(-) create mode 100644 packages/cli/.prettierrc.json create mode 100644 packages/cli/README.md create mode 100644 packages/cli/clean.js create mode 100644 packages/cli/install.js create mode 100644 packages/cli/interactive.js create mode 100644 packages/cli/pkg-to-update.json diff --git a/.prettierrc.json b/.prettierrc.json index 46b134b197f35e75e0784bedbf94a8dd124693b1..6d06d7a005e703b7aa35134a3a1a17cc4f387900 100644 GIT binary patch literal 280 zcmaKou?oU47=*vsr;yAYwBXXUPap`+DUDi4t(bNaUtN1`vb2I6A<6&W-G9mV^J2p` z!O-)>(%`l3Tq)^j1&g5&%istcv}Y@wrQ$4AEstAb=POo_x)mpSO|u47mQEo}_Uatf m@8swHDjxEg()K^|_w0nF|DgPilU`Km6q8(Z^K(7^#hVca<0xwY literal 2 JcmezW4*&xG0sa60 diff --git a/package-lock.json b/package-lock.json index 86634be..e3b801d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1308,6 +1308,35 @@ "node-fetch": "2.6.7" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/culvert": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", @@ -1373,6 +1402,18 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/devtools-protocol": { "version": "0.0.981744", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", @@ -1719,6 +1760,41 @@ "node": ">=8.3.0" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -2423,6 +2499,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2989,6 +3074,12 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -3027,6 +3118,15 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3225,6 +3325,18 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nssocket": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", @@ -3287,6 +3399,21 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -3422,6 +3549,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3749,6 +3885,28 @@ "read": "^1.0.4" } }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/proto3-json-serializer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", @@ -4386,6 +4544,27 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", @@ -4411,6 +4590,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4648,6 +4833,15 @@ "node": ">=8" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5127,15 +5321,6 @@ "which": "bin/which" } }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/wmf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", @@ -5333,9 +5518,15 @@ "packages/cli": { "version": "1.0.0", "license": "ISC", + "dependencies": { + "whatsapp-web.js": "^1.18.0" + }, "devDependencies": { + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", "kleur": "^4.1.5", - "which-pm-runs": "^1.1.0" + "prompts": "^2.4.2", + "rimraf": "^3.0.2" } } }, @@ -6213,8 +6404,12 @@ "cli": { "version": "file:packages/cli", "requires": { - "kleur": "*", - "which-pm-runs": "^1.1.0" + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5", + "prompts": "^2.4.2", + "rimraf": "*", + "whatsapp-web.js": "^1.18.0" } }, "cli-tableau": { @@ -6351,6 +6546,28 @@ "node-fetch": "2.6.7" } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "culvert": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", @@ -6403,6 +6620,15 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "requires": { + "execa": "^5.1.1" + } + }, "devtools-protocol": { "version": "0.0.981744", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", @@ -6660,6 +6886,31 @@ "uuid": "^8.3.0" } }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -7194,6 +7445,12 @@ } } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -7679,6 +7936,12 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -7702,6 +7965,12 @@ "mime-db": "1.52.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -7854,6 +8123,15 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "nssocket": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", @@ -7903,6 +8181,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -8002,6 +8289,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -8248,6 +8541,24 @@ "read": "^1.0.4" } }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } + } + }, "proto3-json-serializer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", @@ -8715,6 +9026,21 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", @@ -8737,6 +9063,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -8922,6 +9254,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -9282,12 +9620,6 @@ "isexe": "^2.0.0" } }, - "which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "dev": true - }, "wmf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", diff --git a/packages/README.md b/packages/README.md index 18681e2..6214268 100644 --- a/packages/README.md +++ b/packages/README.md @@ -27,4 +27,13 @@ __Package Provider__ - Twilio __Package Input/Output__ -> Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos \ No newline at end of file +> Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos + +--------- +__Comunidad__ +> Forma parte de este proyecto. + +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) \ No newline at end of file diff --git a/packages/cli/.prettierrc.json b/packages/cli/.prettierrc.json new file mode 100644 index 0000000000000000000000000000000000000000..6716a2761831e45cf188075b8c7f57793f497389 GIT binary patch literal 66 zcmezWubP32K>-St7)lt57!nyW8FGL)k0G7GnIWGc7YGv>lo+gls+1T~8HyQ9fiy%{ GEdv0s=?ee= literal 0 HcmV?d00001 diff --git a/packages/cli/README.md b/packages/cli/README.md new file mode 100644 index 0000000..87e22bd --- /dev/null +++ b/packages/cli/README.md @@ -0,0 +1,18 @@ +# @bot-whatsapp/cli + +- [X] Revisar version de NODE +- [X] Revisar OS +- [X] Obtener Package Manager +- [X] Revisar las libreria de WhatsappWeb para obtener version reciente +- [X] Opcion interactiva de limpiar session +- [ ] Opcion de generar `json` con la configuracion +- [ ] Agregar `rollup` para limpiar el codigo + +--------- +__Comunidad__ +> Forma parte de este proyecto. + +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) \ No newline at end of file diff --git a/packages/cli/TODO.md b/packages/cli/TODO.md index 8970046..316ecb6 100644 --- a/packages/cli/TODO.md +++ b/packages/cli/TODO.md @@ -1,4 +1,4 @@ - [X] Revisar version de NODE - [X] Revisar OS -- Obtener Package Manager -- Revisar las libreria de WhatsappWeb para obtener version reciente \ No newline at end of file +- [X] Obtener Package Manager +- [X] Revisar las libreria de WhatsappWeb para obtener version reciente \ No newline at end of file diff --git a/packages/cli/check.js b/packages/cli/check.js index b1c4749..e87050a 100644 --- a/packages/cli/check.js +++ b/packages/cli/check.js @@ -1,6 +1,7 @@ -const {red, yellow} = require('kleur') +const {red, yellow, green, bgCyan} = require('kleur') const checkNodeVersion = () => { + console.log(bgCyan('🚀 Revisando tu Node.js')) const version = process.version; const majorVersion = parseInt(version.replace('v','').split('.').shift()) if(majorVersion < 16){ @@ -9,10 +10,13 @@ const checkNodeVersion = () => { ) process.exit(1) } + console.log(green(`Node.js combatible ${version}`)) + console.log(``) } const checkOs = () => { + console.log(bgCyan('🙂 Revisando tu Sistema Operativo')) const os = process.platform if(!os.includes('win32')){ const messages = [ @@ -28,6 +32,8 @@ const checkOs = () => { yellow(messages.join(' \n')) ) } + + console.log(``) } diff --git a/packages/cli/clean.js b/packages/cli/clean.js new file mode 100644 index 0000000..e3f200a --- /dev/null +++ b/packages/cli/clean.js @@ -0,0 +1,20 @@ +const rimraf = require("rimraf"); +const { yellow } = require('kleur') +const { join } = require('path') + + +const PATH_WW = [ + join(process.cwd(), '.wwebjs_auth'), + join(process.cwd(), 'session.json') +] + +const cleanSession = () => { + const queue = [] + for (const PATH of PATH_WW) { + console.log(yellow(`😬 Eliminando: ${PATH}`)) + queue.push(rimraf(PATH, () => Promise.resolve())) + } + return Promise.all(queue) +} + +module.exports = { cleanSession } \ No newline at end of file diff --git a/packages/cli/install.js b/packages/cli/install.js new file mode 100644 index 0000000..0d385cc --- /dev/null +++ b/packages/cli/install.js @@ -0,0 +1,18 @@ +const { readFileSync } = require('fs') +const { join } = require('path') +const { installDeps, getPkgManage } = require('./tool') + +const PKG_TO_UPDATE = () => { + const data = readFileSync(join(__dirname, 'pkg-to-update.json'), 'utf-8') + const dataParse = JSON.parse(data) + const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`) + return pkg +} + + +const installAll = async () => { + const pkg = await getPkgManage() + installDeps('npm', PKG_TO_UPDATE()).runInstall() +} + +module.exports = { installAll } \ No newline at end of file diff --git a/packages/cli/interactive.js b/packages/cli/interactive.js new file mode 100644 index 0000000..9929b7a --- /dev/null +++ b/packages/cli/interactive.js @@ -0,0 +1,53 @@ +const prompts = require('prompts'); +const { installAll } = require('./install') +const { cleanSession } = require('./clean') +const { checkNodeVersion, checkOs } = require('./check') + +const questions = [ + { + type: 'text', + name: 'dependencies', + message: 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)' + }, + { + type: 'text', + name: 'cleanTmp', + message: 'Quieres limpiar la session del bot? (Y/n)' + } +]; + + +(async () => { + console.clear() + checkNodeVersion() + checkOs() + const onCancel = prompt => { + console.log('Proceso cancelado!'); + return true; + } + const response = await prompts(questions, { onCancel }); + const { dependencies = '', cleanTmp = '' } = response + + const installOrUdpateDep = async () => { + const answer = dependencies.toLowerCase() || 'n' + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await installAll() + return true + } + } + + const cleanAllSession = async () => { + const answer = cleanTmp.toLowerCase() || 'n' + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await cleanSession() + return true + } + } + + installOrUdpateDep() + cleanAllSession() +})(); \ No newline at end of file diff --git a/packages/cli/package.json b/packages/cli/package.json index 48834ca..bec3d8f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -10,6 +10,13 @@ "author": "", "license": "ISC", "devDependencies": { - "kleur": "^4.1.5" + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5", + "prompts": "^2.4.2", + "rimraf": "^3.0.2" + }, + "dependencies": { + "whatsapp-web.js": "^1.18.0" } } diff --git a/packages/cli/pkg-to-update.json b/packages/cli/pkg-to-update.json new file mode 100644 index 0000000..ee745df --- /dev/null +++ b/packages/cli/pkg-to-update.json @@ -0,0 +1,3 @@ +{ + "whatsapp-web.js":"latest" +} \ No newline at end of file diff --git a/packages/cli/tool.js b/packages/cli/tool.js index e69de29..640e81c 100644 --- a/packages/cli/tool.js +++ b/packages/cli/tool.js @@ -0,0 +1,72 @@ +const { red } = require('kleur') +const spawn = require('cross-spawn') +const { detect } = require('detect-package-manager') +const PKG_OPTION = { + npm: 'install', + yarn: 'add', + pnpm: 'add' +} + +const getPkgManage = async () => { + const pkg = await detect() + return pkg +} + +const installDeps = (pkgManager, package) => { + const errorMessage = `Ocurrio un error instalando ${package}` + let childProcess = [] + + const installSingle = (pkgInstall) => () => { + new Promise((resolve, reject) => { + try { + childProcess = spawn(pkgManager, [PKG_OPTION[pkgManager], pkgInstall], { + stdio: 'inherit' + }) + + childProcess.on('error', (e) => { + console.error(e) + console.error( + red(errorMessage) + ) + resolve() + }) + + childProcess.on('close', (code) => { + if (code === 0) { + resolve() + } else { + console.error(code) + console.error( + red(errorMessage) + ) + } + }) + + resolve() + } catch (e) { + console.error(e) + console.error( + red(errorMessage) + ) + } + + }) + } + + if (typeof package === 'string') { + childProcess.push(installSingle(package)) + } else { + for (const pkg of package) { + childProcess.push(installSingle(pkg)) + } + } + + + const runInstall = () => { + return Promise.all(childProcess.map((i) => i())) + } + return { runInstall } + +} + +module.exports = { getPkgManage, installDeps } \ No newline at end of file From ceade8533415dc366e4f657352c4eaf0f047c675 Mon Sep 17 00:00:00 2001 From: Leifer Date: Tue, 25 Oct 2022 13:43:17 +0200 Subject: [PATCH 004/459] add validation cli --- .eslintrc.js | 16 + .prettierrc.json | Bin 280 -> 93 bytes package-lock.json | 1571 ++++++++++++++++- package.json | 8 +- packages/cli/.prettierrc.json | Bin 66 -> 0 bytes packages/cli/README.md | 28 +- packages/cli/TODO.md | 8 +- packages/cli/bin/cli.js | 3 + packages/cli/{check.js => check/index.js} | 24 +- packages/cli/{clean.js => clean/index.js} | 7 +- packages/cli/db/index.js | 0 packages/cli/index.js | 3 + packages/cli/{install.js => install/index.js} | 7 +- packages/cli/{ => install}/tool.js | 41 +- packages/cli/interactive.js | 53 - packages/cli/interactive/index.js | 125 ++ packages/cli/lib/bundle.cjs | 286 +++ packages/cli/package.json | 43 +- packages/cli/pkg-to-update.json | 4 +- packages/cli/provider/index.js | 0 packages/cli/rollup-cli.config.js | 10 + 21 files changed, 2093 insertions(+), 144 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 packages/cli/.prettierrc.json create mode 100644 packages/cli/bin/cli.js rename packages/cli/{check.js => check/index.js} (59%) rename packages/cli/{clean.js => clean/index.js} (77%) create mode 100644 packages/cli/db/index.js rename packages/cli/{install.js => install/index.js} (76%) rename packages/cli/{ => install}/tool.js (58%) delete mode 100644 packages/cli/interactive.js create mode 100644 packages/cli/interactive/index.js create mode 100644 packages/cli/lib/bundle.cjs create mode 100644 packages/cli/provider/index.js create mode 100644 packages/cli/rollup-cli.config.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c554a26 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,16 @@ +module.exports = { + "env": { + "browser": true, + "commonjs": true, + "es2021": true, + "node": true + }, + "extends": "eslint:recommended", + "overrides": [ + ], + "parserOptions": { + "ecmaVersion": "latest" + }, + "rules": { + } +} diff --git a/.prettierrc.json b/.prettierrc.json index 6d06d7a005e703b7aa35134a3a1a17cc4f387900..d1039fbcfb6175da0b03406b37683872030c6cf7 100644 GIT binary patch literal 93 zcmb>CQUC&_lA^@SoXos*=ltB(%`l3Tq)^j1&g5&%istcv}Y@wrQ$4AEstAb=POo_x)mpSO|u47mQEo}_Uatf m@8swHDjxEg()K^|_w0nF|DgPilU`Km6q8(Z^K(7^#hVca<0xwY diff --git a/package-lock.json b/package-lock.json index e3b801d..a7a85fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,8 +31,12 @@ "xlsx": "^0.18.5" }, "devDependencies": { + "@rollup/plugin-commonjs": "^23.0.2", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.5.0", "pm2": "^5.2.0", - "prettier": "2.7.1" + "prettier": "^2.7.1", + "rollup": "^3.2.3" }, "engines": { "node": "16.x" @@ -49,6 +53,52 @@ "node": ">=6.0.0" } }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@fast-csv/format": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", @@ -117,6 +167,97 @@ "node": ">=6" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", + "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@opencensus/core": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", @@ -475,6 +616,93 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, + "node_modules/@rollup/plugin-commonjs": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", + "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.26.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -504,6 +732,12 @@ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, "node_modules/@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", @@ -633,6 +867,22 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/amp": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", @@ -1052,6 +1302,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -1193,6 +1452,12 @@ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, "node_modules/compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -1419,6 +1684,18 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -1667,6 +1944,114 @@ "node": ">=4.0" } }, + "node_modules/eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -1675,6 +2060,169 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/espree": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", @@ -1703,6 +2251,30 @@ "node": ">=4" } }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -1711,6 +2283,12 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1893,12 +2471,24 @@ "node": ">=10.0.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "node_modules/fast-json-patch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", "dev": true }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -1909,6 +2499,15 @@ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fclone": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", @@ -1923,6 +2522,18 @@ "pend": "~1.2.0" } }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/file-type": { "version": "17.1.6", "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", @@ -1989,6 +2600,25 @@ "node": ">=8" } }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, "node_modules/fluent-ffmpeg": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", @@ -2305,6 +2935,21 @@ "node": ">= 6" } }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/google-auth-library": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", @@ -2371,6 +3016,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/gtoken": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", @@ -2538,11 +3189,45 @@ } ] }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2639,6 +3324,24 @@ "node": ">=0.12.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -2683,6 +3386,24 @@ "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", "dev": true }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/js2xmlparser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", @@ -2735,6 +3456,18 @@ "bignumber.js": "^9.0.0" } }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -2986,6 +3719,12 @@ "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", @@ -3021,6 +3760,18 @@ "node": ">=10" } }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -3236,6 +3987,12 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, "node_modules/needle": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", @@ -3525,6 +4282,18 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -4108,6 +4877,15 @@ "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/puppeteer": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", @@ -4199,6 +4977,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -4300,6 +5098,18 @@ "node": ">=8.10.0" } }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4370,6 +5180,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/retry-request": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", @@ -4403,6 +5222,16 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -4417,6 +5246,45 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", + "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/run-series": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", @@ -4757,6 +5625,12 @@ "source-map": "^0.6.0" } }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "node_modules/sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -4950,6 +5824,12 @@ "node": ">=6" } }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -5051,6 +5931,18 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -5159,6 +6051,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5502,6 +6403,18 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", @@ -5518,9 +6431,6 @@ "packages/cli": { "version": "1.0.0", "license": "ISC", - "dependencies": { - "whatsapp-web.js": "^1.18.0" - }, "devDependencies": { "cross-spawn": "^7.0.3", "detect-package-manager": "^2.0.1", @@ -5536,6 +6446,40 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "@fast-csv/format": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", @@ -5592,6 +6536,72 @@ "yargs": "^16.2.0" } }, + "@humanwhocodes/config-array": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", + "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@opencensus/core": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", @@ -5892,6 +6902,64 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, + "@rollup/plugin-commonjs": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", + "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.26.4" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, "@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -5918,6 +6986,12 @@ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, "@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", @@ -6018,6 +7092,18 @@ } } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "amp": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", @@ -6339,6 +7425,12 @@ "get-intrinsic": "^1.0.2" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -6408,8 +7500,7 @@ "detect-package-manager": "^2.0.1", "kleur": "^4.1.5", "prompts": "^2.4.2", - "rimraf": "*", - "whatsapp-web.js": "^1.18.0" + "rimraf": "^3.0.2" } }, "cli-tableau": { @@ -6455,6 +7546,12 @@ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, "compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -6634,6 +7731,15 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -6824,6 +7930,199 @@ } } }, + "eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -6844,11 +8143,35 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -6989,12 +8312,24 @@ "@fast-csv/parse": "4.3.6" } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "fast-json-patch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", "dev": true }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -7005,6 +8340,15 @@ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fclone": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", @@ -7019,6 +8363,15 @@ "pend": "~1.2.0" } }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, "file-type": { "version": "17.1.6", "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", @@ -7067,6 +8420,22 @@ "path-exists": "^4.0.0" } }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, "fluent-ffmpeg": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", @@ -7303,6 +8672,15 @@ "is-glob": "^4.0.1" } }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, "google-auth-library": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", @@ -7353,6 +8731,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "gtoken": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", @@ -7464,11 +8848,33 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -7544,6 +8950,21 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -7584,6 +9005,21 @@ } } }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "js2xmlparser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", @@ -7629,6 +9065,18 @@ "bignumber.js": "^9.0.0" } }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -7869,6 +9317,12 @@ "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", @@ -7898,6 +9352,15 @@ "yallist": "^4.0.0" } }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, "markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -8061,6 +9524,12 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, "needle": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", @@ -8274,6 +9743,15 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -8720,6 +10198,12 @@ "once": "^1.3.1" } }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, "puppeteer": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", @@ -8778,6 +10262,12 @@ "side-channel": "^1.0.4" } }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -8856,6 +10346,12 @@ "picomatch": "^2.2.1" } }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -8908,6 +10404,12 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, "retry-request": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", @@ -8932,6 +10434,12 @@ } } }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -8940,6 +10448,24 @@ "glob": "^7.1.3" } }, + "rollup": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", + "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "run-series": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", @@ -9194,6 +10720,12 @@ "source-map": "^0.6.0" } }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -9323,6 +10855,12 @@ "readable-stream": "^3.1.1" } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -9399,6 +10937,12 @@ "prelude-ls": "~1.1.2" } }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -9494,6 +11038,15 @@ } } }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -9752,6 +11305,12 @@ "fd-slicer": "~1.1.0" } }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", diff --git a/package.json b/package.json index 2e5c735..44c7d90 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "app.js", "scripts": { "start": "node ./app.js", - "test": "echo \"Error: no test specified\" && exit 1" + "cli": "node ./packages/cli/bin/cli.js" }, "workspaces": [ "packages/cli", @@ -52,8 +52,12 @@ "xlsx": "^0.18.5" }, "devDependencies": { + "@rollup/plugin-commonjs": "^23.0.2", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.5.0", "pm2": "^5.2.0", - "prettier": "2.7.1" + "prettier": "^2.7.1", + "rollup": "^3.2.3" }, "engines": { "node": "16.x" diff --git a/packages/cli/.prettierrc.json b/packages/cli/.prettierrc.json deleted file mode 100644 index 6716a2761831e45cf188075b8c7f57793f497389..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmezWubP32K>-St7)lt57!nyW8FGL)k0G7GnIWGc7YGv>lo+gls+1T~8HyQ9fiy%{ GEdv0s=?ee= diff --git a/packages/cli/README.md b/packages/cli/README.md index 87e22bd..784a459 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -1,18 +1,20 @@ # @bot-whatsapp/cli -- [X] Revisar version de NODE -- [X] Revisar OS -- [X] Obtener Package Manager -- [X] Revisar las libreria de WhatsappWeb para obtener version reciente -- [X] Opcion interactiva de limpiar session -- [ ] Opcion de generar `json` con la configuracion -- [ ] Agregar `rollup` para limpiar el codigo +- [x] Revisar version de NODE +- [x] Revisar OS +- [x] Obtener Package Manager +- [x] Revisar las libreria de WhatsappWeb para obtener version reciente +- [x] Opcion interactiva de limpiar session +- [ ] Opcion de generar `json` con la configuracion +- [x] Agregar `rollup` para limpiar el codigo + +--- + +**Comunidad** ---------- -__Comunidad__ > Forma parte de este proyecto. -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) \ No newline at end of file +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) diff --git a/packages/cli/TODO.md b/packages/cli/TODO.md index 316ecb6..7e7bc56 100644 --- a/packages/cli/TODO.md +++ b/packages/cli/TODO.md @@ -1,4 +1,4 @@ -- [X] Revisar version de NODE -- [X] Revisar OS -- [X] Obtener Package Manager -- [X] Revisar las libreria de WhatsappWeb para obtener version reciente \ No newline at end of file +- [x] Revisar version de NODE +- [x] Revisar OS +- [x] Obtener Package Manager +- [x] Revisar las libreria de WhatsappWeb para obtener version reciente diff --git a/packages/cli/bin/cli.js b/packages/cli/bin/cli.js new file mode 100644 index 0000000..83e966c --- /dev/null +++ b/packages/cli/bin/cli.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node +const index = require('../lib/bundle.cjs') +index.startInteractive() diff --git a/packages/cli/check.js b/packages/cli/check/index.js similarity index 59% rename from packages/cli/check.js rename to packages/cli/check/index.js index e87050a..ec4f235 100644 --- a/packages/cli/check.js +++ b/packages/cli/check/index.js @@ -1,40 +1,38 @@ -const {red, yellow, green, bgCyan} = require('kleur') +const { red, yellow, green, bgCyan } = require('kleur') const checkNodeVersion = () => { console.log(bgCyan('🚀 Revisando tu Node.js')) - const version = process.version; - const majorVersion = parseInt(version.replace('v','').split('.').shift()) - if(majorVersion < 16){ + const version = process.version + const majorVersion = parseInt(version.replace('v', '').split('.').shift()) + if (majorVersion < 16) { console.error( - red(`🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}`) + red( + `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` + ) ) process.exit(1) } console.log(green(`Node.js combatible ${version}`)) console.log(``) - } const checkOs = () => { console.log(bgCyan('🙂 Revisando tu Sistema Operativo')) const os = process.platform - if(!os.includes('win32')){ + if (!os.includes('win32')) { const messages = [ `El sistema operativo actual (${os}) posiblemente requiera`, `una confiuración adicional referente al puppeter`, ``, `Recuerda pasar por el WIKI`, `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`, - `` + ``, ] - console.log( - yellow(messages.join(' \n')) - ) + console.log(yellow(messages.join(' \n'))) } console.log(``) } - -module.exports ={ checkNodeVersion, checkOs } \ No newline at end of file +module.exports = { checkNodeVersion, checkOs } diff --git a/packages/cli/clean.js b/packages/cli/clean/index.js similarity index 77% rename from packages/cli/clean.js rename to packages/cli/clean/index.js index e3f200a..6b7f6fd 100644 --- a/packages/cli/clean.js +++ b/packages/cli/clean/index.js @@ -1,11 +1,10 @@ -const rimraf = require("rimraf"); +const rimraf = require('rimraf') const { yellow } = require('kleur') const { join } = require('path') - const PATH_WW = [ join(process.cwd(), '.wwebjs_auth'), - join(process.cwd(), 'session.json') + join(process.cwd(), 'session.json'), ] const cleanSession = () => { @@ -17,4 +16,4 @@ const cleanSession = () => { return Promise.all(queue) } -module.exports = { cleanSession } \ No newline at end of file +module.exports = { cleanSession } diff --git a/packages/cli/db/index.js b/packages/cli/db/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/cli/index.js b/packages/cli/index.js index e69de29..70785fc 100644 --- a/packages/cli/index.js +++ b/packages/cli/index.js @@ -0,0 +1,3 @@ +const { startInteractive } = require('./interactive') +if (process.env.NODE_ENV === 'dev') startInteractive() +module.exports = { startInteractive } diff --git a/packages/cli/install.js b/packages/cli/install/index.js similarity index 76% rename from packages/cli/install.js rename to packages/cli/install/index.js index 0d385cc..0b5d4f5 100644 --- a/packages/cli/install.js +++ b/packages/cli/install/index.js @@ -1,6 +1,6 @@ const { readFileSync } = require('fs') const { join } = require('path') -const { installDeps, getPkgManage } = require('./tool') +const { installDeps } = require('./tool') const PKG_TO_UPDATE = () => { const data = readFileSync(join(__dirname, 'pkg-to-update.json'), 'utf-8') @@ -9,10 +9,9 @@ const PKG_TO_UPDATE = () => { return pkg } - const installAll = async () => { - const pkg = await getPkgManage() + // const pkg = await getPkgManage() installDeps('npm', PKG_TO_UPDATE()).runInstall() } -module.exports = { installAll } \ No newline at end of file +module.exports = { installAll } diff --git a/packages/cli/tool.js b/packages/cli/install/tool.js similarity index 58% rename from packages/cli/tool.js rename to packages/cli/install/tool.js index 640e81c..d5c938b 100644 --- a/packages/cli/tool.js +++ b/packages/cli/install/tool.js @@ -4,7 +4,7 @@ const { detect } = require('detect-package-manager') const PKG_OPTION = { npm: 'install', yarn: 'add', - pnpm: 'add' + pnpm: 'add', } const getPkgManage = async () => { @@ -12,22 +12,24 @@ const getPkgManage = async () => { return pkg } -const installDeps = (pkgManager, package) => { - const errorMessage = `Ocurrio un error instalando ${package}` +const installDeps = (pkgManager, packageList) => { + const errorMessage = `Ocurrio un error instalando ${packageList}` let childProcess = [] const installSingle = (pkgInstall) => () => { - new Promise((resolve, reject) => { + new Promise((resolve) => { try { - childProcess = spawn(pkgManager, [PKG_OPTION[pkgManager], pkgInstall], { - stdio: 'inherit' - }) + childProcess = spawn( + pkgManager, + [PKG_OPTION[pkgManager], pkgInstall], + { + stdio: 'inherit', + } + ) childProcess.on('error', (e) => { console.error(e) - console.error( - red(errorMessage) - ) + console.error(red(errorMessage)) resolve() }) @@ -36,37 +38,30 @@ const installDeps = (pkgManager, package) => { resolve() } else { console.error(code) - console.error( - red(errorMessage) - ) + console.error(red(errorMessage)) } }) resolve() } catch (e) { console.error(e) - console.error( - red(errorMessage) - ) + console.error(red(errorMessage)) } - }) } - if (typeof package === 'string') { - childProcess.push(installSingle(package)) + if (typeof packageList === 'string') { + childProcess.push(installSingle(packageList)) } else { - for (const pkg of package) { + for (const pkg of packageList) { childProcess.push(installSingle(pkg)) } } - const runInstall = () => { return Promise.all(childProcess.map((i) => i())) } return { runInstall } - } -module.exports = { getPkgManage, installDeps } \ No newline at end of file +module.exports = { getPkgManage, installDeps } diff --git a/packages/cli/interactive.js b/packages/cli/interactive.js deleted file mode 100644 index 9929b7a..0000000 --- a/packages/cli/interactive.js +++ /dev/null @@ -1,53 +0,0 @@ -const prompts = require('prompts'); -const { installAll } = require('./install') -const { cleanSession } = require('./clean') -const { checkNodeVersion, checkOs } = require('./check') - -const questions = [ - { - type: 'text', - name: 'dependencies', - message: 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)' - }, - { - type: 'text', - name: 'cleanTmp', - message: 'Quieres limpiar la session del bot? (Y/n)' - } -]; - - -(async () => { - console.clear() - checkNodeVersion() - checkOs() - const onCancel = prompt => { - console.log('Proceso cancelado!'); - return true; - } - const response = await prompts(questions, { onCancel }); - const { dependencies = '', cleanTmp = '' } = response - - const installOrUdpateDep = async () => { - const answer = dependencies.toLowerCase() || 'n' - if (answer.includes('n')) return true - - if (answer.includes('y')) { - await installAll() - return true - } - } - - const cleanAllSession = async () => { - const answer = cleanTmp.toLowerCase() || 'n' - if (answer.includes('n')) return true - - if (answer.includes('y')) { - await cleanSession() - return true - } - } - - installOrUdpateDep() - cleanAllSession() -})(); \ No newline at end of file diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js new file mode 100644 index 0000000..9ac4502 --- /dev/null +++ b/packages/cli/interactive/index.js @@ -0,0 +1,125 @@ +const prompts = require('prompts') +const { yellow, red } = require('kleur') +const { installAll } = require('../install') +const { cleanSession } = require('../clean') +const { checkNodeVersion, checkOs } = require('../check') + +const startInteractive = async () => { + const questions = [ + { + type: 'text', + name: 'dependencies', + message: + 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)', + }, + { + type: 'text', + name: 'cleanTmp', + message: 'Quieres limpiar la session del bot? (Y/n)', + }, + { + type: 'multiselect', + name: 'providerWs', + message: 'Proveedor de Whatsapp', + choices: [ + { title: 'whatsapp-web.js', value: 'whatsapp-web.js' }, + { title: 'API Oficial (Meta)', value: 'meta', disabled: true }, + { title: 'Twilio', value: 'twilio', disabled: true }, + ], + max: 1, + hint: 'Espacio para selecionar', + instructions: '↑/↓', + }, + { + type: 'multiselect', + name: 'providerDb', + message: 'Cual base de datos quieres usar', + choices: [ + { title: 'JSONFile', value: 'json' }, + { title: 'MySQL', value: 'mysql', disabled: true }, + { title: 'Mongo', value: 'mongo', disabled: true }, + ], + max: 1, + hint: 'Espacio para selecionar', + instructions: '↑/↓', + }, + ] + + console.clear() + checkNodeVersion() + checkOs() + const onCancel = () => { + console.log('Proceso cancelado!') + return true + } + const response = await prompts(questions, { onCancel }) + const { + dependencies = '', + cleanTmp = '', + providerDb = [], + providerWs = [], + } = response + /** + * Question #1 + * @returns + */ + const installOrUdpateDep = async () => { + const answer = dependencies.toLowerCase() || 'n' + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await installAll() + return true + } + } + + /** + * Question #2 + * @returns + */ + const cleanAllSession = async () => { + const answer = cleanTmp.toLowerCase() || 'n' + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await cleanSession() + return true + } + } + + const vendorProvider = async () => { + if (!providerWs.length) { + console.log( + red( + `Debes de seleccionar una WS Provider. Tecla [Space] para seleccionar` + ) + ) + process.exit(1) + } + console.log(yellow(`'Deberia crer una carpeta en root/provider'`)) + return true + } + + const dbProvider = async () => { + const answer = providerDb + if (!providerDb.length) { + console.log( + red( + `Debes de seleccionar una DB Provider. Tecla [Space] para seleccionar` + ) + ) + process.exit(1) + } + if (answer === 'json') { + console.log('Deberia crer una carpeta en root/data') + return 1 + } + } + + await installOrUdpateDep() + await cleanAllSession() + await vendorProvider() + await dbProvider() +} + +module.exports = { startInteractive } diff --git a/packages/cli/lib/bundle.cjs b/packages/cli/lib/bundle.cjs new file mode 100644 index 0000000..cccaf14 --- /dev/null +++ b/packages/cli/lib/bundle.cjs @@ -0,0 +1,286 @@ +'use strict'; + +var require$$0$3 = require('prompts'); +var require$$0 = require('kleur'); +var require$$0$1 = require('fs'); +var require$$1$1 = require('path'); +var require$$1 = require('cross-spawn'); +var require$$2 = require('detect-package-manager'); +var require$$0$2 = require('rimraf'); + +const { red: red$2 } = require$$0; +const spawn = require$$1; +const { detect } = require$$2; +const PKG_OPTION = { + npm: 'install', + yarn: 'add', + pnpm: 'add', +}; + +const getPkgManage = async () => { + const pkg = await detect(); + return pkg +}; + +const installDeps$1 = (pkgManager, packageList) => { + const errorMessage = `Ocurrio un error instalando ${packageList}`; + let childProcess = []; + + const installSingle = (pkgInstall) => () => { + new Promise((resolve) => { + try { + childProcess = spawn( + pkgManager, + [PKG_OPTION[pkgManager], pkgInstall], + { + stdio: 'inherit', + } + ); + + childProcess.on('error', (e) => { + console.error(e); + console.error(red$2(errorMessage)); + resolve(); + }); + + childProcess.on('close', (code) => { + if (code === 0) { + resolve(); + } else { + console.error(code); + console.error(red$2(errorMessage)); + } + }); + + resolve(); + } catch (e) { + console.error(e); + console.error(red$2(errorMessage)); + } + }); + }; + + if (typeof packageList === 'string') { + childProcess.push(installSingle(packageList)); + } else { + for (const pkg of packageList) { + childProcess.push(installSingle(pkg)); + } + } + + const runInstall = () => { + return Promise.all(childProcess.map((i) => i())) + }; + return { runInstall } +}; + +var tool = { getPkgManage, installDeps: installDeps$1 }; + +const { readFileSync } = require$$0$1; +const { join: join$1 } = require$$1$1; +const { installDeps } = tool; + +const PKG_TO_UPDATE = () => { + const data = readFileSync(join$1(__dirname, 'pkg-to-update.json'), 'utf-8'); + const dataParse = JSON.parse(data); + const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`); + return pkg +}; + +const installAll$1 = async () => { + // const pkg = await getPkgManage() + installDeps('npm', PKG_TO_UPDATE()).runInstall(); +}; + +var install = { installAll: installAll$1 }; + +const rimraf = require$$0$2; +const { yellow: yellow$2 } = require$$0; +const { join } = require$$1$1; + +const PATH_WW = [ + join(process.cwd(), '.wwebjs_auth'), + join(process.cwd(), 'session.json'), +]; + +const cleanSession$1 = () => { + const queue = []; + for (const PATH of PATH_WW) { + console.log(yellow$2(`😬 Eliminando: ${PATH}`)); + queue.push(rimraf(PATH, () => Promise.resolve())); + } + return Promise.all(queue) +}; + +var clean = { cleanSession: cleanSession$1 }; + +const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0; + +const checkNodeVersion$1 = () => { + console.log(bgCyan('🚀 Revisando tu Node.js')); + const version = process.version; + const majorVersion = parseInt(version.replace('v', '').split('.').shift()); + if (majorVersion < 16) { + console.error( + red$1( + `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` + ) + ); + process.exit(1); + } + console.log(green(`Node.js combatible ${version}`)); + console.log(``); +}; + +const checkOs$1 = () => { + console.log(bgCyan('🙂 Revisando tu Sistema Operativo')); + const os = process.platform; + if (!os.includes('win32')) { + const messages = [ + `El sistema operativo actual (${os}) posiblemente requiera`, + `una confiuración adicional referente al puppeter`, + ``, + `Recuerda pasar por el WIKI`, + `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`, + ``, + ]; + + console.log(yellow$1(messages.join(' \n'))); + } + + console.log(``); +}; + +var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 }; + +const prompts = require$$0$3; +const { yellow, red } = require$$0; +const { installAll } = install; +const { cleanSession } = clean; +const { checkNodeVersion, checkOs } = check; + +const startInteractive$1 = async () => { + const questions = [ + { + type: 'text', + name: 'dependencies', + message: + 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)', + }, + { + type: 'text', + name: 'cleanTmp', + message: 'Quieres limpiar la session del bot? (Y/n)', + }, + { + type: 'multiselect', + name: 'providerWs', + message: 'Proveedor de Whatsapp', + choices: [ + { title: 'whatsapp-web.js', value: 'whatsapp-web.js' }, + { title: 'API Oficial (Meta)', value: 'meta', disabled: true }, + { title: 'Twilio', value: 'twilio', disabled: true }, + ], + max: 1, + hint: 'Espacio para selecionar', + instructions: '↑/↓', + }, + { + type: 'multiselect', + name: 'providerDb', + message: 'Cual base de datos quieres usar', + choices: [ + { title: 'JSONFile', value: 'json' }, + { title: 'MySQL', value: 'mysql', disabled: true }, + { title: 'Mongo', value: 'mongo', disabled: true }, + ], + max: 1, + hint: 'Espacio para selecionar', + instructions: '↑/↓', + }, + ]; + + console.clear(); + checkNodeVersion(); + checkOs(); + const onCancel = () => { + console.log('Proceso cancelado!'); + return true + }; + const response = await prompts(questions, { onCancel }); + const { + dependencies = '', + cleanTmp = '', + providerDb = [], + providerWs = [], + } = response; + /** + * Question #1 + * @returns + */ + const installOrUdpateDep = async () => { + const answer = dependencies.toLowerCase() || 'n'; + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await installAll(); + return true + } + }; + + /** + * Question #2 + * @returns + */ + const cleanAllSession = async () => { + const answer = cleanTmp.toLowerCase() || 'n'; + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await cleanSession(); + return true + } + }; + + const vendorProvider = async () => { + if (!providerWs.length) { + console.log( + red( + `Debes de seleccionar una WS Provider. Tecla [Space] para seleccionar` + ) + ); + process.exit(1); + } + console.log(yellow(`'Deberia crer una carpeta en root/provider'`)); + return true + }; + + const dbProvider = async () => { + const answer = providerDb; + if (!providerDb.length) { + console.log( + red( + `Debes de seleccionar una DB Provider. Tecla [Space] para seleccionar` + ) + ); + process.exit(1); + } + if (answer === 'json') { + console.log('Deberia crer una carpeta en root/data'); + return 1 + } + }; + + await installOrUdpateDep(); + await cleanAllSession(); + await vendorProvider(); + await dbProvider(); +}; + +var interactive = { startInteractive: startInteractive$1 }; + +const { startInteractive } = interactive; +if (process.env.NODE_ENV === 'dev') startInteractive(); +var cli = { startInteractive }; + +module.exports = cli; diff --git a/packages/cli/package.json b/packages/cli/package.json index bec3d8f..35667bd 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,22 +1,25 @@ { - "name": "cli", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "cross-spawn": "^7.0.3", - "detect-package-manager": "^2.0.1", - "kleur": "^4.1.5", - "prompts": "^2.4.2", - "rimraf": "^3.0.2" - }, - "dependencies": { - "whatsapp-web.js": "^1.18.0" - } + "name": "cli", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "cli:dev": "NODE_ENV=dev node ./index.js", + "cli:rollup": "rollup index.js --config ./rollup-cli.config.js", + "format:check": "prettier --check .", + "format:write": "prettier --write .", + "lint:check": "eslint .", + "lint:fix": "eslint --fix .", + "build:cli": "npm run format:write && npm run lint:fix && npm run cli:rollup" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5", + "prompts": "^2.4.2", + "rimraf": "^3.0.2" + } } diff --git a/packages/cli/pkg-to-update.json b/packages/cli/pkg-to-update.json index ee745df..4a13049 100644 --- a/packages/cli/pkg-to-update.json +++ b/packages/cli/pkg-to-update.json @@ -1,3 +1,3 @@ { - "whatsapp-web.js":"latest" -} \ No newline at end of file + "whatsapp-web.js": "latest" +} diff --git a/packages/cli/provider/index.js b/packages/cli/provider/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/cli/rollup-cli.config.js b/packages/cli/rollup-cli.config.js new file mode 100644 index 0000000..76d1d99 --- /dev/null +++ b/packages/cli/rollup-cli.config.js @@ -0,0 +1,10 @@ +const commonjs = require('@rollup/plugin-commonjs') + +module.exports = { + input: 'index.js', + output: { + file: 'lib/bundle.cjs', + format: 'cjs', + }, + plugins: [commonjs()], +} From 860bd8539f0ce12f287c3574302fcc4fc0243d80 Mon Sep 17 00:00:00 2001 From: Leifer Date: Thu, 27 Oct 2022 11:10:04 +0200 Subject: [PATCH 005/459] generate json file --- .gitignore | 5 +-- package-lock.json | 18 ++++++---- packages/cli/README.md | 2 +- packages/cli/configuration/index.js | 33 ++++++++++++++++++ packages/cli/install/index.js | 10 ++++-- packages/cli/interactive/index.js | 2 ++ packages/cli/lib/bundle.cjs | 54 +++++++++++++++++++++++++---- packages/cli/package.json | 3 ++ 8 files changed, 109 insertions(+), 18 deletions(-) create mode 100644 packages/cli/configuration/index.js diff --git a/.gitignore b/.gitignore index b38ba23..08ca802 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ /node_modules -/node_modules/* session.json chats/* !chats/.gitkeep @@ -9,4 +8,6 @@ mediaSend/* !mediaSend/.gitkeep !mediaSend/nota-de-voz.mp3 .env -.wwebjs_auth \ No newline at end of file +.wwebjs_auth +packages/cli/config.json +config.json \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a7a85fa..8b77770 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6135,9 +6135,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatsapp-web.js": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.0.tgz", - "integrity": "sha512-3cCW28/w7llZmTgiO9osumaopOuBBduvyuW02yfy3q9Rz4Wq9Oe1dRedE/kkq764zB8AZcuTs0tE8OKTq2Zobw==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", + "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", "dependencies": { "@pedroslopez/moduleraid": "^5.0.2", "fluent-ffmpeg": "^2.1.2", @@ -6431,6 +6431,9 @@ "packages/cli": { "version": "1.0.0", "license": "ISC", + "dependencies": { + "whatsapp-web.js": "^1.18.2" + }, "devDependencies": { "cross-spawn": "^7.0.3", "detect-package-manager": "^2.0.1", @@ -7500,7 +7503,8 @@ "detect-package-manager": "^2.0.1", "kleur": "^4.1.5", "prompts": "^2.4.2", - "rimraf": "^3.0.2" + "rimraf": "^3.0.2", + "whatsapp-web.js": "1.18.2" } }, "cli-tableau": { @@ -11106,9 +11110,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "whatsapp-web.js": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.0.tgz", - "integrity": "sha512-3cCW28/w7llZmTgiO9osumaopOuBBduvyuW02yfy3q9Rz4Wq9Oe1dRedE/kkq764zB8AZcuTs0tE8OKTq2Zobw==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", + "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", "requires": { "@pedroslopez/moduleraid": "^5.0.2", "archiver": "^5.3.1", diff --git a/packages/cli/README.md b/packages/cli/README.md index 784a459..9923c6c 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -5,7 +5,7 @@ - [x] Obtener Package Manager - [x] Revisar las libreria de WhatsappWeb para obtener version reciente - [x] Opcion interactiva de limpiar session -- [ ] Opcion de generar `json` con la configuracion +- [x] Opcion de generar `json` con la configuracion - [x] Agregar `rollup` para limpiar el codigo --- diff --git a/packages/cli/configuration/index.js b/packages/cli/configuration/index.js new file mode 100644 index 0000000..50565d9 --- /dev/null +++ b/packages/cli/configuration/index.js @@ -0,0 +1,33 @@ +const { writeFile } = require('fs').promises +const { join } = require('path') + +/** + * JSON_TEMPLATE = {[key:string]{...pros}} + */ +const JSON_TEMPLATE = { + provider: { + vendor: '', + }, + database: { + host: '', + password: '', + port: '', + username: '', + db: '', + }, + io: { + vendor: '', + }, +} + +const PATH_CONFIG = join(process.cwd(), 'config.json') + +const jsonConfig = () => { + return writeFile( + PATH_CONFIG, + JSON.stringify(JSON_TEMPLATE, null, 2), + 'utf-8' + ) +} + +module.exports = { jsonConfig } diff --git a/packages/cli/install/index.js b/packages/cli/install/index.js index 0b5d4f5..dddc3be 100644 --- a/packages/cli/install/index.js +++ b/packages/cli/install/index.js @@ -1,9 +1,15 @@ -const { readFileSync } = require('fs') +const { readFileSync, existsSync } = require('fs') const { join } = require('path') const { installDeps } = require('./tool') +const PATHS_DIR = [ + join(__dirname, 'pkg-to-update.json'), + join(__dirname, '..', 'pkg-to-update.json'), +] + const PKG_TO_UPDATE = () => { - const data = readFileSync(join(__dirname, 'pkg-to-update.json'), 'utf-8') + const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a)) + const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8') const dataParse = JSON.parse(data) const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`) return pkg diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js index 9ac4502..c86a568 100644 --- a/packages/cli/interactive/index.js +++ b/packages/cli/interactive/index.js @@ -3,6 +3,7 @@ const { yellow, red } = require('kleur') const { installAll } = require('../install') const { cleanSession } = require('../clean') const { checkNodeVersion, checkOs } = require('../check') +const { jsonConfig } = require('../configuration') const startInteractive = async () => { const questions = [ @@ -120,6 +121,7 @@ const startInteractive = async () => { await cleanAllSession() await vendorProvider() await dbProvider() + await jsonConfig() } module.exports = { startInteractive } diff --git a/packages/cli/lib/bundle.cjs b/packages/cli/lib/bundle.cjs index cccaf14..7d68589 100644 --- a/packages/cli/lib/bundle.cjs +++ b/packages/cli/lib/bundle.cjs @@ -76,12 +76,18 @@ const installDeps$1 = (pkgManager, packageList) => { var tool = { getPkgManage, installDeps: installDeps$1 }; -const { readFileSync } = require$$0$1; -const { join: join$1 } = require$$1$1; +const { readFileSync, existsSync } = require$$0$1; +const { join: join$2 } = require$$1$1; const { installDeps } = tool; +const PATHS_DIR = [ + join$2(__dirname, 'pkg-to-update.json'), + join$2(__dirname, '..', 'pkg-to-update.json'), +]; + const PKG_TO_UPDATE = () => { - const data = readFileSync(join$1(__dirname, 'pkg-to-update.json'), 'utf-8'); + const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a)); + const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8'); const dataParse = JSON.parse(data); const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`); return pkg @@ -96,11 +102,11 @@ var install = { installAll: installAll$1 }; const rimraf = require$$0$2; const { yellow: yellow$2 } = require$$0; -const { join } = require$$1$1; +const { join: join$1 } = require$$1$1; const PATH_WW = [ - join(process.cwd(), '.wwebjs_auth'), - join(process.cwd(), 'session.json'), + join$1(process.cwd(), '.wwebjs_auth'), + join$1(process.cwd(), 'session.json'), ]; const cleanSession$1 = () => { @@ -153,11 +159,46 @@ const checkOs$1 = () => { var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 }; +const { writeFile } = require$$0$1.promises; +const { join } = require$$1$1; + +/** + * JSON_TEMPLATE = {[key:string]{...pros}} + */ +const JSON_TEMPLATE = { + provider: { + vendor: '', + }, + database: { + host: '', + password: '', + port: '', + username: '', + db: '', + }, + io: { + vendor: '', + }, +}; + +const PATH_CONFIG = join(process.cwd(), 'config.json'); + +const jsonConfig$1 = () => { + return writeFile( + PATH_CONFIG, + JSON.stringify(JSON_TEMPLATE, null, 2), + 'utf-8' + ) +}; + +var configuration = { jsonConfig: jsonConfig$1 }; + const prompts = require$$0$3; const { yellow, red } = require$$0; const { installAll } = install; const { cleanSession } = clean; const { checkNodeVersion, checkOs } = check; +const { jsonConfig } = configuration; const startInteractive$1 = async () => { const questions = [ @@ -275,6 +316,7 @@ const startInteractive$1 = async () => { await cleanAllSession(); await vendorProvider(); await dbProvider(); + await jsonConfig(); }; var interactive = { startInteractive: startInteractive$1 }; diff --git a/packages/cli/package.json b/packages/cli/package.json index 35667bd..5a0e787 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -21,5 +21,8 @@ "kleur": "^4.1.5", "prompts": "^2.4.2", "rimraf": "^3.0.2" + }, + "dependencies": { + "whatsapp-web.js": "^1.18.2" } } From 7fe2611aed8e479bd3dd8a8cc12d4072574c983c Mon Sep 17 00:00:00 2001 From: Leifer Date: Thu, 27 Oct 2022 11:21:11 +0200 Subject: [PATCH 006/459] continue --- TODO.md | 16 ++++++++++++++++ package.json | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..d9aaaaf --- /dev/null +++ b/TODO.md @@ -0,0 +1,16 @@ +```js +const { inout, provider, database } = require('@bot-whatsapp') + +/** + * async whatsapp-web, twilio, meta + * */ +provider.start().then((r) => { + + /** + * Siguiente indicaciones del provider + * */ + +}) + + +``` \ No newline at end of file diff --git a/package.json b/package.json index 44c7d90..867f0ee 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "workspaces": [ "packages/cli", "packages/io", - "packages/providers" + "packages/provider" ], "keywords": [ "whatsapp", From b6207ba4474028bba5ca982cbad0b6923edd713f Mon Sep 17 00:00:00 2001 From: Leifer Date: Thu, 27 Oct 2022 14:00:36 +0200 Subject: [PATCH 007/459] readme inout --- TODO.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index d9aaaaf..5a7e740 100644 --- a/TODO.md +++ b/TODO.md @@ -1,16 +1,89 @@ ```js +// bootstrap.js Como iniciar el provider const { inout, provider, database } = require('@bot-whatsapp') /** * async whatsapp-web, twilio, meta * */ -provider.start().then((r) => { +const bootstrap = async () => { + console.log(`Iniciando....`) + const client = await provider.start() /** - * Siguiente indicaciones del provider + * - QR + * - Endpoint + * - Check Token Meta, Twilio + * - Return events? on message * */ + console.log(`Fin...`) + // Esto es opcional ? no deberia ser necesario + client.on('message', ({number, body,...}) => { + // Incoming message + }) +} +``` + +```js +// flow.js Como agregar keywords y respuestas +const { inout, provider, database } = require('@bot-whatsapp') + +await inout.addKeyword('hola') +.addAnswer('Bienvenido a tu tienda 🥲') +.addAnswer('escribe *catalogo* o *ofertas*') + +await inout.addKeyword(['catalogo','ofertas']) +.addAnswer('Este es nuestro CATALOGO mas reciente!',{buttons:[ + {"body":"Xiaomi"}, + {"body":"Samsung"} +]}) + +await inout.addKeyword('Xiaomi') +.addAnswer('Estos son nuestro productos XIAOMI ....',{media:'https://....'}) +.addAnswer('Si quieres mas info escrbie *info*') + + +await inout +.addKeyword('chao!') +.addAnswer('bye!') +.addAnswer('Recuerda que tengo esta promo',{ + media:'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', +}) + +await inout.addKeyword('Modelo C',{sensitivy:false}) +.addAnswer('100USD', {media:'http//:...'}) + +await inout.addKeyword('hola!',{sensitivy:false}) +.addAnswer('Bievenido Escribe *productos*') + +await inout.addKeyword('productos',{sensitivy:false}) +.addAnswer('Esto son los mas vendidos') +.addAnswer('*PC1* Precio 10USD',{media:'https://....'}) +.addAnswer('*PC2* Precio 10USD',{media:'https://....'}) + +await inout.addKeyword('PC1',{sensitivy:false}) +.addAnswer('Bievenido Escribe *productos*') + + + +const answerOne = await inout.addAnswer({ + message:'Como estas!', + media:'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', }) -``` \ No newline at end of file +const otherAnswer = await inout.addAnswer('Aprovecho para decirte!') + +answerOne.push(otherAnswer) + + +inout.addKeywords(['hola','hi','ola']) + +``` + +### Caso de uso +> Una persona escribe `hola` + +- [] Revisar si en las ultimas 24 ha contactado +- [] Si no INICIAR hilo +- [] Si ha contactado previamente. Seguir continuida \ No newline at end of file From 1e9574e740ba91d37a9666f267a55d6d4b486386 Mon Sep 17 00:00:00 2001 From: Leifer Date: Thu, 27 Oct 2022 14:04:29 +0200 Subject: [PATCH 008/459] TODO provider --- TODO.md => packages/io/TODO.md | 2 ++ packages/provider/TODO.md | 14 ++++++++++++++ 2 files changed, 16 insertions(+) rename TODO.md => packages/io/TODO.md (99%) create mode 100644 packages/provider/TODO.md diff --git a/TODO.md b/packages/io/TODO.md similarity index 99% rename from TODO.md rename to packages/io/TODO.md index 5a7e740..c8b6f38 100644 --- a/TODO.md +++ b/packages/io/TODO.md @@ -1,3 +1,5 @@ +# @bot-whatsapp/io + ```js // bootstrap.js Como iniciar el provider const { inout, provider, database } = require('@bot-whatsapp') diff --git a/packages/provider/TODO.md b/packages/provider/TODO.md new file mode 100644 index 0000000..4efe110 --- /dev/null +++ b/packages/provider/TODO.md @@ -0,0 +1,14 @@ +# @bot-whatsapp/provider + +```js +// bootstrap.js Como iniciar el provider +const { inout, provider, database } = require('@bot-whatsapp') + +provider.start() +provider.close() + +``` + +- [ ] whatsapp-web.js _verificar update_ +- [ ] Meta _verificar tokens_ +- [ ] Twilio _verificar tokens_ \ No newline at end of file From 62f1b7eb88c51cd1b71eaa33918defccf08ae4ca Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 28 Oct 2022 20:53:32 +0200 Subject: [PATCH 009/459] fix dependencies --- package-lock.json | 6527 +-------------------------------- package.json | 128 +- packages/cli/install/index.js | 6 +- packages/cli/install/tool.js | 7 +- packages/cli/package.json | 8 +- 5 files changed, 101 insertions(+), 6575 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b77770..0d03297 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6448 +1,8 @@ { "name": "bot-whatsapp", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "bot-whatsapp", - "version": "1.0.0", - "license": "ISC", - "workspaces": [ - "packages/cli", - "packages/io", - "packages/providers" - ], - "dependencies": { - "@google-cloud/dialogflow": "^5.2.0", - "cors": "^2.8.5", - "dotenv": "^16.0.1", - "exceljs": "^4.3.0", - "express": "^4.18.1", - "file-type": "^17.1.6", - "mime-db": "^1.52.0", - "moment": "^2.29.4", - "mysql": "^2.18.1", - "qr-image": "^3.2.0", - "qrcode-terminal": "^0.12.0", - "socket.io": "^4.5.1", - "stormdb": "^0.6.0", - "whatsapp-web.js": "^1.18.0", - "xlsx": "^0.18.5" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^23.0.2", - "eslint": "^8.26.0", - "eslint-config-prettier": "^8.5.0", - "pm2": "^5.2.0", - "prettier": "^2.7.1", - "rollup": "^3.2.3" - }, - "engines": { - "node": "16.x" - } - }, - "node_modules/@babel/parser": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", - "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@fast-csv/format": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", - "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", - "dependencies": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isboolean": "^3.0.3", - "lodash.isequal": "^4.5.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0" - } - }, - "node_modules/@fast-csv/parse": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", - "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", - "dependencies": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.groupby": "^4.6.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0", - "lodash.isundefined": "^3.0.1", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/@google-cloud/dialogflow": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@google-cloud/dialogflow/-/dialogflow-5.2.1.tgz", - "integrity": "sha512-znz5GBdICmAa9JvVHCHMfc1uAoV5zVcYssnyZNkUHhK0pvJXRRR1rASWKtD88mVrQnCozbLqewopSYt0qqNBqw==", - "dependencies": { - "google-gax": "^3.3.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.2.tgz", - "integrity": "sha512-MqqbVynbe3VUSnApFW/dpkDaa9T1ASqRnMWeSPGFO/Ro98R7XUDLacfeBa7RaSI1iFu9GYk5gBKARf0zipFe4w==", - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", - "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", - "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@opencensus/core": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", - "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", - "dev": true, - "dependencies": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@opencensus/core/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@opencensus/core/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/@opencensus/propagation-b3": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", - "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", - "dev": true, - "dependencies": { - "@opencensus/core": "^0.0.8", - "uuid": "^3.2.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@opencensus/propagation-b3/node_modules/@opencensus/core": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", - "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", - "dev": true, - "dependencies": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@opencensus/propagation-b3/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@opencensus/propagation-b3/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/@pedroslopez/moduleraid": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz", - "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==" - }, - "node_modules/@pm2/agent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz", - "integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==", - "dev": true, - "dependencies": { - "async": "~3.2.0", - "chalk": "~3.0.0", - "dayjs": "~1.8.24", - "debug": "~4.3.1", - "eventemitter2": "~5.0.1", - "fast-json-patch": "^3.0.0-1", - "fclone": "~1.0.11", - "nssocket": "0.6.0", - "pm2-axon": "~4.0.1", - "pm2-axon-rpc": "~0.7.0", - "proxy-agent": "~5.0.0", - "semver": "~7.2.0", - "ws": "~7.4.0" - } - }, - "node_modules/@pm2/agent/node_modules/dayjs": { - "version": "1.8.36", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz", - "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==", - "dev": true - }, - "node_modules/@pm2/agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@pm2/agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@pm2/agent/node_modules/semver": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", - "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@pm2/io": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz", - "integrity": "sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw==", - "dev": true, - "dependencies": { - "@opencensus/core": "0.0.9", - "@opencensus/propagation-b3": "0.0.8", - "async": "~2.6.1", - "debug": "~4.3.1", - "eventemitter2": "^6.3.1", - "require-in-the-middle": "^5.0.0", - "semver": "6.3.0", - "shimmer": "^1.2.0", - "signal-exit": "^3.0.3", - "tslib": "1.9.3" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@pm2/io/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/@pm2/io/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@pm2/io/node_modules/eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "dev": true - }, - "node_modules/@pm2/io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@pm2/io/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@pm2/js-api": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz", - "integrity": "sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw==", - "dev": true, - "dependencies": { - "async": "^2.6.3", - "axios": "^0.21.0", - "debug": "~4.3.1", - "eventemitter2": "^6.3.1", - "ws": "^7.0.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@pm2/js-api/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/@pm2/js-api/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@pm2/js-api/node_modules/eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "dev": true - }, - "node_modules/@pm2/js-api/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@pm2/pm2-version-check": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", - "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", - "dev": true, - "dependencies": { - "debug": "^4.3.1" - } - }, - "node_modules/@pm2/pm2-version-check/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@pm2/pm2-version-check/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", - "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.26.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "node_modules/@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - }, - "node_modules/@types/node": { - "version": "14.18.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.32.tgz", - "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==" - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/adler-32": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", - "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/amp": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", - "integrity": "sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==", - "dev": true - }, - "node_modules/amp-message": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", - "integrity": "sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==", - "dev": true, - "dependencies": { - "amp": "0.3.1" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dev": true, - "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, - "engines": { - "node": "<=0.11.8 || >0.11.10" - } - }, - "node_modules/async-listener/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", - "engines": { - "node": "*" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/blessed": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", - "integrity": "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==", - "dev": true, - "bin": { - "blessed": "bin/tput.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bodec": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", - "integrity": "sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "dependencies": { - "lodash": "^4.17.15" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cfb": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", - "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", - "dependencies": { - "adler-32": "~1.3.0", - "crc-32": "~1.2.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/charm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", - "integrity": "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/cli": { - "resolved": "packages/cli", - "link": true - }, - "node_modules/cli-tableau": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", - "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", - "dev": true, - "dependencies": { - "chalk": "3.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/codepage": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", - "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dev": true, - "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/croner": { - "version": "4.1.97", - "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz", - "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==", - "dev": true - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/culvert": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", - "integrity": "sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==", - "dev": true - }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/dayjs": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", - "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/degenerator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", - "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", - "dev": true, - "dependencies": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.8" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-package-manager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", - "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", - "dev": true, - "dependencies": { - "execa": "^5.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "dev": true, - "dependencies": { - "shimmer": "^1.2.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/engine.io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", - "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter2": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", - "integrity": "sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==", - "dev": true - }, - "node_modules/exceljs": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.3.0.tgz", - "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", - "dependencies": { - "archiver": "^5.0.0", - "dayjs": "^1.8.34", - "fast-csv": "^4.3.1", - "jszip": "^3.5.0", - "readable-stream": "^3.6.0", - "saxes": "^5.0.1", - "tmp": "^0.2.0", - "unzipper": "^0.10.11", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/fast-csv": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", - "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", - "dependencies": { - "@fast-csv/format": "4.3.5", - "@fast-csv/parse": "4.3.6" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-patch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fclone": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", - "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==", - "dev": true - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fluent-ffmpeg": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", - "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", - "dependencies": { - "async": ">=0.2.9", - "which": "^1.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/frac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", - "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", - "dev": true, - "dependencies": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ftp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/ftp/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/ftp/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/gaxios": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.0.2.tgz", - "integrity": "sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og==", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/gcp-metadata": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.1.tgz", - "integrity": "sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g==", - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/get-uri/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/get-uri/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/git-node-fs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", - "integrity": "sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==", - "dev": true - }, - "node_modules/git-sha1": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz", - "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/google-auth-library": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", - "integrity": "sha512-y6bw1yTWMVgs1vGJwBZ3uu+uIClfgxQfsEVcTNKjQeNQOVwox69+ZUgTeTAzrh+74hBqrk1gWyb9RsQVDI7seg==", - "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.0.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-gax": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.5.2.tgz", - "integrity": "sha512-AyP53w0gHcWlzxm+jSgqCR3Xu4Ld7EpSjhtNBnNhzwwWaIUyphH9kBGNIEH+i4UGkTUXOY29K/Re8EiAvkBRGw==", - "dependencies": { - "@grpc/grpc-js": "~1.7.0", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^8.0.2", - "is-stream-ended": "^0.1.4", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.1.2", - "protobufjs-cli": "1.0.2", - "retry-request": "^5.0.0" - }, - "bin": { - "compileProtos": "build/tools/compileProtos.js", - "minifyProtoJson": "build/tools/minify.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", - "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/js-git": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", - "integrity": "sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==", - "dev": true, - "dependencies": { - "bodec": "^0.1.0", - "culvert": "^0.1.2", - "git-sha1": "^0.1.2", - "pako": "^0.2.5" - } - }, - "node_modules/js-git/node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "dependencies": { - "xmlcreate": "^2.0.4" - } - }, - "node_modules/jsdoc": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", - "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", - "dependencies": { - "@babel/parser": "^7.9.4", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.2" - }, - "bin": { - "jsdoc": "jsdoc.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsdoc/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "optional": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsqr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", - "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/jszip/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lazy": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, - "node_modules/lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" - }, - "node_modules/lodash.isnil": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", - "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isundefined": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", - "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "node_modules/log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true, - "engines": { - "node": ">=0.8.6" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "8.6.5", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz", - "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==", - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/marked": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", - "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "dev": true - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/mysql": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", - "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", - "dependencies": { - "bignumber.js": "9.0.0", - "readable-stream": "2.3.7", - "safe-buffer": "5.1.2", - "sqlstring": "2.3.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mysql/node_modules/bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", - "engines": { - "node": "*" - } - }, - "node_modules/mysql/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/mysql/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/mysql/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "dev": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/needle/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-webpmux": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.3.tgz", - "integrity": "sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nssocket": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", - "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", - "dev": true, - "dependencies": { - "eventemitter2": "~0.4.14", - "lazy": "~1.0.11" - }, - "engines": { - "node": ">= 0.10.x" - } - }, - "node_modules/nssocket/node_modules/eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pac-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", - "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^5.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pac-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/pac-resolver": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", - "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", - "dev": true, - "dependencies": { - "degenerator": "^3.0.2", - "ip": "^1.1.5", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidusage": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.1.tgz", - "integrity": "sha512-/UlE6DQIe6yuDvm3v6756U0ErEsj60FLQTRZ4qPQF9b5yZKhf4c0llzD0tZpyE03nn8HQoLniFgKsL0ABB3nCg==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pm2": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.2.2.tgz", - "integrity": "sha512-mASxgh/MZhtVze/wijGf+tE6JKdA3lEq64FOfXVhhArkuk9Qxl4ePw9XgFJaArOXnU3bde+KbeAJHYxppVvYBQ==", - "dev": true, - "dependencies": { - "@pm2/agent": "~2.0.0", - "@pm2/io": "~5.0.0", - "@pm2/js-api": "~0.6.7", - "@pm2/pm2-version-check": "latest", - "async": "~3.2.0", - "blessed": "0.1.81", - "chalk": "3.0.0", - "chokidar": "^3.5.3", - "cli-tableau": "^2.0.0", - "commander": "2.15.1", - "croner": "~4.1.92", - "dayjs": "~1.11.5", - "debug": "^4.3.1", - "enquirer": "2.3.6", - "eventemitter2": "5.0.1", - "fclone": "1.0.11", - "mkdirp": "1.0.4", - "needle": "2.4.0", - "pidusage": "~3.0", - "pm2-axon": "~4.0.1", - "pm2-axon-rpc": "~0.7.1", - "pm2-deploy": "~1.0.2", - "pm2-multimeter": "^0.1.2", - "promptly": "^2", - "semver": "^7.2", - "source-map-support": "0.5.21", - "sprintf-js": "1.1.2", - "vizion": "~2.2.1", - "yamljs": "0.3.0" - }, - "bin": { - "pm2": "bin/pm2", - "pm2-dev": "bin/pm2-dev", - "pm2-docker": "bin/pm2-docker", - "pm2-runtime": "bin/pm2-runtime" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "pm2-sysmonit": "^1.2.8" - } - }, - "node_modules/pm2-axon": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz", - "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==", - "dev": true, - "dependencies": { - "amp": "~0.3.1", - "amp-message": "~0.1.1", - "debug": "^4.3.1", - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=5" - } - }, - "node_modules/pm2-axon-rpc": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz", - "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", - "dev": true, - "dependencies": { - "debug": "^4.3.1" - }, - "engines": { - "node": ">=5" - } - }, - "node_modules/pm2-axon-rpc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pm2-axon-rpc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/pm2-axon/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pm2-axon/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/pm2-deploy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", - "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", - "dev": true, - "dependencies": { - "run-series": "^1.1.8", - "tv4": "^1.3.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pm2-multimeter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", - "integrity": "sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==", - "dev": true, - "dependencies": { - "charm": "~0.1.1" - } - }, - "node_modules/pm2-sysmonit": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz", - "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==", - "dev": true, - "optional": true, - "dependencies": { - "async": "^3.2.0", - "debug": "^4.3.1", - "pidusage": "^2.0.21", - "systeminformation": "^5.7", - "tx2": "~1.0.4" - } - }, - "node_modules/pm2-sysmonit/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pm2-sysmonit/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "optional": true - }, - "node_modules/pm2-sysmonit/node_modules/pidusage": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", - "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", - "dev": true, - "optional": true, - "dependencies": { - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pm2/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pm2/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promptly": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", - "integrity": "sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==", - "dev": true, - "dependencies": { - "read": "^1.0.4" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/proto3-json-serializer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", - "integrity": "sha512-SjXwUWe/vANGs/mJJTbw5++7U67nwsymg7qsoPtw6GiXqw3kUy8ByojrlEdVE2efxAdKreX8WkDafxvYW95ZQg==", - "dependencies": { - "protobufjs": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", - "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs-cli": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.0.2.tgz", - "integrity": "sha512-cz9Pq9p/Zs7okc6avH20W7QuyjTclwJPgqXG11jNaulfS3nbVisID8rC+prfgq0gbZE0w9LBFd1OKFF03kgFzg==", - "dependencies": { - "chalk": "^4.0.0", - "escodegen": "^1.13.0", - "espree": "^9.0.0", - "estraverse": "^5.1.0", - "glob": "^8.0.0", - "jsdoc": "^3.6.3", - "minimist": "^1.2.0", - "semver": "^7.1.2", - "tmp": "^0.2.1", - "uglify-js": "^3.7.7" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "protobufjs": "^7.0.0" - } - }, - "node_modules/protobufjs-cli/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/protobufjs-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/protobufjs-cli/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/protobufjs-cli/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", - "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^5.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/proxy-agent/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", - "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", - "hasInstallScript": true, - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/puppeteer/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/puppeteer/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/qr-image": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", - "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==" - }, - "node_modules/qrcode-terminal": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", - "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", - "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/require-in-the-middle/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/require-in-the-middle/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry-request": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", - "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", - "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/retry-request/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/retry-request/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", - "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-series": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", - "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "dev": true - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/socket.io/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socks-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "node_modules/sqlstring": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", - "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "dependencies": { - "frac": "~1.1.2" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stormdb": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/stormdb/-/stormdb-0.6.0.tgz", - "integrity": "sha512-B5ki9Xk8xLjWPKorWA6iE8yTFfIFspZKdjfOQc7wvsnMGtj16PWknFxo4XLSD1MDFLPsTkzwYaiubk708j/HkQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/systeminformation": { - "version": "5.12.7", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.7.tgz", - "integrity": "sha512-Kubdu6YzMWtGEsnGF5ddohvIWsxOlEkV0P/3oKTPl56ADOowDiWBR59RpIRvbijXwEQrnRKeF3MOuH7apdEc/g==", - "dev": true, - "optional": true, - "os": [ - "darwin", - "linux", - "win32", - "freebsd", - "openbsd", - "netbsd", - "sunos", - "android" - ], - "bin": { - "systeminformation": "lib/cli.js" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "Buy me a coffee", - "url": "https://www.buymeacoffee.com/systeminfo" - } - }, - "node_modules/taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==" - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "engines": { - "node": "*" - } - }, - "node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "node_modules/tv4": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", - "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/tx2": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", - "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", - "dev": true, - "optional": true, - "dependencies": { - "json-stringify-safe": "^5.0.1" - } - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "node_modules/uglify-js": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", - "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==", - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/unzipper/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/unzipper/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vizion": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", - "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==", - "dev": true, - "dependencies": { - "async": "^2.6.3", - "git-node-fs": "^1.0.0", - "ini": "^1.3.5", - "js-git": "^0.7.8" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/vizion/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/vm2": { - "version": "3.9.11", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", - "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - }, - "bin": { - "vm2": "bin/vm2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatsapp-web.js": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", - "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", - "dependencies": { - "@pedroslopez/moduleraid": "^5.0.2", - "fluent-ffmpeg": "^2.1.2", - "jsqr": "^1.3.1", - "mime": "^3.0.0", - "node-fetch": "^2.6.5", - "node-webpmux": "^3.1.0", - "puppeteer": "^13.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "optionalDependencies": { - "archiver": "^5.3.1", - "fs-extra": "^10.1.0", - "unzipper": "^0.10.11" - } - }, - "node_modules/whatsapp-web.js/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatsapp-web.js/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "optional": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/whatsapp-web.js/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/whatsapp-web.js/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "optional": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xlsx": { - "version": "0.18.5", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", - "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", - "dependencies": { - "adler-32": "~1.3.0", - "cfb": "~1.2.1", - "codepage": "~1.15.0", - "crc-32": "~1.2.1", - "ssf": "~0.11.2", - "wmf": "~1.0.1", - "word": "~0.3.0" - }, - "bin": { - "xlsx": "bin/xlsx.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "node_modules/xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" - }, - "node_modules/xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - }, - "bin": { - "json2yaml": "bin/json2yaml", - "yaml2json": "bin/yaml2json" - } - }, - "node_modules/yamljs/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/yamljs/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "packages/cli": { - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "whatsapp-web.js": "^1.18.2" - }, - "devDependencies": { - "cross-spawn": "^7.0.3", - "detect-package-manager": "^2.0.1", - "kleur": "^4.1.5", - "prompts": "^2.4.2", - "rimraf": "^3.0.2" - } - } - }, "dependencies": { "@babel/parser": { "version": "7.19.6", @@ -6825,32 +385,6 @@ } } }, - "@pm2/pm2-version-check": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", - "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", - "dev": true, - "requires": { - "debug": "^4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -7058,8 +592,7 @@ "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" }, "acorn-walk": { "version": "8.2.0", @@ -7496,17 +1029,6 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "cli": { - "version": "file:packages/cli", - "requires": { - "cross-spawn": "^7.0.3", - "detect-package-manager": "^2.0.1", - "kleur": "^4.1.5", - "prompts": "^2.4.2", - "rimraf": "^3.0.2", - "whatsapp-web.js": "1.18.2" - } - }, "cli-tableau": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", @@ -7875,8 +1397,7 @@ "ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" } } }, @@ -8097,8 +1618,7 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} + "dev": true }, "eslint-scope": { "version": "7.1.1", @@ -9380,8 +2900,7 @@ "markdown-it-anchor": { "version": "8.6.5", "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz", - "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==", - "requires": {} + "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==" }, "marked": { "version": "4.1.1", @@ -9830,7 +3349,7 @@ "@pm2/agent": "~2.0.0", "@pm2/io": "~5.0.0", "@pm2/js-api": "~0.6.7", - "@pm2/pm2-version-check": "latest", + "@pm2/pm2-version-check": "^1.0.4", "async": "~3.2.0", "blessed": "0.1.81", "chalk": "3.0.0", @@ -9859,6 +3378,15 @@ "yamljs": "0.3.0" }, "dependencies": { + "@pm2/pm2-version-check": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", + "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", + "dev": true, + "requires": { + "debug": "^4.3.1" + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -10243,8 +3771,7 @@ "ws": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "requires": {} + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" } } }, @@ -10711,8 +4238,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.21", @@ -10764,14 +4290,6 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -10782,6 +4300,14 @@ "strip-ansi": "^6.0.1" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -11211,8 +4737,7 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "requires": {} + "dev": true }, "xlsx": { "version": "0.18.5", diff --git a/package.json b/package.json index 44c7d90..8f182a5 100644 --- a/package.json +++ b/package.json @@ -1,65 +1,71 @@ { - "name": "bot-whatsapp", - "version": "1.0.0", - "description": "Bot de wahtsapp open source para MVP o pequeños negocios", - "main": "app.js", - "scripts": { - "start": "node ./app.js", - "cli": "node ./packages/cli/bin/cli.js" - }, - "workspaces": [ - "packages/cli", - "packages/io", - "packages/providers" - ], - "keywords": [ - "whatsapp", - "bot-whatsapp", - "node-bot-whatsapp" - ], - "contributors": [ - { - "email": "leifer33@gmail.com", - "name": "Leifer Mendez", - "url": "https://leifermendez.github.io" + "name": "bot-whatsapp", + "version": "1.0.0", + "description": "Bot de wahtsapp open source para MVP o pequeños negocios", + "main": "app.js", + "scripts": { + "start": "node ./app.js", + "cli": "node ./packages/cli/bin/cli.js", + "preinstall": "" }, - { - "name": "aurik3", - "email": "aurik3@aurik3.com", - "url": "https://github.com/aurik3" + "workspaces": [ + "packages/cli", + "packages/io", + "packages/providers" + ], + "keywords": [ + "whatsapp", + "bot-whatsapp", + "node-bot-whatsapp" + ], + "contributors": [ + { + "email": "leifer33@gmail.com", + "name": "Leifer Mendez", + "url": "https://leifermendez.github.io" + }, + { + "name": "aurik3", + "email": "aurik3@aurik3.com", + "url": "https://github.com/aurik3" + } + ], + "repository": { + "type": "git", + "url": "https://github.com/leifermendez/bot-whatsapp" + }, + "license": "ISC", + "dependencies": { + "@google-cloud/dialogflow": "^5.2.0", + "cors": "^2.8.5", + "dotenv": "^16.0.1", + "exceljs": "^4.3.0", + "express": "^4.18.1", + "file-type": "^17.1.6", + "mime-db": "^1.52.0", + "moment": "^2.29.4", + "mysql": "^2.18.1", + "qr-image": "^3.2.0", + "qrcode-terminal": "^0.12.0", + "socket.io": "^4.5.1", + "stormdb": "^0.6.0", + "whatsapp-web.js": "^1.18.0", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^23.0.2", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.5.0", + "pm2": "^5.2.0", + "prettier": "^2.7.1", + "rollup": "^3.2.3", + "cross-spawn": "^7.0.3", + "kleur": "^4.1.5", + "prompts": "^2.4.2", + "rimraf": "^3.0.2", + "detect-package-manager": "^2.0.1" + }, + "engines": { + "node": "16.x" } - ], - "repository": { - "type": "git", - "url": "https://github.com/leifermendez/bot-whatsapp" - }, - "license": "ISC", - "dependencies": { - "@google-cloud/dialogflow": "^5.2.0", - "cors": "^2.8.5", - "dotenv": "^16.0.1", - "exceljs": "^4.3.0", - "express": "^4.18.1", - "file-type": "^17.1.6", - "mime-db": "^1.52.0", - "moment": "^2.29.4", - "mysql": "^2.18.1", - "qr-image": "^3.2.0", - "qrcode-terminal": "^0.12.0", - "socket.io": "^4.5.1", - "stormdb": "^0.6.0", - "whatsapp-web.js": "^1.18.0", - "xlsx": "^0.18.5" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^23.0.2", - "eslint": "^8.26.0", - "eslint-config-prettier": "^8.5.0", - "pm2": "^5.2.0", - "prettier": "^2.7.1", - "rollup": "^3.2.3" - }, - "engines": { - "node": "16.x" - } } diff --git a/packages/cli/install/index.js b/packages/cli/install/index.js index dddc3be..6eab6b9 100644 --- a/packages/cli/install/index.js +++ b/packages/cli/install/index.js @@ -1,6 +1,6 @@ const { readFileSync, existsSync } = require('fs') const { join } = require('path') -const { installDeps } = require('./tool') +const { installDeps, getPkgManage } = require('./tool') const PATHS_DIR = [ join(__dirname, 'pkg-to-update.json'), @@ -16,8 +16,8 @@ const PKG_TO_UPDATE = () => { } const installAll = async () => { - // const pkg = await getPkgManage() - installDeps('npm', PKG_TO_UPDATE()).runInstall() + const pkg = await getPkgManage() + installDeps(pkg, PKG_TO_UPDATE()).runInstall() } module.exports = { installAll } diff --git a/packages/cli/install/tool.js b/packages/cli/install/tool.js index d5c938b..6ec176c 100644 --- a/packages/cli/install/tool.js +++ b/packages/cli/install/tool.js @@ -1,6 +1,6 @@ const { red } = require('kleur') const spawn = require('cross-spawn') -const { detect } = require('detect-package-manager') +// const { detect } = require('detect-package-manager') const PKG_OPTION = { npm: 'install', yarn: 'add', @@ -8,8 +8,9 @@ const PKG_OPTION = { } const getPkgManage = async () => { - const pkg = await detect() - return pkg + // const pkg = await detect() + // return pkg + return 'npm' } const installDeps = (pkgManager, packageList) => { diff --git a/packages/cli/package.json b/packages/cli/package.json index 5a0e787..fe1afe5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -15,13 +15,7 @@ "keywords": [], "author": "", "license": "ISC", - "devDependencies": { - "cross-spawn": "^7.0.3", - "detect-package-manager": "^2.0.1", - "kleur": "^4.1.5", - "prompts": "^2.4.2", - "rimraf": "^3.0.2" - }, + "devDependencies": {}, "dependencies": { "whatsapp-web.js": "^1.18.2" } From 5974f3c9f24840f98a47b5ec4be7f9bd27a01a5f Mon Sep 17 00:00:00 2001 From: Leifer Date: Sat, 29 Oct 2022 12:15:05 +0200 Subject: [PATCH 010/459] ... --- packages/cli/package.json | 6 ++---- packages/io/TODO.md | 18 +++++++++++------- packages/io/index.js | 0 packages/io/keyword/addKeyword.js | 16 ++++++++++++++++ packages/io/keyword/index.js | 0 packages/io/package.json | 22 ++++++++++++++++++++++ 6 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 packages/io/index.js create mode 100644 packages/io/keyword/addKeyword.js create mode 100644 packages/io/keyword/index.js create mode 100644 packages/io/package.json diff --git a/packages/cli/package.json b/packages/cli/package.json index 5a0e787..e163a5d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,8 +1,9 @@ { "name": "cli", - "version": "1.0.0", + "version": "0.0.1", "description": "", "main": "index.js", + "private":true, "scripts": { "cli:dev": "NODE_ENV=dev node ./index.js", "cli:rollup": "rollup index.js --config ./rollup-cli.config.js", @@ -21,8 +22,5 @@ "kleur": "^4.1.5", "prompts": "^2.4.2", "rimraf": "^3.0.2" - }, - "dependencies": { - "whatsapp-web.js": "^1.18.2" } } diff --git a/packages/io/TODO.md b/packages/io/TODO.md index c8b6f38..04567d1 100644 --- a/packages/io/TODO.md +++ b/packages/io/TODO.md @@ -1,5 +1,16 @@ # @bot-whatsapp/io + +### Caso de uso +> Una persona escribe `hola` + +__addKeyword__ recibe `string | string[]` +> `sensitivy` false _default_ + +- [] addKeyword +- [] addAnswer +- [] Si ha contactado previamente. Seguir continuida + ```js // bootstrap.js Como iniciar el provider const { inout, provider, database } = require('@bot-whatsapp') @@ -82,10 +93,3 @@ answerOne.push(otherAnswer) inout.addKeywords(['hola','hi','ola']) ``` - -### Caso de uso -> Una persona escribe `hola` - -- [] Revisar si en las ultimas 24 ha contactado -- [] Si no INICIAR hilo -- [] Si ha contactado previamente. Seguir continuida \ No newline at end of file diff --git a/packages/io/index.js b/packages/io/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/io/keyword/addKeyword.js b/packages/io/keyword/addKeyword.js new file mode 100644 index 0000000..dc45e81 --- /dev/null +++ b/packages/io/keyword/addKeyword.js @@ -0,0 +1,16 @@ +/** + * + * @param {*} message `string | string[]` + * @param {*} options {sensitivy:boolean} defaulta false + */ +const addKeyword = (message, options) => { + if (typeof message === 'string') return 1 + return 0 +} + +module.exports = { addKeyword } +// await inout.addKeyword('hola') +// .addAnswer('Bienvenido a tu tienda 🥲') +// .addAnswer('escribe *catalogo* o *ofertas*') + +// await inout.addKeyword(['catalogo','ofertas']) \ No newline at end of file diff --git a/packages/io/keyword/index.js b/packages/io/keyword/index.js new file mode 100644 index 0000000..e69de29 diff --git a/packages/io/package.json b/packages/io/package.json new file mode 100644 index 0000000..aec99b4 --- /dev/null +++ b/packages/io/package.json @@ -0,0 +1,22 @@ +{ + "name": "io", + "version": "0.0.1", + "description": "", + "main": "index.js", + "private": true, + "scripts": { + "io:dev": "NODE_ENV=dev node ./index.js", + "io:rollup": "rollup index.js --config ./rollup-cli.config.js", + "format:check": "prettier --check .", + "format:write": "prettier --write .", + "lint:check": "eslint .", + "lint:fix": "eslint --fix .", + "build:io": "npm run format:write && npm run lint:fix && npm run io:rollup" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + + } +} \ No newline at end of file From 710f1b9f90a2ffd814f7e46b8c9e48b526fa5520 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 12:16:16 +0200 Subject: [PATCH 011/459] before --- .fleet/settings.json | 0 packages/cli/package.json | 6 +----- 2 files changed, 1 insertion(+), 5 deletions(-) create mode 100644 .fleet/settings.json diff --git a/.fleet/settings.json b/.fleet/settings.json new file mode 100644 index 0000000..e69de29 diff --git a/packages/cli/package.json b/packages/cli/package.json index fe1afe5..46b62cd 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -14,9 +14,5 @@ }, "keywords": [], "author": "", - "license": "ISC", - "devDependencies": {}, - "dependencies": { - "whatsapp-web.js": "^1.18.2" - } + "license": "ISC" } From e00aacfe3e8025d23408850cdcc04e9207fc9ff4 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 13:07:58 +0200 Subject: [PATCH 012/459] io improvement --- package-lock.json | 9 ++++ package.json | 9 ++-- packages/cli/package.json | 4 +- packages/io/TODO.md | 83 ++++++++++++++++--------------- packages/io/index.js | 32 ++++++++++++ packages/io/keyword/addKeyword.js | 16 ------ packages/io/keyword/index.js | 0 packages/io/methods/addAnswer.js | 28 +++++++++++ packages/io/methods/addKeyword.js | 32 ++++++++++++ packages/io/methods/index.js | 4 ++ packages/io/package.json | 8 ++- packages/io/utils/hash.js | 7 +++ packages/io/utils/index.js | 3 ++ 13 files changed, 168 insertions(+), 67 deletions(-) delete mode 100644 packages/io/keyword/addKeyword.js delete mode 100644 packages/io/keyword/index.js create mode 100644 packages/io/methods/addAnswer.js create mode 100644 packages/io/methods/addKeyword.js create mode 100644 packages/io/methods/index.js create mode 100644 packages/io/utils/hash.js create mode 100644 packages/io/utils/index.js diff --git a/package-lock.json b/package-lock.json index 0d03297..4344f16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1161,6 +1161,15 @@ "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==", "dev": true }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, "cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", diff --git a/package.json b/package.json index 8f182a5..5fd4058 100644 --- a/package.json +++ b/package.json @@ -54,16 +54,17 @@ }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", + "cross-env": "^7.0.3", + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", + "kleur": "^4.1.5", "pm2": "^5.2.0", "prettier": "^2.7.1", - "rollup": "^3.2.3", - "cross-spawn": "^7.0.3", - "kleur": "^4.1.5", "prompts": "^2.4.2", "rimraf": "^3.0.2", - "detect-package-manager": "^2.0.1" + "rollup": "^3.2.3" }, "engines": { "node": "16.x" diff --git a/packages/cli/package.json b/packages/cli/package.json index cee6606..6c1cb19 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -3,9 +3,9 @@ "version": "0.0.1", "description": "", "main": "index.js", - "private":true, + "private": true, "scripts": { - "cli:dev": "NODE_ENV=dev node ./index.js", + "cli:dev": "cross-env NODE_ENV=dev node ./index.js", "cli:rollup": "rollup index.js --config ./rollup-cli.config.js", "format:check": "prettier --check .", "format:write": "prettier --write .", diff --git a/packages/io/TODO.md b/packages/io/TODO.md index 04567d1..3c8e433 100644 --- a/packages/io/TODO.md +++ b/packages/io/TODO.md @@ -1,15 +1,16 @@ # @bot-whatsapp/io - ### Caso de uso + > Una persona escribe `hola` -__addKeyword__ recibe `string | string[]` +**addKeyword** recibe `string | string[]` + > `sensitivy` false _default_ -- [] addKeyword -- [] addAnswer -- [] Si ha contactado previamente. Seguir continuida +- [ ] addKeyword +- [ ] addAnswer +- [ ] Si ha contactado previamente. Seguir continuida ```js // bootstrap.js Como iniciar el provider @@ -41,55 +42,57 @@ const bootstrap = async () => { // flow.js Como agregar keywords y respuestas const { inout, provider, database } = require('@bot-whatsapp') -await inout.addKeyword('hola') -.addAnswer('Bienvenido a tu tienda 🥲') -.addAnswer('escribe *catalogo* o *ofertas*') - -await inout.addKeyword(['catalogo','ofertas']) -.addAnswer('Este es nuestro CATALOGO mas reciente!',{buttons:[ - {"body":"Xiaomi"}, - {"body":"Samsung"} -]}) - -await inout.addKeyword('Xiaomi') -.addAnswer('Estos son nuestro productos XIAOMI ....',{media:'https://....'}) -.addAnswer('Si quieres mas info escrbie *info*') - +await inout + .addKeyword('hola') + .addAnswer('Bienvenido a tu tienda 🥲') + .addAnswer('escribe *catalogo* o *ofertas*') await inout -.addKeyword('chao!') -.addAnswer('bye!') -.addAnswer('Recuerda que tengo esta promo',{ - media:'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', -}) + .addKeyword(['catalogo', 'ofertas']) + .addAnswer('Este es nuestro CATALOGO mas reciente!', { + buttons: [{ body: 'Xiaomi' }, { body: 'Samsung' }], + }) -await inout.addKeyword('Modelo C',{sensitivy:false}) -.addAnswer('100USD', {media:'http//:...'}) +await inout + .addKeyword('Xiaomi') + .addAnswer('Estos son nuestro productos XIAOMI ....', { + media: 'https://....', + }) + .addAnswer('Si quieres mas info escrbie *info*') -await inout.addKeyword('hola!',{sensitivy:false}) -.addAnswer('Bievenido Escribe *productos*') +await inout + .addKeyword('chao!') + .addAnswer('bye!') + .addAnswer('Recuerda que tengo esta promo', { + media: 'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', + }) -await inout.addKeyword('productos',{sensitivy:false}) -.addAnswer('Esto son los mas vendidos') -.addAnswer('*PC1* Precio 10USD',{media:'https://....'}) -.addAnswer('*PC2* Precio 10USD',{media:'https://....'}) +await inout + .addKeyword('Modelo C', { sensitivy: false }) + .addAnswer('100USD', { media: 'http//:...' }) -await inout.addKeyword('PC1',{sensitivy:false}) -.addAnswer('Bievenido Escribe *productos*') +await inout + .addKeyword('hola!', { sensitivy: false }) + .addAnswer('Bievenido Escribe *productos*') +await inout + .addKeyword('productos', { sensitivy: false }) + .addAnswer('Esto son los mas vendidos') + .addAnswer('*PC1* Precio 10USD', { media: 'https://....' }) + .addAnswer('*PC2* Precio 10USD', { media: 'https://....' }) +await inout + .addKeyword('PC1', { sensitivy: false }) + .addAnswer('Bievenido Escribe *productos*') const answerOne = await inout.addAnswer({ - message:'Como estas!', - media:'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', + message: 'Como estas!', + media: 'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', }) - const otherAnswer = await inout.addAnswer('Aprovecho para decirte!') answerOne.push(otherAnswer) - -inout.addKeywords(['hola','hi','ola']) - +inout.addKeywords(['hola', 'hi', 'ola']) ``` diff --git a/packages/io/index.js b/packages/io/index.js index e69de29..fcf8510 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -0,0 +1,32 @@ +const { addKeyword, addAnswer } = require('./methods') + +const test = async () => { + const cxtA = addKeyword('hola') + console.log({ cxtA: cxtA.ctx.keyword, ref: cxtA.ref }) + const cxtB = addAnswer(cxtA)('b') + console.log({ cxtB: cxtB.ctx.message, ref: cxtB.ref }) + const cxtC = addAnswer(cxtB)('c') + console.log({ cxtC: cxtC.ctx.keyword, ref: cxtC.ref }) +} + +const test1 = async () => { + const cxtAB = addKeyword('hola').addAnswer('b').addAnswer('c') + + console.log({ + keyword: cxtAB.ctx.keyword, + anwser: cxtAB.ctx.message, + }) +} + +const test2 = async () => { + const cxtABB = addKeyword('hola') + .addAnswer('Bienvenido a tu tienda 🥲') + .addAnswer('escribe *catalogo* o *ofertas*') + + console.log({ + pregunta: cxtABB.ctx.keyword, + ultimasrespuesta: cxtABB.ctx.message, + }) +} + +test2().then() diff --git a/packages/io/keyword/addKeyword.js b/packages/io/keyword/addKeyword.js deleted file mode 100644 index dc45e81..0000000 --- a/packages/io/keyword/addKeyword.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * - * @param {*} message `string | string[]` - * @param {*} options {sensitivy:boolean} defaulta false - */ -const addKeyword = (message, options) => { - if (typeof message === 'string') return 1 - return 0 -} - -module.exports = { addKeyword } -// await inout.addKeyword('hola') -// .addAnswer('Bienvenido a tu tienda 🥲') -// .addAnswer('escribe *catalogo* o *ofertas*') - -// await inout.addKeyword(['catalogo','ofertas']) \ No newline at end of file diff --git a/packages/io/keyword/index.js b/packages/io/keyword/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/io/methods/addAnswer.js b/packages/io/methods/addAnswer.js new file mode 100644 index 0000000..b9a0bf5 --- /dev/null +++ b/packages/io/methods/addAnswer.js @@ -0,0 +1,28 @@ +const { generateRef } = require('../utils') + +const addAnswer = (inCtx) => (message, options) => { + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx + const ctxAnswer = () => { + const ref = generateRef() + /** + * Se guarda en db + */ + + return { ...lastCtx, ref, message } + } + + const ctx = ctxAnswer() + + return { + ctx, + ref: ctx.ref, + addAnswer: addAnswer(ctx), + } +} + +module.exports = { addAnswer } + +// await inout +// .addKeyword('hola') +// .addAnswer('Bienvenido a tu tienda 🥲') +// .addAnswer('escribe *catalogo* o *ofertas*') diff --git a/packages/io/methods/addKeyword.js b/packages/io/methods/addKeyword.js new file mode 100644 index 0000000..2102b04 --- /dev/null +++ b/packages/io/methods/addKeyword.js @@ -0,0 +1,32 @@ +const { generateRef } = require('../utils') +const { addAnswer } = require('./addAnswer') +/** + * addKeyword: + * Es necesario que genere id|hash + */ + +/** + * + * @param {*} message `string | string[]` + * @param {*} options {sensitivy:boolean} defaulta false + */ +const addKeyword = (message, options) => { + const ctxAddKeyword = () => { + const ref = generateRef() + /** + * Se guarda en db + */ + + return { ref, keyword: message } + } + + const ctx = ctxAddKeyword() + + return { + ctx, + ref: ctx.ref, + addAnswer: addAnswer(ctx), + } +} + +module.exports = { addKeyword } diff --git a/packages/io/methods/index.js b/packages/io/methods/index.js new file mode 100644 index 0000000..278fbcc --- /dev/null +++ b/packages/io/methods/index.js @@ -0,0 +1,4 @@ +const { addAnswer } = require('./addAnswer') +const { addKeyword } = require('./addKeyword') + +module.exports = { addAnswer, addKeyword } diff --git a/packages/io/package.json b/packages/io/package.json index aec99b4..bacdfbd 100644 --- a/packages/io/package.json +++ b/packages/io/package.json @@ -5,7 +5,7 @@ "main": "index.js", "private": true, "scripts": { - "io:dev": "NODE_ENV=dev node ./index.js", + "io:dev": "node ./index.js", "io:rollup": "rollup index.js --config ./rollup-cli.config.js", "format:check": "prettier --check .", "format:write": "prettier --write .", @@ -16,7 +16,5 @@ "keywords": [], "author": "", "license": "ISC", - "devDependencies": { - - } -} \ No newline at end of file + "devDependencies": {} +} diff --git a/packages/io/utils/hash.js b/packages/io/utils/hash.js new file mode 100644 index 0000000..a84fc83 --- /dev/null +++ b/packages/io/utils/hash.js @@ -0,0 +1,7 @@ +const crypto = require('crypto') + +const generateRef = () => { + return crypto.randomUUID() +} + +module.exports = { generateRef } diff --git a/packages/io/utils/index.js b/packages/io/utils/index.js new file mode 100644 index 0000000..1461cef --- /dev/null +++ b/packages/io/utils/index.js @@ -0,0 +1,3 @@ +const { generateRef } = require('./hash') + +module.exports = { generateRef } From 7593d6e5647df3392e69fd9b6fb1df6c974a121b Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 13:18:20 +0200 Subject: [PATCH 013/459] rollup --- lib/cli/bundle.cjs | 328 ++++++++++++++++++++++++++++++ lib/io/bundle.cjs | 82 ++++++++ package-lock.json | 39 ++++ package.json | 7 +- packages/cli/rollup-cli.config.js | 2 +- packages/io/TODO.md | 6 +- packages/io/index.js | 52 ++--- packages/io/package.json | 2 +- packages/io/rollup-cli.config.js | 10 + packages/io/tests/methods.test.js | 12 ++ 10 files changed, 507 insertions(+), 33 deletions(-) create mode 100644 lib/cli/bundle.cjs create mode 100644 lib/io/bundle.cjs create mode 100644 packages/io/rollup-cli.config.js create mode 100644 packages/io/tests/methods.test.js diff --git a/lib/cli/bundle.cjs b/lib/cli/bundle.cjs new file mode 100644 index 0000000..b6bae37 --- /dev/null +++ b/lib/cli/bundle.cjs @@ -0,0 +1,328 @@ +'use strict'; + +var require$$0$3 = require('prompts'); +var require$$0 = require('kleur'); +var require$$0$1 = require('fs'); +var require$$1$1 = require('path'); +var require$$1 = require('cross-spawn'); +var require$$0$2 = require('rimraf'); + +const { red: red$2 } = require$$0; +const spawn = require$$1; +// const { detect } = require('detect-package-manager') +const PKG_OPTION = { + npm: 'install', + yarn: 'add', + pnpm: 'add', +}; + +const getPkgManage$1 = async () => { + // const pkg = await detect() + // return pkg + return 'npm' +}; + +const installDeps$1 = (pkgManager, packageList) => { + const errorMessage = `Ocurrio un error instalando ${packageList}`; + let childProcess = []; + + const installSingle = (pkgInstall) => () => { + new Promise((resolve) => { + try { + childProcess = spawn( + pkgManager, + [PKG_OPTION[pkgManager], pkgInstall], + { + stdio: 'inherit', + } + ); + + childProcess.on('error', (e) => { + console.error(e); + console.error(red$2(errorMessage)); + resolve(); + }); + + childProcess.on('close', (code) => { + if (code === 0) { + resolve(); + } else { + console.error(code); + console.error(red$2(errorMessage)); + } + }); + + resolve(); + } catch (e) { + console.error(e); + console.error(red$2(errorMessage)); + } + }); + }; + + if (typeof packageList === 'string') { + childProcess.push(installSingle(packageList)); + } else { + for (const pkg of packageList) { + childProcess.push(installSingle(pkg)); + } + } + + const runInstall = () => { + return Promise.all(childProcess.map((i) => i())) + }; + return { runInstall } +}; + +var tool = { getPkgManage: getPkgManage$1, installDeps: installDeps$1 }; + +const { readFileSync, existsSync } = require$$0$1; +const { join: join$2 } = require$$1$1; +const { installDeps, getPkgManage } = tool; + +const PATHS_DIR = [ + join$2(__dirname, 'pkg-to-update.json'), + join$2(__dirname, '..', 'pkg-to-update.json'), +]; + +const PKG_TO_UPDATE = () => { + const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a)); + const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8'); + const dataParse = JSON.parse(data); + const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`); + return pkg +}; + +const installAll$1 = async () => { + const pkg = await getPkgManage(); + installDeps(pkg, PKG_TO_UPDATE()).runInstall(); +}; + +var install = { installAll: installAll$1 }; + +const rimraf = require$$0$2; +const { yellow: yellow$2 } = require$$0; +const { join: join$1 } = require$$1$1; + +const PATH_WW = [ + join$1(process.cwd(), '.wwebjs_auth'), + join$1(process.cwd(), 'session.json'), +]; + +const cleanSession$1 = () => { + const queue = []; + for (const PATH of PATH_WW) { + console.log(yellow$2(`😬 Eliminando: ${PATH}`)); + queue.push(rimraf(PATH, () => Promise.resolve())); + } + return Promise.all(queue) +}; + +var clean = { cleanSession: cleanSession$1 }; + +const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0; + +const checkNodeVersion$1 = () => { + console.log(bgCyan('🚀 Revisando tu Node.js')); + const version = process.version; + const majorVersion = parseInt(version.replace('v', '').split('.').shift()); + if (majorVersion < 16) { + console.error( + red$1( + `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` + ) + ); + process.exit(1); + } + console.log(green(`Node.js combatible ${version}`)); + console.log(``); +}; + +const checkOs$1 = () => { + console.log(bgCyan('🙂 Revisando tu Sistema Operativo')); + const os = process.platform; + if (!os.includes('win32')) { + const messages = [ + `El sistema operativo actual (${os}) posiblemente requiera`, + `una confiuración adicional referente al puppeter`, + ``, + `Recuerda pasar por el WIKI`, + `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`, + ``, + ]; + + console.log(yellow$1(messages.join(' \n'))); + } + + console.log(``); +}; + +var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 }; + +const { writeFile } = require$$0$1.promises; +const { join } = require$$1$1; + +/** + * JSON_TEMPLATE = {[key:string]{...pros}} + */ +const JSON_TEMPLATE = { + provider: { + vendor: '', + }, + database: { + host: '', + password: '', + port: '', + username: '', + db: '', + }, + io: { + vendor: '', + }, +}; + +const PATH_CONFIG = join(process.cwd(), 'config.json'); + +const jsonConfig$1 = () => { + return writeFile( + PATH_CONFIG, + JSON.stringify(JSON_TEMPLATE, null, 2), + 'utf-8' + ) +}; + +var configuration = { jsonConfig: jsonConfig$1 }; + +const prompts = require$$0$3; +const { yellow, red } = require$$0; +const { installAll } = install; +const { cleanSession } = clean; +const { checkNodeVersion, checkOs } = check; +const { jsonConfig } = configuration; + +const startInteractive$1 = async () => { + const questions = [ + { + type: 'text', + name: 'dependencies', + message: + 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)', + }, + { + type: 'text', + name: 'cleanTmp', + message: 'Quieres limpiar la session del bot? (Y/n)', + }, + { + type: 'multiselect', + name: 'providerWs', + message: 'Proveedor de Whatsapp', + choices: [ + { title: 'whatsapp-web.js', value: 'whatsapp-web.js' }, + { title: 'API Oficial (Meta)', value: 'meta', disabled: true }, + { title: 'Twilio', value: 'twilio', disabled: true }, + ], + max: 1, + hint: 'Espacio para selecionar', + instructions: '↑/↓', + }, + { + type: 'multiselect', + name: 'providerDb', + message: 'Cual base de datos quieres usar', + choices: [ + { title: 'JSONFile', value: 'json' }, + { title: 'MySQL', value: 'mysql', disabled: true }, + { title: 'Mongo', value: 'mongo', disabled: true }, + ], + max: 1, + hint: 'Espacio para selecionar', + instructions: '↑/↓', + }, + ]; + + console.clear(); + checkNodeVersion(); + checkOs(); + const onCancel = () => { + console.log('Proceso cancelado!'); + return true + }; + const response = await prompts(questions, { onCancel }); + const { + dependencies = '', + cleanTmp = '', + providerDb = [], + providerWs = [], + } = response; + /** + * Question #1 + * @returns + */ + const installOrUdpateDep = async () => { + const answer = dependencies.toLowerCase() || 'n'; + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await installAll(); + return true + } + }; + + /** + * Question #2 + * @returns + */ + const cleanAllSession = async () => { + const answer = cleanTmp.toLowerCase() || 'n'; + if (answer.includes('n')) return true + + if (answer.includes('y')) { + await cleanSession(); + return true + } + }; + + const vendorProvider = async () => { + if (!providerWs.length) { + console.log( + red( + `Debes de seleccionar una WS Provider. Tecla [Space] para seleccionar` + ) + ); + process.exit(1); + } + console.log(yellow(`'Deberia crer una carpeta en root/provider'`)); + return true + }; + + const dbProvider = async () => { + const answer = providerDb; + if (!providerDb.length) { + console.log( + red( + `Debes de seleccionar una DB Provider. Tecla [Space] para seleccionar` + ) + ); + process.exit(1); + } + if (answer === 'json') { + console.log('Deberia crer una carpeta en root/data'); + return 1 + } + }; + + await installOrUdpateDep(); + await cleanAllSession(); + await vendorProvider(); + await dbProvider(); + await jsonConfig(); +}; + +var interactive = { startInteractive: startInteractive$1 }; + +const { startInteractive } = interactive; +if (process.env.NODE_ENV === 'dev') startInteractive(); +var cli = { startInteractive }; + +module.exports = cli; diff --git a/lib/io/bundle.cjs b/lib/io/bundle.cjs new file mode 100644 index 0000000..9685dec --- /dev/null +++ b/lib/io/bundle.cjs @@ -0,0 +1,82 @@ +'use strict'; + +var require$$0 = require('crypto'); + +const crypto = require$$0; + +const generateRef$3 = () => { + return crypto.randomUUID() +}; + +var hash = { generateRef: generateRef$3 }; + +const { generateRef: generateRef$2 } = hash; + +var utils = { generateRef: generateRef$2 }; + +const { generateRef: generateRef$1 } = utils; + +const addAnswer$3 = (inCtx) => (message, options) => { + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx; + const ctxAnswer = () => { + const ref = generateRef$1(); + /** + * Se guarda en db + */ + + return { ...lastCtx, ref, message } + }; + + const ctx = ctxAnswer(); + + return { + ctx, + ref: ctx.ref, + addAnswer: addAnswer$3(ctx), + } +}; + +var addAnswer_1 = { addAnswer: addAnswer$3 }; + +const { generateRef } = utils; +const { addAnswer: addAnswer$2 } = addAnswer_1; +/** + * addKeyword: + * Es necesario que genere id|hash + */ + +/** + * + * @param {*} message `string | string[]` + * @param {*} options {sensitivy:boolean} defaulta false + */ +const addKeyword$2 = (message, options) => { + const ctxAddKeyword = () => { + const ref = generateRef(); + /** + * Se guarda en db + */ + + return { ref, keyword: message } + }; + + const ctx = ctxAddKeyword(); + + return { + ctx, + ref: ctx.ref, + addAnswer: addAnswer$2(ctx), + } +}; + +var addKeyword_1 = { addKeyword: addKeyword$2 }; + +const { addAnswer: addAnswer$1 } = addAnswer_1; +const { addKeyword: addKeyword$1 } = addKeyword_1; + +var methods = { addAnswer: addAnswer$1, addKeyword: addKeyword$1 }; + +const { addKeyword, addAnswer } = methods; +var io = { addKeyword, addAnswer }; + +module.exports = io; diff --git a/package-lock.json b/package-lock.json index 4344f16..61a4a47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1247,6 +1247,12 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -1266,6 +1272,12 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" }, + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -3000,6 +3012,12 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4012,6 +4030,15 @@ "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", "dev": true }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4601,6 +4628,18 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/package.json b/package.json index 5fd4058..6058d80 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "scripts": { - "start": "node ./app.js", "cli": "node ./packages/cli/bin/cli.js", - "preinstall": "" + "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js", + "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js" }, "workspaces": [ "packages/cli", @@ -64,7 +64,8 @@ "prettier": "^2.7.1", "prompts": "^2.4.2", "rimraf": "^3.0.2", - "rollup": "^3.2.3" + "rollup": "^3.2.3", + "uvu": "^0.5.6" }, "engines": { "node": "16.x" diff --git a/packages/cli/rollup-cli.config.js b/packages/cli/rollup-cli.config.js index 76d1d99..e030bb2 100644 --- a/packages/cli/rollup-cli.config.js +++ b/packages/cli/rollup-cli.config.js @@ -3,7 +3,7 @@ const commonjs = require('@rollup/plugin-commonjs') module.exports = { input: 'index.js', output: { - file: 'lib/bundle.cjs', + file: 'lib/cli/bundle.cjs', format: 'cjs', }, plugins: [commonjs()], diff --git a/packages/io/TODO.md b/packages/io/TODO.md index 3c8e433..a281ea5 100644 --- a/packages/io/TODO.md +++ b/packages/io/TODO.md @@ -8,8 +8,10 @@ > `sensitivy` false _default_ -- [ ] addKeyword -- [ ] addAnswer +- [x] addKeyword +- [x] addAnswer +- [ ] addKeyword: Opciones +- [ ] addAnswer: Opciones - [ ] Si ha contactado previamente. Seguir continuida ```js diff --git a/packages/io/index.js b/packages/io/index.js index fcf8510..e92e4b1 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -1,32 +1,32 @@ const { addKeyword, addAnswer } = require('./methods') +module.exports = { addKeyword, addAnswer } +// const test = async () => { +// const cxtA = addKeyword('hola') +// console.log({ cxtA: cxtA.ctx.keyword, ref: cxtA.ref }) +// const cxtB = addAnswer(cxtA)('b') +// console.log({ cxtB: cxtB.ctx.message, ref: cxtB.ref }) +// const cxtC = addAnswer(cxtB)('c') +// console.log({ cxtC: cxtC.ctx.keyword, ref: cxtC.ref }) +// } -const test = async () => { - const cxtA = addKeyword('hola') - console.log({ cxtA: cxtA.ctx.keyword, ref: cxtA.ref }) - const cxtB = addAnswer(cxtA)('b') - console.log({ cxtB: cxtB.ctx.message, ref: cxtB.ref }) - const cxtC = addAnswer(cxtB)('c') - console.log({ cxtC: cxtC.ctx.keyword, ref: cxtC.ref }) -} +// const test1 = async () => { +// const cxtAB = addKeyword('hola').addAnswer('b').addAnswer('c') -const test1 = async () => { - const cxtAB = addKeyword('hola').addAnswer('b').addAnswer('c') +// console.log({ +// keyword: cxtAB.ctx.keyword, +// anwser: cxtAB.ctx.message, +// }) +// } - console.log({ - keyword: cxtAB.ctx.keyword, - anwser: cxtAB.ctx.message, - }) -} +// const test2 = async () => { +// const cxtABB = addKeyword('hola') +// .addAnswer('Bienvenido a tu tienda 🥲') +// .addAnswer('escribe *catalogo* o *ofertas*') -const test2 = async () => { - const cxtABB = addKeyword('hola') - .addAnswer('Bienvenido a tu tienda 🥲') - .addAnswer('escribe *catalogo* o *ofertas*') +// console.log({ +// pregunta: cxtABB.ctx.keyword, +// ultimasrespuesta: cxtABB.ctx.message, +// }) +// } - console.log({ - pregunta: cxtABB.ctx.keyword, - ultimasrespuesta: cxtABB.ctx.message, - }) -} - -test2().then() +// test2().then() diff --git a/packages/io/package.json b/packages/io/package.json index bacdfbd..75a3ff6 100644 --- a/packages/io/package.json +++ b/packages/io/package.json @@ -6,7 +6,7 @@ "private": true, "scripts": { "io:dev": "node ./index.js", - "io:rollup": "rollup index.js --config ./rollup-cli.config.js", + "io:rollup": "node ../../node_modules/.bin/rollup index.js --config ./rollup-cli.config.js", "format:check": "prettier --check .", "format:write": "prettier --write .", "lint:check": "eslint .", diff --git a/packages/io/rollup-cli.config.js b/packages/io/rollup-cli.config.js new file mode 100644 index 0000000..b2e6771 --- /dev/null +++ b/packages/io/rollup-cli.config.js @@ -0,0 +1,10 @@ +const commonjs = require('@rollup/plugin-commonjs') + +module.exports = { + input: 'index.js', + output: { + file: 'lib/io/bundle.cjs', + format: 'cjs', + }, + plugins: [commonjs()], +} diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js new file mode 100644 index 0000000..b943c2b --- /dev/null +++ b/packages/io/tests/methods.test.js @@ -0,0 +1,12 @@ +const { test, suite } = require('uvu') +const { snapshot } = require('uvu/assert') + +const botTest = suite('bot-function') + +test(``, async () => { + + + +}) + +botTest.run() From 96b8a7626c94103573ccc29a196404dec744c22f Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 14:47:42 +0200 Subject: [PATCH 014/459] uvu test:io --- packages/DRAFT.md | 0 packages/io/{TODO.md => USES_CASES.md} | 13 +++++++++++- packages/io/package.json | 1 + packages/io/tests/methods.test.js | 29 +++++++++++++++++++------- 4 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 packages/DRAFT.md rename packages/io/{TODO.md => USES_CASES.md} (87%) diff --git a/packages/DRAFT.md b/packages/DRAFT.md new file mode 100644 index 0000000..e69de29 diff --git a/packages/io/TODO.md b/packages/io/USES_CASES.md similarity index 87% rename from packages/io/TODO.md rename to packages/io/USES_CASES.md index a281ea5..ac10ec3 100644 --- a/packages/io/TODO.md +++ b/packages/io/USES_CASES.md @@ -12,7 +12,9 @@ - [x] addAnswer - [ ] addKeyword: Opciones - [ ] addAnswer: Opciones -- [ ] Si ha contactado previamente. Seguir continuida +- [ ] Retornar SQL +- [ ] Retornar JSON +- [ ] Recibir JSON ```js // bootstrap.js Como iniciar el provider @@ -98,3 +100,12 @@ answerOne.push(otherAnswer) inout.addKeywords(['hola', 'hi', 'ola']) ``` + +**Comunidad** + +> Forma parte de este proyecto. + +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) diff --git a/packages/io/package.json b/packages/io/package.json index 75a3ff6..5848618 100644 --- a/packages/io/package.json +++ b/packages/io/package.json @@ -11,6 +11,7 @@ "format:write": "prettier --write .", "lint:check": "eslint .", "lint:fix": "eslint --fix .", + "test:io": "node ../../node_modules/uvu/bin.js tests", "build:io": "npm run format:write && npm run lint:fix && npm run io:rollup" }, "keywords": [], diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index b943c2b..4599f40 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -1,12 +1,25 @@ const { test, suite } = require('uvu') -const { snapshot } = require('uvu/assert') - -const botTest = suite('bot-function') - -test(``, async () => { - - +const { snapshot, is } = require('uvu/assert') +test('sum', () => { + assert.type(math.sum, 'function') + assert.is(math.sum(1, 2), 3) + assert.is(math.sum(-1, -2), -3) + assert.is(math.sum(-1, 1), 0) }) -botTest.run() +test('div', () => { + assert.type(math.div, 'function') + assert.is(math.div(1, 2), 0.5) + assert.is(math.div(-1, -2), 0.5) + assert.is(math.div(-1, 1), -1) +}) + +test('mod', () => { + assert.type(math.mod, 'function') + assert.is(math.mod(1, 2), 1) + assert.is(math.mod(-3, -2), -1) + assert.is(math.mod(7, 4), 3) +}) + +test.run() From 3e2869b54ae3636f94253114d86070af69e6cbbe Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 18:11:55 +0200 Subject: [PATCH 015/459] unit test methods --- .gitignore | 4 +- package-lock.json | 187 ++++++++++++++++++++++++++++++ package.json | 1 + packages/io/methods/addAnswer.js | 4 +- packages/io/tests/methods.test.js | 50 +++++--- 5 files changed, 226 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 08ca802..9c86698 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,6 @@ mediaSend/* .env .wwebjs_auth packages/cli/config.json -config.json \ No newline at end of file +config.json +coverage/ +*.lcov \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 61a4a47..9fe546c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,12 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -139,6 +145,34 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -529,6 +563,12 @@ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, "@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", @@ -952,6 +992,65 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, + "c8": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", + "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1117,6 +1216,12 @@ "emitter-listener": "^1.1.1" } }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, "cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -1996,6 +2101,16 @@ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2310,6 +2425,12 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -2530,6 +2651,33 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, "js-git": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", @@ -2906,6 +3054,23 @@ "sourcemap-codec": "^1.4.8" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -4421,6 +4586,17 @@ "readable-stream": "^3.1.1" } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4640,6 +4816,17 @@ "sade": "^1.7.3" } }, + "v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/package.json b/package.json index 6058d80..f39d9e2 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", + "c8": "^7.12.0", "cross-env": "^7.0.3", "cross-spawn": "^7.0.3", "detect-package-manager": "^2.0.1", diff --git a/packages/io/methods/addAnswer.js b/packages/io/methods/addAnswer.js index b9a0bf5..b542bc6 100644 --- a/packages/io/methods/addAnswer.js +++ b/packages/io/methods/addAnswer.js @@ -1,6 +1,6 @@ const { generateRef } = require('../utils') -const addAnswer = (inCtx) => (message, options) => { +const addAnswer = (inCtx) => (answer, options) => { const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx const ctxAnswer = () => { const ref = generateRef() @@ -8,7 +8,7 @@ const addAnswer = (inCtx) => (message, options) => { * Se guarda en db */ - return { ...lastCtx, ref, message } + return { ...lastCtx, ref, answer } } const ctx = ctxAnswer() diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index 4599f40..10927ae 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -1,25 +1,41 @@ -const { test, suite } = require('uvu') -const { snapshot, is } = require('uvu/assert') +const { test } = require('uvu') +const assert = require('uvu/assert') +const { addKeyword, addAnswer } = require('../methods') -test('sum', () => { - assert.type(math.sum, 'function') - assert.is(math.sum(1, 2), 3) - assert.is(math.sum(-1, -2), -3) - assert.is(math.sum(-1, 1), 0) +test('Debere probar las propeidades', () => { + const ARRANGE = { + keyword: 'hola!', + } + const MAIN_CTX = addKeyword(ARRANGE.keyword) + + assert.type(MAIN_CTX.addAnswer, 'function') + assert.is(MAIN_CTX.ctx.keyword, ARRANGE.keyword) }) -test('div', () => { - assert.type(math.div, 'function') - assert.is(math.div(1, 2), 0.5) - assert.is(math.div(-1, -2), 0.5) - assert.is(math.div(-1, 1), -1) +test('Debere probar el paso de contexto', () => { + const ARRANGE = { + keyword: 'hola!', + answer: 'Bienvenido', + } + const CTX_A = addKeyword(ARRANGE.keyword) + const CTX_B = addAnswer(CTX_A)(ARRANGE.answer) + + assert.is(CTX_A.ctx.keyword, ARRANGE.keyword) + assert.is(CTX_B.ctx.keyword, ARRANGE.keyword) + assert.is(CTX_B.ctx.answer, ARRANGE.answer) }) -test('mod', () => { - assert.type(math.mod, 'function') - assert.is(math.mod(1, 2), 1) - assert.is(math.mod(-3, -2), -1) - assert.is(math.mod(7, 4), 3) +test('Debere probar la anidación', () => { + const ARRANGE = { + keyword: 'hola!', + answer_A: 'Bienvenido', + answer_B: 'Continuar', + } + const MAIN_CTX = addKeyword(ARRANGE.keyword) + .addAnswer(ARRANGE.answer_A) + .addAnswer(ARRANGE.answer_B) + + assert.is(MAIN_CTX.ctx.answer, ARRANGE.answer_B) }) test.run() From eccbe59a1a97e15a3780e1a81dadd1ee3b892d6e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 19:11:44 +0200 Subject: [PATCH 016/459] ci --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ package.json | 3 ++- packages/io/USES_CASES.md | 12 ++++++------ packages/io/index.js | 30 ------------------------------ packages/io/methods/addKeyword.js | 18 ++++++++++++++++-- packages/io/tests/methods.test.js | 15 +++++++++++++++ 6 files changed, 64 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..76549d4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,25 @@ +name: Node.js CI + +on: + push: + branches: [monorepo] + pull_request: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [16.x] + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: npm ci + - run: npm run build --if-present + - run: npm run test:io diff --git a/package.json b/package.json index f39d9e2..9bc7dc0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "cli": "node ./packages/cli/bin/cli.js", "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js", - "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js" + "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", + "test:io": "node ./node_modules/uvu/bin.js ./packages/io/tests" }, "workspaces": [ "packages/cli", diff --git a/packages/io/USES_CASES.md b/packages/io/USES_CASES.md index ac10ec3..6a31b20 100644 --- a/packages/io/USES_CASES.md +++ b/packages/io/USES_CASES.md @@ -6,11 +6,11 @@ **addKeyword** recibe `string | string[]` -> `sensitivy` false _default_ +> `sensitive` false _default_ - [x] addKeyword - [x] addAnswer -- [ ] addKeyword: Opciones +- [x] addKeyword: Opciones - [ ] addAnswer: Opciones - [ ] Retornar SQL - [ ] Retornar JSON @@ -72,21 +72,21 @@ await inout }) await inout - .addKeyword('Modelo C', { sensitivy: false }) + .addKeyword('Modelo C', { sensitive: false }) .addAnswer('100USD', { media: 'http//:...' }) await inout - .addKeyword('hola!', { sensitivy: false }) + .addKeyword('hola!', { sensitive: false }) .addAnswer('Bievenido Escribe *productos*') await inout - .addKeyword('productos', { sensitivy: false }) + .addKeyword('productos', { sensitive: false }) .addAnswer('Esto son los mas vendidos') .addAnswer('*PC1* Precio 10USD', { media: 'https://....' }) .addAnswer('*PC2* Precio 10USD', { media: 'https://....' }) await inout - .addKeyword('PC1', { sensitivy: false }) + .addKeyword('PC1', { sensitive: false }) .addAnswer('Bievenido Escribe *productos*') const answerOne = await inout.addAnswer({ diff --git a/packages/io/index.js b/packages/io/index.js index e92e4b1..f9ee91e 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -1,32 +1,2 @@ const { addKeyword, addAnswer } = require('./methods') module.exports = { addKeyword, addAnswer } -// const test = async () => { -// const cxtA = addKeyword('hola') -// console.log({ cxtA: cxtA.ctx.keyword, ref: cxtA.ref }) -// const cxtB = addAnswer(cxtA)('b') -// console.log({ cxtB: cxtB.ctx.message, ref: cxtB.ref }) -// const cxtC = addAnswer(cxtB)('c') -// console.log({ cxtC: cxtC.ctx.keyword, ref: cxtC.ref }) -// } - -// const test1 = async () => { -// const cxtAB = addKeyword('hola').addAnswer('b').addAnswer('c') - -// console.log({ -// keyword: cxtAB.ctx.keyword, -// anwser: cxtAB.ctx.message, -// }) -// } - -// const test2 = async () => { -// const cxtABB = addKeyword('hola') -// .addAnswer('Bienvenido a tu tienda 🥲') -// .addAnswer('escribe *catalogo* o *ofertas*') - -// console.log({ -// pregunta: cxtABB.ctx.keyword, -// ultimasrespuesta: cxtABB.ctx.message, -// }) -// } - -// test2().then() diff --git a/packages/io/methods/addKeyword.js b/packages/io/methods/addKeyword.js index 2102b04..7fc88f1 100644 --- a/packages/io/methods/addKeyword.js +++ b/packages/io/methods/addKeyword.js @@ -8,16 +8,30 @@ const { addAnswer } = require('./addAnswer') /** * * @param {*} message `string | string[]` - * @param {*} options {sensitivy:boolean} defaulta false + * @param {*} options {sensitive:boolean} default */ const addKeyword = (message, options) => { + /** + * Esta funcion deberia parsear y validar las opciones + * del keyword + * @returns + */ + const parseOptions = () => { + const defaultProperties = { + sensitive: options?.sensitive ?? true, + } + + return defaultProperties + } + const ctxAddKeyword = () => { const ref = generateRef() + const options = parseOptions() /** * Se guarda en db */ - return { ref, keyword: message } + return { ref, keyword: message, options } } const ctx = ctxAddKeyword() diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index 10927ae..4b08337 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -12,6 +12,15 @@ test('Debere probar las propeidades', () => { assert.is(MAIN_CTX.ctx.keyword, ARRANGE.keyword) }) +test('Debere probar las propeidades array', () => { + const ARRANGE = { + keyword: ['hola!', 'ole'], + } + const MAIN_CTX = addKeyword(ARRANGE.keyword) + + assert.is(MAIN_CTX.ctx.keyword, ARRANGE.keyword) +}) + test('Debere probar el paso de contexto', () => { const ARRANGE = { keyword: 'hola!', @@ -38,4 +47,10 @@ test('Debere probar la anidación', () => { assert.is(MAIN_CTX.ctx.answer, ARRANGE.answer_B) }) +test('Debere probar las poptions', () => { + const MAIN_CTX = addKeyword('etc', { sensitive: false }) + + assert.is(MAIN_CTX.ctx.options.sensitive, false) +}) + test.run() From 46ee2c6dd0f740435d4712fa9e413fe7a324e7da Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 19:12:27 +0200 Subject: [PATCH 017/459] ci --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76549d4..ea5c4e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: Node.js CI on: push: - branches: [monorepo] + branches: [feature/monorepo] pull_request: branches: [main] From df5fe085a87887e5ecfc6b41393e26f6c4e0aefa Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 19:15:39 +0200 Subject: [PATCH 018/459] update --- package-lock.json | 10069 ++++++++++++++++++++++---------------------- 1 file changed, 5043 insertions(+), 5026 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9fe546c..45758ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5089 +1,5106 @@ { - "name": "bot-whatsapp", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/parser": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", - "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "name": "bot-whatsapp", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/parser": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", + "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@fast-csv/format": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", - "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", - "requires": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isboolean": "^3.0.3", - "lodash.isequal": "^4.5.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0" - } - }, - "@fast-csv/parse": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", - "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", - "requires": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.groupby": "^4.6.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0", - "lodash.isundefined": "^3.0.1", - "lodash.uniq": "^4.5.0" - } - }, - "@google-cloud/dialogflow": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@google-cloud/dialogflow/-/dialogflow-5.2.1.tgz", - "integrity": "sha512-znz5GBdICmAa9JvVHCHMfc1uAoV5zVcYssnyZNkUHhK0pvJXRRR1rASWKtD88mVrQnCozbLqewopSYt0qqNBqw==", - "requires": { - "google-gax": "^3.3.0" - } - }, - "@grpc/grpc-js": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.2.tgz", - "integrity": "sha512-MqqbVynbe3VUSnApFW/dpkDaa9T1ASqRnMWeSPGFO/Ro98R7XUDLacfeBa7RaSI1iFu9GYk5gBKARf0zipFe4w==", - "requires": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - } - }, - "@grpc/proto-loader": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", - "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", - "requires": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", - "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@opencensus/core": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", - "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", - "dev": true, - "requires": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "@google-cloud/dialogflow": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@google-cloud/dialogflow/-/dialogflow-5.2.1.tgz", + "integrity": "sha512-znz5GBdICmAa9JvVHCHMfc1uAoV5zVcYssnyZNkUHhK0pvJXRRR1rASWKtD88mVrQnCozbLqewopSYt0qqNBqw==", + "requires": { + "google-gax": "^3.3.0" + } + }, + "@grpc/grpc-js": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.2.tgz", + "integrity": "sha512-MqqbVynbe3VUSnApFW/dpkDaa9T1ASqRnMWeSPGFO/Ro98R7XUDLacfeBa7RaSI1iFu9GYk5gBKARf0zipFe4w==", + "requires": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", + "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", + "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "@opencensus/propagation-b3": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", - "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", - "dev": true, - "requires": { - "@opencensus/core": "^0.0.8", - "uuid": "^3.2.1" - }, - "dependencies": { "@opencensus/core": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", - "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", - "dev": true, - "requires": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - } + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", + "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", + "dev": true, + "requires": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "@opencensus/propagation-b3": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", + "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", + "dev": true, + "requires": { + "@opencensus/core": "^0.0.8", + "uuid": "^3.2.1" + }, + "dependencies": { + "@opencensus/core": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", + "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", + "dev": true, + "requires": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "@pedroslopez/moduleraid": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz", - "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==" - }, - "@pm2/agent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz", - "integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==", - "dev": true, - "requires": { - "async": "~3.2.0", - "chalk": "~3.0.0", - "dayjs": "~1.8.24", - "debug": "~4.3.1", - "eventemitter2": "~5.0.1", - "fast-json-patch": "^3.0.0-1", - "fclone": "~1.0.11", - "nssocket": "0.6.0", - "pm2-axon": "~4.0.1", - "pm2-axon-rpc": "~0.7.0", - "proxy-agent": "~5.0.0", - "semver": "~7.2.0", - "ws": "~7.4.0" - }, - "dependencies": { - "dayjs": { - "version": "1.8.36", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz", - "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==", - "dev": true + "@pedroslopez/moduleraid": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz", + "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==" }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "@pm2/agent": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz", + "integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==", + "dev": true, + "requires": { + "async": "~3.2.0", + "chalk": "~3.0.0", + "dayjs": "~1.8.24", + "debug": "~4.3.1", + "eventemitter2": "~5.0.1", + "fast-json-patch": "^3.0.0-1", + "fclone": "~1.0.11", + "nssocket": "0.6.0", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.0", + "proxy-agent": "~5.0.0", + "semver": "~7.2.0", + "ws": "~7.4.0" + }, + "dependencies": { + "dayjs": { + "version": "1.8.36", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz", + "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", + "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==", + "dev": true + } + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "@pm2/io": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz", + "integrity": "sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw==", + "dev": true, + "requires": { + "@opencensus/core": "0.0.9", + "@opencensus/propagation-b3": "0.0.8", + "async": "~2.6.1", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "require-in-the-middle": "^5.0.0", + "semver": "6.3.0", + "shimmer": "^1.2.0", + "signal-exit": "^3.0.3", + "tslib": "1.9.3" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@pm2/js-api": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz", + "integrity": "sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw==", + "dev": true, + "requires": { + "async": "^2.6.3", + "axios": "^0.21.0", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "ws": "^7.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@pm2/pm2-version-check": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", + "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", + "dev": true, + "requires": { + "debug": "^4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@rollup/plugin-commonjs": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", + "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.26.4" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "requires": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" + }, + "@types/node": { + "version": "14.18.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.32.tgz", + "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==" + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amp": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", + "integrity": "sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==", + "dev": true + }, + "amp-message": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", + "integrity": "sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==", + "dev": true, + "requires": { + "amp": "0.3.1" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } }, - "semver": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", - "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==", - "dev": true - } - } - }, - "@pm2/io": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz", - "integrity": "sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw==", - "dev": true, - "requires": { - "@opencensus/core": "0.0.9", - "@opencensus/propagation-b3": "0.0.8", - "async": "~2.6.1", - "debug": "~4.3.1", - "eventemitter2": "^6.3.1", - "require-in-the-middle": "^5.0.0", - "semver": "6.3.0", - "shimmer": "^1.2.0", - "signal-exit": "^3.0.3", - "tslib": "1.9.3" - }, - "dependencies": { "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "dev": true, + "requires": { + "semver": "^5.3.0", + "shimmer": "^1.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } }, - "eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "dev": true + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@pm2/js-api": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz", - "integrity": "sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw==", - "dev": true, - "requires": { - "async": "^2.6.3", - "axios": "^0.21.0", - "debug": "~4.3.1", - "eventemitter2": "^6.3.1", - "ws": "^7.0.0" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, - "eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "dev": true + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + }, + "bignumber.js": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", + "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blessed": { + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bodec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", + "integrity": "sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@rollup/plugin-commonjs": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", - "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.26.4" - }, - "dependencies": { "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "c8": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", + "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "requires": { + "lodash": "^4.17.15" + } + }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cli-tableau": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", + "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", + "dev": true, + "requires": { + "chalk": "3.0.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "dev": true, + "requires": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + } + }, + "croner": { + "version": "4.1.97", + "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz", + "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "culvert": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", + "integrity": "sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==", + "dev": true + }, + "data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "dev": true + }, + "dayjs": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", + "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "degenerator": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", + "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", + "dev": true, + "requires": { + "ast-types": "^0.13.2", + "escodegen": "^1.8.1", + "esprima": "^4.0.0", + "vm2": "^3.9.8" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "requires": { + "execa": "^5.1.1" + } + }, + "devtools-protocol": { + "version": "0.0.981744", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", + "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" + }, + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "dev": true, + "requires": { + "shimmer": "^1.2.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "dependencies": { + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" + } + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } + } + }, + "eslint": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "eventemitter2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", + "integrity": "sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==", + "dev": true + }, + "exceljs": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.3.0.tgz", + "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", + "requires": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.5.0", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "requires": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-patch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fclone": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", + "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==", + "dev": true + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "requires": { + "pend": "~1.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-type": { + "version": "17.1.6", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", + "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", + "requires": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0-alpha.9", + "token-types": "^5.0.0-alpha.2" + } + }, + "file-uri-to-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", + "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fluent-ffmpeg": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", + "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", + "requires": { + "async": ">=0.2.9", + "which": "^1.1.1" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", + "dev": true, + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gaxios": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.0.2.tgz", + "integrity": "sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + } + }, + "gcp-metadata": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.1.tgz", + "integrity": "sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g==", + "requires": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", + "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "data-uri-to-buffer": "3", + "debug": "4", + "file-uri-to-path": "2", + "fs-extra": "^8.1.0", + "ftp": "^0.3.10" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "git-node-fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", + "integrity": "sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==", + "dev": true + }, + "git-sha1": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz", + "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==", + "dev": true }, "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "requires": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - }, - "@types/node": { - "version": "14.18.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.32.tgz", - "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==" - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "adler-32": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", - "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "amp": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", - "integrity": "sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==", - "dev": true - }, - "amp-message": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", - "integrity": "sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==", - "dev": true, - "requires": { - "amp": "0.3.1" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dev": true, - "requires": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, - "bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==" - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "blessed": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", - "integrity": "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bodec": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", - "integrity": "sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==", - "dev": true - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "c8": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", - "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "requires": { - "lodash": "^4.17.15" - } - }, - "cfb": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", - "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", - "requires": { - "adler-32": "~1.3.0", - "crc-32": "~1.2.0" - } - }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "charm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", - "integrity": "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "cli-tableau": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", - "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", - "dev": true, - "requires": { - "chalk": "3.0.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "codepage": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", - "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dev": true, - "requires": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" - }, - "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - } - }, - "croner": { - "version": "4.1.97", - "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz", - "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==", - "dev": true - }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "culvert": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", - "integrity": "sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==", - "dev": true - }, - "data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "dev": true - }, - "dayjs": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", - "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "degenerator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", - "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", - "dev": true, - "requires": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.8" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-package-manager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", - "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", - "dev": true, - "requires": { - "execa": "^5.1.1" - } - }, - "devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" - }, - "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "dev": true, - "requires": { - "shimmer": "^1.2.0" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "dependencies": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" - } - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - } - } - }, - "eslint": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", - "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } }, "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } + "google-auth-library": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", + "integrity": "sha512-y6bw1yTWMVgs1vGJwBZ3uu+uIClfgxQfsEVcTNKjQeNQOVwox69+ZUgTeTAzrh+74hBqrk1gWyb9RsQVDI7seg==", + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.0.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "google-gax": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.5.2.tgz", + "integrity": "sha512-AyP53w0gHcWlzxm+jSgqCR3Xu4Ld7EpSjhtNBnNhzwwWaIUyphH9kBGNIEH+i4UGkTUXOY29K/Re8EiAvkBRGw==", + "requires": { + "@grpc/grpc-js": "~1.7.0", + "@grpc/proto-loader": "^0.7.0", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^8.0.2", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^1.0.0", + "protobufjs": "7.1.2", + "protobufjs-cli": "1.0.2", + "retry-request": "^5.0.0" + } }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } + "google-p12-pem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "requires": { + "node-forge": "^1.3.1" + } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "gtoken": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", + "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "requires": { + "gaxios": "^5.0.1", + "google-p12-pem": "^4.0.0", + "jws": "^4.0.0" + } }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - }, - "espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "eventemitter2": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", - "integrity": "sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==", - "dev": true - }, - "exceljs": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.3.0.tgz", - "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", - "requires": { - "archiver": "^5.0.0", - "dayjs": "^1.8.34", - "fast-csv": "^4.3.1", - "jszip": "^3.5.0", - "readable-stream": "^3.6.0", - "saxes": "^5.0.1", - "tmp": "^0.2.0", - "unzipper": "^0.10.11", - "uuid": "^8.3.0" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - } - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "fast-csv": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", - "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", - "requires": { - "@fast-csv/format": "4.3.5", - "@fast-csv/parse": "4.3.6" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-patch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fclone": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", - "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==", - "dev": true - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "requires": { - "pend": "~1.2.0" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", - "requires": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" - } - }, - "file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "fluent-ffmpeg": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", - "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", - "requires": { - "async": ">=0.2.9", - "which": "^1.1.1" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "frac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", - "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", - "dev": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gaxios": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.0.2.tgz", - "integrity": "sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og==", - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - } - }, - "gcp-metadata": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.1.tgz", - "integrity": "sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g==", - "requires": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "git-node-fs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", - "integrity": "sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==", - "dev": true - }, - "git-sha1": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz", - "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "google-auth-library": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", - "integrity": "sha512-y6bw1yTWMVgs1vGJwBZ3uu+uIClfgxQfsEVcTNKjQeNQOVwox69+ZUgTeTAzrh+74hBqrk1gWyb9RsQVDI7seg==", - "requires": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.0.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - } - }, - "google-gax": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.5.2.tgz", - "integrity": "sha512-AyP53w0gHcWlzxm+jSgqCR3Xu4Ld7EpSjhtNBnNhzwwWaIUyphH9kBGNIEH+i4UGkTUXOY29K/Re8EiAvkBRGw==", - "requires": { - "@grpc/grpc-js": "~1.7.0", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^8.0.2", - "is-stream-ended": "^0.1.4", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.1.2", - "protobufjs-cli": "1.0.2", - "retry-request": "^5.0.0" - } - }, - "google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "requires": { - "node-forge": "^1.3.1" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", - "requires": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "js-git": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", - "integrity": "sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==", - "dev": true, - "requires": { - "bodec": "^0.1.0", - "culvert": "^0.1.2", - "git-sha1": "^0.1.2", - "pako": "^0.2.5" - }, - "dependencies": { - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", - "dev": true - } - } - }, - "js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "requires": { - "xmlcreate": "^2.0.4" - } - }, - "jsdoc": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", - "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", - "requires": { - "@babel/parser": "^7.9.4", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - } - } - }, - "json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "requires": { - "bignumber.js": "^9.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "optional": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsqr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", - "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" - }, - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "requires": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true - }, - "lazy": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", - "dev": true - }, - "lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "requires": { - "readable-stream": "^2.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "requires": { - "immediate": "~3.0.5" - } - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, - "lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" - }, - "lodash.isnil": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", - "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isundefined": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", - "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdown-it-anchor": { - "version": "8.6.5", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz", - "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==" - }, - "marked": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", - "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "dev": true - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "mysql": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", - "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", - "requires": { - "bignumber.js": "9.0.0", - "readable-stream": "2.3.7", - "safe-buffer": "5.1.2", - "sqlstring": "2.3.1" - }, - "dependencies": { - "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "dev": true - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - }, - "node-webpmux": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.3.tgz", - "integrity": "sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nssocket": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", - "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", - "dev": true, - "requires": { - "eventemitter2": "~0.4.14", - "lazy": "~1.0.11" - }, - "dependencies": { - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", - "dev": true - } - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "pac-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", - "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^5.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pac-resolver": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", - "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", - "dev": true, - "requires": { - "degenerator": "^3.0.2", - "ip": "^1.1.5", - "netmask": "^2.0.2" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pidusage": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.1.tgz", - "integrity": "sha512-/UlE6DQIe6yuDvm3v6756U0ErEsj60FLQTRZ4qPQF9b5yZKhf4c0llzD0tZpyE03nn8HQoLniFgKsL0ABB3nCg==", - "dev": true, - "requires": { - "safe-buffer": "^5.2.1" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } - }, - "pm2": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.2.2.tgz", - "integrity": "sha512-mASxgh/MZhtVze/wijGf+tE6JKdA3lEq64FOfXVhhArkuk9Qxl4ePw9XgFJaArOXnU3bde+KbeAJHYxppVvYBQ==", - "dev": true, - "requires": { - "@pm2/agent": "~2.0.0", - "@pm2/io": "~5.0.0", - "@pm2/js-api": "~0.6.7", - "@pm2/pm2-version-check": "^1.0.4", - "async": "~3.2.0", - "blessed": "0.1.81", - "chalk": "3.0.0", - "chokidar": "^3.5.3", - "cli-tableau": "^2.0.0", - "commander": "2.15.1", - "croner": "~4.1.92", - "dayjs": "~1.11.5", - "debug": "^4.3.1", - "enquirer": "2.3.6", - "eventemitter2": "5.0.1", - "fclone": "1.0.11", - "mkdirp": "1.0.4", - "needle": "2.4.0", - "pidusage": "~3.0", - "pm2-axon": "~4.0.1", - "pm2-axon-rpc": "~0.7.1", - "pm2-deploy": "~1.0.2", - "pm2-multimeter": "^0.1.2", - "pm2-sysmonit": "^1.2.8", - "promptly": "^2", - "semver": "^7.2", - "source-map-support": "0.5.21", - "sprintf-js": "1.1.2", - "vizion": "~2.2.1", - "yamljs": "0.3.0" - }, - "dependencies": { - "@pm2/pm2-version-check": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", - "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", - "dev": true, - "requires": { - "debug": "^4.3.1" - } + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pm2-axon": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz", - "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==", - "dev": true, - "requires": { - "amp": "~0.3.1", - "amp-message": "~0.1.1", - "debug": "^4.3.1", - "escape-string-regexp": "^4.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pm2-axon-rpc": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz", - "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", - "dev": true, - "requires": { - "debug": "^4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pm2-deploy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", - "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", - "dev": true, - "requires": { - "run-series": "^1.1.8", - "tv4": "^1.3.0" - } - }, - "pm2-multimeter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", - "integrity": "sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==", - "dev": true, - "requires": { - "charm": "~0.1.1" - } - }, - "pm2-sysmonit": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz", - "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==", - "dev": true, - "optional": true, - "requires": { - "async": "^3.2.0", - "debug": "^4.3.1", - "pidusage": "^2.0.21", - "systeminformation": "^5.7", - "tx2": "~1.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "optional": true - }, - "pidusage": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", - "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.2.1" - } - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - }, - "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "promptly": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", - "integrity": "sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==", - "dev": true, - "requires": { - "read": "^1.0.4" - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "dependencies": { - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - } - } - }, - "proto3-json-serializer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", - "integrity": "sha512-SjXwUWe/vANGs/mJJTbw5++7U67nwsymg7qsoPtw6GiXqw3kUy8ByojrlEdVE2efxAdKreX8WkDafxvYW95ZQg==", - "requires": { - "protobufjs": "^7.0.0" - } - }, - "protobufjs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", - "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "dependencies": { - "long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" - } - } - }, - "protobufjs-cli": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.0.2.tgz", - "integrity": "sha512-cz9Pq9p/Zs7okc6avH20W7QuyjTclwJPgqXG11jNaulfS3nbVisID8rC+prfgq0gbZE0w9LBFd1OKFF03kgFzg==", - "requires": { - "chalk": "^4.0.0", - "escodegen": "^1.13.0", - "espree": "^9.0.0", - "estraverse": "^5.1.0", - "glob": "^8.0.0", - "jsdoc": "^3.6.3", - "minimist": "^1.2.0", - "semver": "^7.1.2", - "tmp": "^0.2.1", - "uglify-js": "^3.7.7" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", - "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", - "dev": true, - "requires": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^5.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "puppeteer": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", - "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", - "requires": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" - } - } - }, - "qr-image": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", - "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==" - }, - "qrcode-terminal": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", - "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - } - }, - "readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", - "requires": { - "minimatch": "^5.1.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-in-the-middle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", - "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "requires": { - "lodash": "^4.17.14" - } - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "retry-request": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", - "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", - "requires": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", - "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "run-series": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", - "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", - "dev": true - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "requires": { - "mri": "^1.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "dependencies": { "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - } - } - }, - "socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "sqlstring": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", - "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==" - }, - "ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "requires": { - "frac": "~1.1.2" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stormdb": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/stormdb/-/stormdb-0.6.0.tgz", - "integrity": "sha512-B5ki9Xk8xLjWPKorWA6iE8yTFfIFspZKdjfOQc7wvsnMGtj16PWknFxo4XLSD1MDFLPsTkzwYaiubk708j/HkQ==" - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "systeminformation": { - "version": "5.12.7", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.7.tgz", - "integrity": "sha512-Kubdu6YzMWtGEsnGF5ddohvIWsxOlEkV0P/3oKTPl56ADOowDiWBR59RpIRvbijXwEQrnRKeF3MOuH7apdEc/g==", - "dev": true, - "optional": true - }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==" - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tv4": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", - "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", - "dev": true - }, - "tx2": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", - "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", - "dev": true, - "optional": true, - "requires": { - "json-stringify-safe": "^5.0.1" - } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "uglify-js": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", - "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==" - }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "requires": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - } - }, - "v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "vizion": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", - "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==", - "dev": true, - "requires": { - "async": "^2.6.3", - "git-node-fs": "^1.0.0", - "ini": "^1.3.5", - "js-git": "^0.7.8" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "vm2": { - "version": "3.9.11", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", - "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatsapp-web.js": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", - "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", - "requires": { - "@pedroslopez/moduleraid": "^5.0.2", - "archiver": "^5.3.1", - "fluent-ffmpeg": "^2.1.2", - "fs-extra": "^10.1.0", - "jsqr": "^1.3.1", - "mime": "^3.0.0", - "node-fetch": "^2.6.5", - "node-webpmux": "^3.1.0", - "puppeteer": "^13.0.0", - "unzipper": "^0.10.11" - }, - "dependencies": { - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "js-git": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", + "integrity": "sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==", + "dev": true, + "requires": { + "bodec": "^0.1.0", + "culvert": "^0.1.2", + "git-sha1": "^0.1.2", + "pako": "^0.2.5" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true + } + } + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "requires": { + "xmlcreate": "^2.0.4" + } + }, + "jsdoc": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", + "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", + "requires": { + "@babel/parser": "^7.9.4", + "@types/markdown-it": "^12.2.3", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } + } + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "optional": true }, "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsqr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", + "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "lazy": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", + "dev": true + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "markdown-it-anchor": { + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz", + "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==" + }, + "marked": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", + "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "optional": true - } - } - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" - }, - "word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true - }, - "xlsx": { - "version": "0.18.5", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", - "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", - "requires": { - "adler-32": "~1.3.0", - "cfb": "~1.2.1", - "codepage": "~1.15.0", - "crc-32": "~1.2.1", - "ssf": "~0.11.2", - "wmf": "~1.0.1", - "word": "~0.3.0" - } - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "dev": true + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "mysql": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", + "requires": { + "bignumber.js": "9.0.0", + "readable-stream": "2.3.7", + "safe-buffer": "5.1.2", + "sqlstring": "2.3.1" + }, + "dependencies": { + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "dev": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-webpmux": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.3.tgz", + "integrity": "sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nssocket": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", + "dev": true, + "requires": { + "eventemitter2": "~0.4.14", + "lazy": "~1.0.11" + }, + "dependencies": { + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", + "dev": true + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pac-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", + "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4", + "get-uri": "3", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "5", + "pac-resolver": "^5.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "5" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "pac-resolver": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", + "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", + "dev": true, + "requires": { + "degenerator": "^3.0.2", + "ip": "^1.1.5", + "netmask": "^2.0.2" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pidusage": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.1.tgz", + "integrity": "sha512-/UlE6DQIe6yuDvm3v6756U0ErEsj60FLQTRZ4qPQF9b5yZKhf4c0llzD0tZpyE03nn8HQoLniFgKsL0ABB3nCg==", + "dev": true, + "requires": { + "safe-buffer": "^5.2.1" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "pm2": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.2.2.tgz", + "integrity": "sha512-mASxgh/MZhtVze/wijGf+tE6JKdA3lEq64FOfXVhhArkuk9Qxl4ePw9XgFJaArOXnU3bde+KbeAJHYxppVvYBQ==", + "dev": true, + "requires": { + "@pm2/agent": "~2.0.0", + "@pm2/io": "~5.0.0", + "@pm2/js-api": "~0.6.7", + "@pm2/pm2-version-check": "^1.0.4", + "async": "~3.2.0", + "blessed": "0.1.81", + "chalk": "3.0.0", + "chokidar": "^3.5.3", + "cli-tableau": "^2.0.0", + "commander": "2.15.1", + "croner": "~4.1.92", + "dayjs": "~1.11.5", + "debug": "^4.3.1", + "enquirer": "2.3.6", + "eventemitter2": "5.0.1", + "fclone": "1.0.11", + "mkdirp": "1.0.4", + "needle": "2.4.0", + "pidusage": "~3.0", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.1", + "pm2-deploy": "~1.0.2", + "pm2-multimeter": "^0.1.2", + "pm2-sysmonit": "^1.2.8", + "promptly": "^2", + "semver": "^7.2", + "source-map-support": "0.5.21", + "sprintf-js": "1.1.2", + "vizion": "~2.2.1", + "yamljs": "0.3.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "pm2-axon": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz", + "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==", + "dev": true, + "requires": { + "amp": "~0.3.1", + "amp-message": "~0.1.1", + "debug": "^4.3.1", + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "pm2-axon-rpc": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz", + "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", + "dev": true, + "requires": { + "debug": "^4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "pm2-deploy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", + "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", + "dev": true, + "requires": { + "run-series": "^1.1.8", + "tv4": "^1.3.0" + } + }, + "pm2-multimeter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", + "integrity": "sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==", + "dev": true, + "requires": { + "charm": "~0.1.1" + } + }, + "pm2-sysmonit": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz", + "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==", + "dev": true, + "optional": true, + "requires": { + "async": "^3.2.0", + "debug": "^4.3.1", + "pidusage": "^2.0.21", + "systeminformation": "^5.7", + "tx2": "~1.0.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "optional": true + }, + "pidusage": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", + "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.2.1" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promptly": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", + "integrity": "sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==", + "dev": true, + "requires": { + "read": "^1.0.4" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + } + } + }, + "proto3-json-serializer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", + "integrity": "sha512-SjXwUWe/vANGs/mJJTbw5++7U67nwsymg7qsoPtw6GiXqw3kUy8ByojrlEdVE2efxAdKreX8WkDafxvYW95ZQg==", + "requires": { + "protobufjs": "^7.0.0" + } + }, + "protobufjs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", + "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", + "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" + } + } + }, + "protobufjs-cli": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.0.2.tgz", + "integrity": "sha512-cz9Pq9p/Zs7okc6avH20W7QuyjTclwJPgqXG11jNaulfS3nbVisID8rC+prfgq0gbZE0w9LBFd1OKFF03kgFzg==", + "requires": { + "chalk": "^4.0.0", + "escodegen": "^1.13.0", + "espree": "^9.0.0", + "estraverse": "^5.1.0", + "glob": "^8.0.0", + "jsdoc": "^3.6.3", + "minimist": "^1.2.0", + "semver": "^7.1.2", + "tmp": "^0.2.1", + "uglify-js": "^3.7.7" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", + "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", + "dev": true, + "requires": { + "agent-base": "^6.0.0", + "debug": "4", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^5.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^5.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "puppeteer": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", + "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.981744", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" + } + } + }, + "qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==" + }, + "qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "requires": { + "readable-stream": "^3.6.0" + } + }, + "readdir-glob": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", + "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", + "requires": { + "minimatch": "^5.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-in-the-middle": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", + "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "requires": { + "lodash": "^4.17.14" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "retry-request": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", + "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", + "requires": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", + "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-series": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", + "dev": true + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socket.io": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "dependencies": { + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + } + } + }, + "socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true }, "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, + "sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==" + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "stormdb": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/stormdb/-/stormdb-0.6.0.tgz", + "integrity": "sha512-B5ki9Xk8xLjWPKorWA6iE8yTFfIFspZKdjfOQc7wvsnMGtj16PWknFxo4XLSD1MDFLPsTkzwYaiubk708j/HkQ==" + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "systeminformation": { + "version": "5.12.7", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.7.tgz", + "integrity": "sha512-Kubdu6YzMWtGEsnGF5ddohvIWsxOlEkV0P/3oKTPl56ADOowDiWBR59RpIRvbijXwEQrnRKeF3MOuH7apdEc/g==", + "dev": true, + "optional": true + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==" + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", + "dev": true + }, + "tx2": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", + "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", + "dev": true, + "optional": true, + "requires": { + "json-stringify-safe": "^5.0.1" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "uglify-js": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", + "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==" + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + } + }, + "v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "vizion": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", + "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==", + "dev": true, + "requires": { + "async": "^2.6.3", + "git-node-fs": "^1.0.0", + "ini": "^1.3.5", + "js-git": "^0.7.8" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "vm2": { + "version": "3.9.11", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", + "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatsapp-web.js": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", + "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", + "requires": { + "@pedroslopez/moduleraid": "^5.0.2", + "archiver": "^5.3.1", + "fluent-ffmpeg": "^2.1.2", + "fs-extra": "^10.1.0", + "jsqr": "^1.3.1", + "mime": "^3.0.0", + "node-fetch": "^2.6.5", + "node-webpmux": "^3.1.0", + "puppeteer": "^13.0.0", + "unzipper": "^0.10.11" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true + } + } + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true + }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" + }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + } + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + } } - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - } } - } } From b678041e6857cb1d772ad10231edf022822e3322 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 19:17:33 +0200 Subject: [PATCH 019/459] update --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9bc7dc0..77dd684 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "uvu": "^0.5.6" }, "engines": { - "node": "16.x" + "node": "16.x", + "npm": ">=6.0.0" } } From deb238d423a7dcacc1591aaa64a9dd5ff9ea6b39 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 19:21:00 +0200 Subject: [PATCH 020/459] update --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea5c4e6..2e57b49 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,6 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - - run: npm ci + - run: npm i - run: npm run build --if-present - run: npm run test:io From 5704300d75c27765b1d855f66d6477ceeca383c4 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 20:10:39 +0200 Subject: [PATCH 021/459] update --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e57b49..d2e0f1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,12 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - - run: npm i + - run: | + if [ -e yarn.lock ]; then + yarn install --frozen-lockfile + elif [ -e package-lock.json ]; then + npm ci + else + npm i - run: npm run build --if-present - run: npm run test:io From 403dea665d5c4e04e5b29364e3d713abd4a645f2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 20:12:08 +0200 Subject: [PATCH 022/459] update --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2e0f1c..f8c2e53 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,5 +27,6 @@ jobs: npm ci else npm i + fi - run: npm run build --if-present - run: npm run test:io From 421021473513ccf089e1ad1ab28edd8a5ae8276b Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 20:13:15 +0200 Subject: [PATCH 023/459] update --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8c2e53..1c4cea8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - - run: | + run: | if [ -e yarn.lock ]; then yarn install --frozen-lockfile elif [ -e package-lock.json ]; then From a4d51304b93ce6b11c0fb5b4dc04cdf23a6af17e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 20:14:18 +0200 Subject: [PATCH 024/459] update --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c4cea8..5720a37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - run: | + run: | if [ -e yarn.lock ]; then yarn install --frozen-lockfile elif [ -e package-lock.json ]; then From e24e648e071f2cea3eb17a4e85c67eb85ef967cd Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 20:15:00 +0200 Subject: [PATCH 025/459] update --- .github/workflows/ci.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5720a37..8c3f149 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,13 +20,11 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - run: | - if [ -e yarn.lock ]; then - yarn install --frozen-lockfile - elif [ -e package-lock.json ]; then - npm ci - else - npm i - fi - - run: npm run build --if-present - - run: npm run test:io + run: | + if [ -e yarn.lock ]; then + yarn install --frozen-lockfile + elif [ -e package-lock.json ]; then + npm ci + else + npm i + fi From c05470c04541348e86bae5a3c6c98e3d4e7f7de2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 29 Oct 2022 20:17:01 +0200 Subject: [PATCH 026/459] update --- .github/workflows/ci.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c3f149..03734c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,11 +20,6 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - run: | - if [ -e yarn.lock ]; then - yarn install --frozen-lockfile - elif [ -e package-lock.json ]; then - npm ci - else - npm i - fi + - run: npm install + - run: npm run build --if-present + - run: npm run test:io From 5fa6660afd8f0b6180a2fdfee93a6fa69c20f329 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 2 Nov 2022 20:15:14 +0100 Subject: [PATCH 027/459] add answer options --- packages/io/USES_CASES.md | 2 +- packages/io/methods/addAnswer.js | 23 +++++++++++++++++------ packages/io/tests/methods.test.js | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/packages/io/USES_CASES.md b/packages/io/USES_CASES.md index 6a31b20..0853f73 100644 --- a/packages/io/USES_CASES.md +++ b/packages/io/USES_CASES.md @@ -11,7 +11,7 @@ - [x] addKeyword - [x] addAnswer - [x] addKeyword: Opciones -- [ ] addAnswer: Opciones +- [x] addAnswer: Opciones, media, buttons - [ ] Retornar SQL - [ ] Retornar JSON - [ ] Recibir JSON diff --git a/packages/io/methods/addAnswer.js b/packages/io/methods/addAnswer.js index b542bc6..99bc117 100644 --- a/packages/io/methods/addAnswer.js +++ b/packages/io/methods/addAnswer.js @@ -1,6 +1,17 @@ const { generateRef } = require('../utils') +/** + * + * @param answer string + * @param options {media:string, buttons:[]} + * @returns + */ const addAnswer = (inCtx) => (answer, options) => { + const getAnswerOptions = () => ({ + media: typeof options?.media === 'string' ? `${options?.media}` : null, + buttons: Array.isArray(options?.buttons) ? options.buttons : [], + }) + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx const ctxAnswer = () => { const ref = generateRef() @@ -8,7 +19,12 @@ const addAnswer = (inCtx) => (answer, options) => { * Se guarda en db */ - return { ...lastCtx, ref, answer } + const options = { + answer: getAnswerOptions(), + keyword: {}, + } + + return { ...lastCtx, ref, answer, options } } const ctx = ctxAnswer() @@ -21,8 +37,3 @@ const addAnswer = (inCtx) => (answer, options) => { } module.exports = { addAnswer } - -// await inout -// .addKeyword('hola') -// .addAnswer('Bienvenido a tu tienda 🥲') -// .addAnswer('escribe *catalogo* o *ofertas*') diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index 4b08337..51d7af9 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -53,4 +53,26 @@ test('Debere probar las poptions', () => { assert.is(MAIN_CTX.ctx.options.sensitive, false) }) +test('Debere probar las addAnswer', () => { + const MOCK_OPT = { + media: 'http://image.mock/mock.png', + buttons: [1], + } + const MAIN_CTX = addKeyword('hola').addAnswer('etc', MOCK_OPT) + + assert.is(MAIN_CTX.ctx.options.answer.media, MOCK_OPT.media) + assert.is(MAIN_CTX.ctx.options.answer.buttons.length, 1) +}) + +test('Debere probar error las addAnswer', () => { + const MOCK_OPT = { + media: { a: 1, b: [] }, + buttons: 'test', + } + const MAIN_CTX = addKeyword('hola').addAnswer('etc', MOCK_OPT) + + assert.is(MAIN_CTX.ctx.options.answer.media, null) + assert.is(MAIN_CTX.ctx.options.answer.buttons.length, 0) +}) + test.run() From 97ff1402f8a3a281508576c8f6ebb90e95ccc87b Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 2 Nov 2022 20:24:26 +0100 Subject: [PATCH 028/459] add c8 coverage --- .github/workflows/ci.yml | 3 ++- package.json | 3 ++- packages/io/index.js | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03734c6..5ccc4d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,4 +22,5 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm install - run: npm run build --if-present - - run: npm run test:io + - run: npm run test.unit + - run: npm run test.coverage diff --git a/package.json b/package.json index 77dd684..a083be7 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "cli": "node ./packages/cli/bin/cli.js", "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js", "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", - "test:io": "node ./node_modules/uvu/bin.js ./packages/io/tests" + "test.unit": "node ./node_modules/uvu/bin.js packages test", + "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit" }, "workspaces": [ "packages/cli", diff --git a/packages/io/index.js b/packages/io/index.js index f9ee91e..4e5daf2 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -1,2 +1,4 @@ const { addKeyword, addAnswer } = require('./methods') module.exports = { addKeyword, addAnswer } + + From 33797ce9de1c33f37cf54e8666c5b457c08b77bc Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 2 Nov 2022 20:26:56 +0100 Subject: [PATCH 029/459] add c8 coverage --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5ccc4d9..fa3a7b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Node.js CI +name: Test / Coverage on: push: From 0a9e14c460d87e70da56c53f92bc08daa39c0ca5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 2 Nov 2022 21:10:18 +0100 Subject: [PATCH 030/459] toJson --- packages/io/methods/addAnswer.js | 15 ++++++++++++--- packages/io/methods/addKeyword.js | 12 +++++++++--- packages/io/methods/index.js | 3 ++- packages/io/methods/toJson.js | 6 ++++++ packages/io/tests/methods.test.js | 16 ++++++++++++++++ 5 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 packages/io/methods/toJson.js diff --git a/packages/io/methods/addAnswer.js b/packages/io/methods/addAnswer.js index 99bc117..143c6fd 100644 --- a/packages/io/methods/addAnswer.js +++ b/packages/io/methods/addAnswer.js @@ -1,5 +1,5 @@ const { generateRef } = require('../utils') - +const { toJson } = require('./toJson') /** * * @param answer string @@ -14,7 +14,15 @@ const addAnswer = (inCtx) => (answer, options) => { const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx const ctxAnswer = () => { - const ref = generateRef() + const ref = `ans_${generateRef()}` + + const json = [].concat(inCtx.json).concat([ + { + ref, + keyword: lastCtx.ref, + answer, + }, + ]) /** * Se guarda en db */ @@ -24,7 +32,7 @@ const addAnswer = (inCtx) => (answer, options) => { keyword: {}, } - return { ...lastCtx, ref, answer, options } + return { ...lastCtx, ref, answer, json, options } } const ctx = ctxAnswer() @@ -33,6 +41,7 @@ const addAnswer = (inCtx) => (answer, options) => { ctx, ref: ctx.ref, addAnswer: addAnswer(ctx), + toJson: toJson(ctx), } } diff --git a/packages/io/methods/addKeyword.js b/packages/io/methods/addKeyword.js index 7fc88f1..2522538 100644 --- a/packages/io/methods/addKeyword.js +++ b/packages/io/methods/addKeyword.js @@ -10,7 +10,7 @@ const { addAnswer } = require('./addAnswer') * @param {*} message `string | string[]` * @param {*} options {sensitive:boolean} default */ -const addKeyword = (message, options) => { +const addKeyword = (keyword, options) => { /** * Esta funcion deberia parsear y validar las opciones * del keyword @@ -25,13 +25,19 @@ const addKeyword = (message, options) => { } const ctxAddKeyword = () => { - const ref = generateRef() + const ref = `key_${generateRef()}` const options = parseOptions() + const json = [ + { + ref, + keyword, + }, + ] /** * Se guarda en db */ - return { ref, keyword: message, options } + return { ref, keyword, options, json } } const ctx = ctxAddKeyword() diff --git a/packages/io/methods/index.js b/packages/io/methods/index.js index 278fbcc..8d53bf1 100644 --- a/packages/io/methods/index.js +++ b/packages/io/methods/index.js @@ -1,4 +1,5 @@ const { addAnswer } = require('./addAnswer') const { addKeyword } = require('./addKeyword') +const { toJson } = require('./toJson') -module.exports = { addAnswer, addKeyword } +module.exports = { addAnswer, addKeyword, toJson } diff --git a/packages/io/methods/toJson.js b/packages/io/methods/toJson.js new file mode 100644 index 0000000..121748e --- /dev/null +++ b/packages/io/methods/toJson.js @@ -0,0 +1,6 @@ +const toJson = (inCtx) => () => { + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx + return lastCtx.json +} + +module.exports = { toJson } diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index 51d7af9..5afb807 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -75,4 +75,20 @@ test('Debere probar error las addAnswer', () => { assert.is(MAIN_CTX.ctx.options.answer.buttons.length, 0) }) +test('Obtener toJson', () => { + const [ctxA, ctxB, ctxC] = addKeyword('hola') + .addAnswer('pera!') + .addAnswer('chao') + .toJson() + + assert.is(ctxA.keyword, 'hola') + assert.match(ctxA.ref, /^key_/) + + assert.is(ctxB.answer, 'pera!') + assert.match(ctxB.ref, /^ans_/) + + assert.is(ctxC.answer, 'chao') + assert.match(ctxC.ref, /^ans_/) +}) + test.run() From 0a9b1907d74c2eee5980376a0c51456da73b3bd7 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 5 Nov 2022 11:24:22 +0100 Subject: [PATCH 031/459] fix --- packages/io/USES_CASES.md | 2 +- packages/io/methods/addAnswer.js | 14 ++++++-------- packages/io/methods/addKeyword.js | 10 ++++++++-- packages/io/tests/methods.test.js | 29 +++++++++++++++++++++++++---- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/packages/io/USES_CASES.md b/packages/io/USES_CASES.md index 0853f73..ee86119 100644 --- a/packages/io/USES_CASES.md +++ b/packages/io/USES_CASES.md @@ -13,7 +13,7 @@ - [x] addKeyword: Opciones - [x] addAnswer: Opciones, media, buttons - [ ] Retornar SQL -- [ ] Retornar JSON +- [ ] Retornar JSON (options) - [ ] Recibir JSON ```js diff --git a/packages/io/methods/addAnswer.js b/packages/io/methods/addAnswer.js index 143c6fd..353a094 100644 --- a/packages/io/methods/addAnswer.js +++ b/packages/io/methods/addAnswer.js @@ -16,21 +16,19 @@ const addAnswer = (inCtx) => (answer, options) => { const ctxAnswer = () => { const ref = `ans_${generateRef()}` + const options = { + ...getAnswerOptions(), + keyword: {}, + } + const json = [].concat(inCtx.json).concat([ { ref, keyword: lastCtx.ref, answer, + options, }, ]) - /** - * Se guarda en db - */ - - const options = { - answer: getAnswerOptions(), - keyword: {}, - } return { ...lastCtx, ref, answer, json, options } } diff --git a/packages/io/methods/addKeyword.js b/packages/io/methods/addKeyword.js index 2522538..5eba51f 100644 --- a/packages/io/methods/addKeyword.js +++ b/packages/io/methods/addKeyword.js @@ -1,5 +1,6 @@ const { generateRef } = require('../utils') const { addAnswer } = require('./addAnswer') +const { toJson } = require('./toJson') /** * addKeyword: * Es necesario que genere id|hash @@ -8,7 +9,7 @@ const { addAnswer } = require('./addAnswer') /** * * @param {*} message `string | string[]` - * @param {*} options {sensitive:boolean} default + * @param {*} options {sensitive:boolean} default false */ const addKeyword = (keyword, options) => { /** @@ -18,7 +19,10 @@ const addKeyword = (keyword, options) => { */ const parseOptions = () => { const defaultProperties = { - sensitive: options?.sensitive ?? true, + sensitive: + typeof options?.sensitive === 'boolean' + ? options?.sensitive + : false, } return defaultProperties @@ -31,6 +35,7 @@ const addKeyword = (keyword, options) => { { ref, keyword, + options, }, ] /** @@ -46,6 +51,7 @@ const addKeyword = (keyword, options) => { ctx, ref: ctx.ref, addAnswer: addAnswer(ctx), + toJson: toJson(ctx), } } diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index 5afb807..b53f592 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -60,8 +60,8 @@ test('Debere probar las addAnswer', () => { } const MAIN_CTX = addKeyword('hola').addAnswer('etc', MOCK_OPT) - assert.is(MAIN_CTX.ctx.options.answer.media, MOCK_OPT.media) - assert.is(MAIN_CTX.ctx.options.answer.buttons.length, 1) + assert.is(MAIN_CTX.ctx.options.media, MOCK_OPT.media) + assert.is(MAIN_CTX.ctx.options.buttons.length, 1) }) test('Debere probar error las addAnswer', () => { @@ -71,8 +71,8 @@ test('Debere probar error las addAnswer', () => { } const MAIN_CTX = addKeyword('hola').addAnswer('etc', MOCK_OPT) - assert.is(MAIN_CTX.ctx.options.answer.media, null) - assert.is(MAIN_CTX.ctx.options.answer.buttons.length, 0) + assert.is(MAIN_CTX.ctx.options.media, null) + assert.is(MAIN_CTX.ctx.options.buttons.length, 0) }) test('Obtener toJson', () => { @@ -91,4 +91,25 @@ test('Obtener toJson', () => { assert.match(ctxC.ref, /^ans_/) }) +test('addKeyword toJson con sensitive', () => { + const [ctxA] = addKeyword('hola').toJson() + assert.is(ctxA.options.sensitive, false) + const [ctxB] = addKeyword('hola', { sensitive: true }).toJson() + assert.is(ctxB.options.sensitive, true) +}) + +test('addAnswer toJson con IMG', () => { + const [, ctxB, ctxC] = addKeyword('hola') + .addAnswer('bye!', { + media: 'http://mock.img/file-a.png', + }) + .addAnswer('otro!', { + media: 'http://mock.img/file-b.png', + }) + .toJson() + + assert.is(ctxB.options.media, 'http://mock.img/file-a.png') + assert.is(ctxC.options.media, 'http://mock.img/file-b.png') +}) + test.run() From 1c01e27a655b2eb47ecceae0c9dc8d604d7a8629 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 5 Nov 2022 11:32:08 +0100 Subject: [PATCH 032/459] add method --- packages/io/USES_CASES.md | 3 +-- packages/io/tests/methods.test.js | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/io/USES_CASES.md b/packages/io/USES_CASES.md index ee86119..f3d8729 100644 --- a/packages/io/USES_CASES.md +++ b/packages/io/USES_CASES.md @@ -12,8 +12,7 @@ - [x] addAnswer - [x] addKeyword: Opciones - [x] addAnswer: Opciones, media, buttons -- [ ] Retornar SQL -- [ ] Retornar JSON (options) +- [x] Retornar JSON (options) - [ ] Recibir JSON ```js diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index b53f592..a649d62 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -112,4 +112,19 @@ test('addAnswer toJson con IMG', () => { assert.is(ctxC.options.media, 'http://mock.img/file-b.png') }) +test('addAnswer toJson con BUTTONS', () => { + const [, ctxB] = addKeyword('hola') + .addAnswer('mis opciones!', { + buttons: [{ body: 'BTN_1' }, { body: 'BTN_2' }], + }) + .toJson() + + assert.is(ctxB.options.buttons.length, 2) + + const [btnA, btnB] = ctxB.options.buttons + + assert.is(btnA.body, 'BTN_1') + assert.is(btnB.body, 'BTN_2') +}) + test.run() From 2442b59a5fea95944119bfc48cdf2a38b9976ade Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 5 Nov 2022 11:44:43 +0100 Subject: [PATCH 033/459] example bot --- packages/EXAMPLE.md | 68 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 packages/EXAMPLE.md diff --git a/packages/EXAMPLE.md b/packages/EXAMPLE.md new file mode 100644 index 0000000..53e31ec --- /dev/null +++ b/packages/EXAMPLE.md @@ -0,0 +1,68 @@ +```js + +const { inout, provider, database } = require('@bot-whatsapp') + + +const adapterDB = database.instance( + { + engine:'mysql / pg / mongo / json (json-default)', + credentials:{....} + } +) + +const adapterProvider = provider.instance( + { + vendor:'twilio / web / meta', + credentials:{...} + } +) + +const adapterFlow = (() => { + const flowA = inout + .addKeyword('hola') + .addAnswer('Bienvenido a tu tienda 🥲') + .addAnswer('escribe *catalogo* o *ofertas*') + .toJson() + + const flowB = inout + .addKeyword(['catalogo', 'ofertas']) + .addAnswer('Este es nuestro CATALOGO mas reciente!', { + buttons: [{ body: 'Xiaomi' }, { body: 'Samsung' }], + }).toJson() + + const flowC = inout + .addKeyword('Xiaomi') + .addAnswer('Estos son nuestro productos XIAOMI ....', { + media: 'https://....', + }) + .addAnswer('Si quieres mas info escrbie *info*').toJson() + + const flowD = inout + .addKeyword('chao!') + .addAnswer('bye!') + .addAnswer('Recuerda que tengo esta promo', { + media: 'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', + }).toJson() + + const flowE = inout + .addKeyword('Modelo C', { sensitive: false }) + .addAnswer('100USD', { media: 'http//:...' }).toJson() + + return [...flowA, ...flowB, ...flowC, ...flowC, ...flowD, ...flowE] +}) + + +const bot = await provider.start( + { + database: adapterDB, + flow: adapterFlow, + provider:adapterProvider + } +) + + +bot.on('message | auth | auth_error ', (ctx) => { + .... +}) + +``` From d9492eeee6eae94dd1ff5fc5b52a14bb216f523c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 8 Nov 2022 15:46:38 +0100 Subject: [PATCH 034/459] add class --- __tests__/basic.test.js | 143 +++++++++++++++++++++++++++++++ lib/io/bundle.cjs | 83 +++++++++++++++--- package.json | 1 + packages/io/methods/addAnswer.js | 4 +- 4 files changed, 218 insertions(+), 13 deletions(-) create mode 100644 __tests__/basic.test.js diff --git a/__tests__/basic.test.js b/__tests__/basic.test.js new file mode 100644 index 0000000..650fe3f --- /dev/null +++ b/__tests__/basic.test.js @@ -0,0 +1,143 @@ +const { test } = require('uvu') +const assert = require('uvu/assert') +const { EventEmitter } = require('node:events') +const { addKeyword } = require('../packages/io') +const database = require('mime-db') + +const flow = addKeyword('hola') + .addAnswer('bienvenido') + .addAnswer('chao') + .toJson() + +const provider = { + sendMessage: (ctx) => { + console.log('Enviando...', ctx) + }, +} +//// DataBaseMock --------------------------------------------- +class DataBaseMock { + flow + provider + constructor(_flow, _provider) { + this.flow = _flow + this.provider = _provider + } + + continue = (message, ref = false) => { + let keyRef = ref + let ansRef = null + if (!keyRef) { + keyRef = this.flow.find((n) => n.keyword.includes(message)).ref + } + ansRef = this.flow.find((n) => n.keyword === keyRef) + + if (ansRef) { + this.provider.sendMessage(ansRef.answer) + this.continue(null, ansRef.ref) + } + } +} +//// ProviderMock --------------------------------------------- +class ProviderMock { + constructor() { + //twilio ... + } + + sendMessage = (ctx) => { + console.log('Enviando...', ctx) + } +} + +// const bot = { +// start: ({ flow, database, provider }) => { +// // console.log(database instanceof DataBaseMock) +// const flowCtx = database +// const botEmitter = new MyEmitter() + +// botEmitter.on('message', (ctx) => flowCtx.continue(ctx.body)) +// return botEmitter +// }, +// } + +//// BotMock --------------------------------------------- + +// test(`[Flow Basico]: Saludar y Responder`, () => { +// let messages = [] + +// const botBasic = new BotMock( +// flow, +// new DataBaseMock(flow, provider), +// provider +// ) + +// botBasic.on('message', (ctx) => messages.push(ctx.body)) + +// // Esta linea emula el llegar un mensaje! +// botBasic.emit('message', { body: 'hola' }) + +// assert.is(messages.join(','), 'hola') +// }) + +// test.run() + +/*** + * NEW + */ + +class BotClass extends EventEmitter { + /** + * Emitter para tener on and emit + */ + + flowClass + databaseClass + providerClass + constructor(_flow, _database, _provider) { + super() + this.flowClass = _flow + this.databaseClass = _database + this.providerClass = _provider + } + + continue = () => { + const r = this.flowClass.find() + if (r) { + this.provider.sendMessage(r.answer) + this.continue(null, r.ref) + console.log(r) + } + } +} + +class FlowClass { + flow + constructor(_flow) { + this.flow = _flow + } + + find = (message, ref = false) => { + let keyRef = ref + let ansRef = null + if (!keyRef) { + keyRef = this.flow.find((n) => n.keyword.includes(message)).ref + } + ansRef = this.flow.find((n) => n.keyword === keyRef) + if (ansRef) return ansRef + return false + } +} + +test(`[Flow Basico]: Saludar y Responder`, () => { + let messages = [] + + const botBasic = new BotClass(new FlowClass(flow), null, null) + + botBasic.on('message', (ctx) => messages.push(ctx.body)) + + // Esta linea emula el llegar un mensaje! + botBasic.emit('message', { body: 'hola' }) + + assert.is(messages.join(','), 'hola') +}) + +test.run() diff --git a/lib/io/bundle.cjs b/lib/io/bundle.cjs index 9685dec..3e97d32 100644 --- a/lib/io/bundle.cjs +++ b/lib/io/bundle.cjs @@ -14,17 +14,48 @@ const { generateRef: generateRef$2 } = hash; var utils = { generateRef: generateRef$2 }; -const { generateRef: generateRef$1 } = utils; +const toJson$3 = (inCtx) => () => { + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx; + return lastCtx.json +}; + +var toJson_1 = { toJson: toJson$3 }; + +const { generateRef: generateRef$1 } = utils; +const { toJson: toJson$2 } = toJson_1; +/** + * + * @param answer string + * @param options {media:string, buttons:[], capture:true default false} + * @returns + */ +const addAnswer$3 = (inCtx) => (answer, options) => { + const getAnswerOptions = () => ({ + media: typeof options?.media === 'string' ? `${options?.media}` : null, + buttons: Array.isArray(options?.buttons) ? options.buttons : [], + capture: + typeof options?.capture === 'boolean' ? options?.capture : false, + }); -const addAnswer$3 = (inCtx) => (message, options) => { const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx; const ctxAnswer = () => { - const ref = generateRef$1(); - /** - * Se guarda en db - */ + const ref = `ans_${generateRef$1()}`; - return { ...lastCtx, ref, message } + const options = { + ...getAnswerOptions(), + keyword: {}, + }; + + const json = [].concat(inCtx.json).concat([ + { + ref, + keyword: lastCtx.ref, + answer, + options, + }, + ]); + + return { ...lastCtx, ref, answer, json, options } }; const ctx = ctxAnswer(); @@ -33,6 +64,7 @@ const addAnswer$3 = (inCtx) => (message, options) => { ctx, ref: ctx.ref, addAnswer: addAnswer$3(ctx), + toJson: toJson$2(ctx), } }; @@ -40,6 +72,7 @@ var addAnswer_1 = { addAnswer: addAnswer$3 }; const { generateRef } = utils; const { addAnswer: addAnswer$2 } = addAnswer_1; +const { toJson: toJson$1 } = toJson_1; /** * addKeyword: * Es necesario que genere id|hash @@ -48,16 +81,40 @@ const { addAnswer: addAnswer$2 } = addAnswer_1; /** * * @param {*} message `string | string[]` - * @param {*} options {sensitivy:boolean} defaulta false + * @param {*} options {sensitive:boolean} default false */ -const addKeyword$2 = (message, options) => { +const addKeyword$2 = (keyword, options) => { + /** + * Esta funcion deberia parsear y validar las opciones + * del keyword + * @returns + */ + const parseOptions = () => { + const defaultProperties = { + sensitive: + typeof options?.sensitive === 'boolean' + ? options?.sensitive + : false, + }; + + return defaultProperties + }; + const ctxAddKeyword = () => { - const ref = generateRef(); + const ref = `key_${generateRef()}`; + const options = parseOptions(); + const json = [ + { + ref, + keyword, + options, + }, + ]; /** * Se guarda en db */ - return { ref, keyword: message } + return { ref, keyword, options, json } }; const ctx = ctxAddKeyword(); @@ -66,6 +123,7 @@ const addKeyword$2 = (message, options) => { ctx, ref: ctx.ref, addAnswer: addAnswer$2(ctx), + toJson: toJson$1(ctx), } }; @@ -73,8 +131,9 @@ var addKeyword_1 = { addKeyword: addKeyword$2 }; const { addAnswer: addAnswer$1 } = addAnswer_1; const { addKeyword: addKeyword$1 } = addKeyword_1; +const { toJson } = toJson_1; -var methods = { addAnswer: addAnswer$1, addKeyword: addKeyword$1 }; +var methods = { addAnswer: addAnswer$1, addKeyword: addKeyword$1, toJson }; const { addKeyword, addAnswer } = methods; var io = { addKeyword, addAnswer }; diff --git a/package.json b/package.json index a083be7..2d2ad2c 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js", "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", "test.unit": "node ./node_modules/uvu/bin.js packages test", + "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit" }, "workspaces": [ diff --git a/packages/io/methods/addAnswer.js b/packages/io/methods/addAnswer.js index 353a094..d383c3c 100644 --- a/packages/io/methods/addAnswer.js +++ b/packages/io/methods/addAnswer.js @@ -3,13 +3,15 @@ const { toJson } = require('./toJson') /** * * @param answer string - * @param options {media:string, buttons:[]} + * @param options {media:string, buttons:[], capture:true default false} * @returns */ const addAnswer = (inCtx) => (answer, options) => { const getAnswerOptions = () => ({ media: typeof options?.media === 'string' ? `${options?.media}` : null, buttons: Array.isArray(options?.buttons) ? options.buttons : [], + capture: + typeof options?.capture === 'boolean' ? options?.capture : false, }) const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx From 2114800b841739a4ba4eee6d9073bb31523b272d Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 8 Nov 2022 19:17:28 +0100 Subject: [PATCH 035/459] mock BotClass --- __tests__/basic.test.js | 46 +++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/__tests__/basic.test.js b/__tests__/basic.test.js index 650fe3f..16e3ac0 100644 --- a/__tests__/basic.test.js +++ b/__tests__/basic.test.js @@ -85,10 +85,6 @@ class ProviderMock { */ class BotClass extends EventEmitter { - /** - * Emitter para tener on and emit - */ - flowClass databaseClass providerClass @@ -97,18 +93,30 @@ class BotClass extends EventEmitter { this.flowClass = _flow this.databaseClass = _database this.providerClass = _provider + + this.on('message', (ctxMessage) => { + this.databaseClass.saveLog(ctxMessage) + this.continue(ctxMessage.body) + }) } - continue = () => { - const r = this.flowClass.find() - if (r) { - this.provider.sendMessage(r.answer) - this.continue(null, r.ref) - console.log(r) + continue = (message, ref = false) => { + const responde = this.flowClass.find(message, ref) + if (responde) { + this.providerClass.sendMessage(responde.answer) + this.continue(null, responde.ref) } } } +class ProviderClass { + constructor() {} + + sendMessage = (message) => { + console.log('Enviar...', message) + } +} + class FlowClass { flow constructor(_flow) { @@ -119,7 +127,8 @@ class FlowClass { let keyRef = ref let ansRef = null if (!keyRef) { - keyRef = this.flow.find((n) => n.keyword.includes(message)).ref + keyRef = + this.flow.find((n) => n.keyword.includes(message))?.ref || null } ansRef = this.flow.find((n) => n.keyword === keyRef) if (ansRef) return ansRef @@ -127,14 +136,25 @@ class FlowClass { } } +class DatabaseClass { + constructor() {} + + saveLog = (ctx) => { + console.log('Guardando...', ctx) + } +} + test(`[Flow Basico]: Saludar y Responder`, () => { let messages = [] - const botBasic = new BotClass(new FlowClass(flow), null, null) + const botBasic = new BotClass( + new FlowClass(flow), + new DatabaseClass(), + new ProviderClass() + ) botBasic.on('message', (ctx) => messages.push(ctx.body)) - // Esta linea emula el llegar un mensaje! botBasic.emit('message', { body: 'hola' }) assert.is(messages.join(','), 'hola') From 576092fc9668d464511aea0e26d488f18deabb0a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 8 Nov 2022 21:41:16 +0100 Subject: [PATCH 036/459] . --- .gitignore | 4 +- __tests__/basic.e2e.test.js | 79 +++++ __tests__/basic.test.js | 163 ---------- lib/cli/bundle.cjs | 328 -------------------- lib/io/bundle.cjs | 141 --------- package-lock.json | 6 + package.json | 19 +- packages/README.md | 45 +-- packages/cli/lib/bundle.cjs | 236 +++++++------- packages/cli/package.json | 9 - packages/cli/rollup-cli.config.js | 2 +- packages/core/classes/bot.class.js | 32 ++ packages/core/index.js | 2 + packages/core/package.json | 21 ++ packages/core/rollup-cli.config.js | 10 + packages/core/tests/bot.class.test.js | 32 ++ packages/index.js | 5 + packages/io/classes/flow.class.js | 20 ++ packages/io/index.js | 5 +- packages/io/package.json | 10 - packages/io/rollup-cli.config.js | 2 +- packages/provider/TODO.md | 7 +- packages/provider/classes/provider.class.js | 9 + packages/provider/index.js | 2 + packages/provider/rollup-cli.config.js | 10 + packages/rollup-cli.config.js | 10 + 26 files changed, 408 insertions(+), 801 deletions(-) create mode 100644 __tests__/basic.e2e.test.js delete mode 100644 __tests__/basic.test.js delete mode 100644 lib/cli/bundle.cjs delete mode 100644 lib/io/bundle.cjs create mode 100644 packages/core/classes/bot.class.js create mode 100644 packages/core/index.js create mode 100644 packages/core/package.json create mode 100644 packages/core/rollup-cli.config.js create mode 100644 packages/core/tests/bot.class.test.js create mode 100644 packages/index.js create mode 100644 packages/io/classes/flow.class.js create mode 100644 packages/provider/classes/provider.class.js create mode 100644 packages/provider/index.js create mode 100644 packages/provider/rollup-cli.config.js create mode 100644 packages/rollup-cli.config.js diff --git a/.gitignore b/.gitignore index 9c86698..f9ca563 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,6 @@ mediaSend/* packages/cli/config.json config.json coverage/ -*.lcov \ No newline at end of file +*.lcov +lib +tmp/ \ No newline at end of file diff --git a/__tests__/basic.e2e.test.js b/__tests__/basic.e2e.test.js new file mode 100644 index 0000000..b95cfac --- /dev/null +++ b/__tests__/basic.e2e.test.js @@ -0,0 +1,79 @@ +const { test } = require('uvu') +const assert = require('uvu/assert') +/** + * require('@bot-whatsapp') + */ +const { inout, provider, bot } = require('../lib/index.cjs') + +/** + * MockDB + */ +class DatabaseClass { + constructor() {} + + saveLog = (ctx) => { + return ctx + } +} + +const adapterDB = new DatabaseClass() + +const adapterFlow = new inout.instance( + (() => { + const flowA = inout + .addKeyword('hola') + .addAnswer('Bienvenido a tu tienda 🥲') + .addAnswer('escribe *catalogo* o *ofertas*') + .toJson() + + const flowB = inout + .addKeyword(['catalogo', 'ofertas']) + .addAnswer('Este es nuestro CATALOGO mas reciente!', { + buttons: [{ body: 'Xiaomi' }, { body: 'Samsung' }], + }) + .toJson() + + const flowC = inout + .addKeyword('Xiaomi') + .addAnswer('Estos son nuestro productos XIAOMI ....', { + media: 'https://....', + }) + .addAnswer('Si quieres mas info escrbie *info*') + .toJson() + + const flowD = inout + .addKeyword('chao!') + .addAnswer('bye!') + .addAnswer('Recuerda que tengo esta promo', { + media: 'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', + }) + .toJson() + + const flowE = inout + .addKeyword('Modelo C', { sensitive: false }) + .addAnswer('100USD', { media: 'http//:...' }) + .toJson() + + return [...flowA, ...flowB, ...flowC, ...flowC, ...flowD, ...flowE] + })() +) + +const adapterProvider = new provider.instance() + +test(`[Flow Basico]: BotClass`, () => { + let messages = [] + + const flows = adapterFlow + const databases = adapterDB + const providers = adapterProvider + + const botBasic = new bot.instance(flows, databases, providers) + + botBasic.on('message', (ctx) => messages.push(ctx.body)) + botBasic.emit('message', { body: 'hola' }) + botBasic.emit('message', { body: 'otro' }) + + assert.is(messages.join(','), ['hola', 'otro'].join(',')) +}) + +test.run() diff --git a/__tests__/basic.test.js b/__tests__/basic.test.js deleted file mode 100644 index 16e3ac0..0000000 --- a/__tests__/basic.test.js +++ /dev/null @@ -1,163 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') -const { EventEmitter } = require('node:events') -const { addKeyword } = require('../packages/io') -const database = require('mime-db') - -const flow = addKeyword('hola') - .addAnswer('bienvenido') - .addAnswer('chao') - .toJson() - -const provider = { - sendMessage: (ctx) => { - console.log('Enviando...', ctx) - }, -} -//// DataBaseMock --------------------------------------------- -class DataBaseMock { - flow - provider - constructor(_flow, _provider) { - this.flow = _flow - this.provider = _provider - } - - continue = (message, ref = false) => { - let keyRef = ref - let ansRef = null - if (!keyRef) { - keyRef = this.flow.find((n) => n.keyword.includes(message)).ref - } - ansRef = this.flow.find((n) => n.keyword === keyRef) - - if (ansRef) { - this.provider.sendMessage(ansRef.answer) - this.continue(null, ansRef.ref) - } - } -} -//// ProviderMock --------------------------------------------- -class ProviderMock { - constructor() { - //twilio ... - } - - sendMessage = (ctx) => { - console.log('Enviando...', ctx) - } -} - -// const bot = { -// start: ({ flow, database, provider }) => { -// // console.log(database instanceof DataBaseMock) -// const flowCtx = database -// const botEmitter = new MyEmitter() - -// botEmitter.on('message', (ctx) => flowCtx.continue(ctx.body)) -// return botEmitter -// }, -// } - -//// BotMock --------------------------------------------- - -// test(`[Flow Basico]: Saludar y Responder`, () => { -// let messages = [] - -// const botBasic = new BotMock( -// flow, -// new DataBaseMock(flow, provider), -// provider -// ) - -// botBasic.on('message', (ctx) => messages.push(ctx.body)) - -// // Esta linea emula el llegar un mensaje! -// botBasic.emit('message', { body: 'hola' }) - -// assert.is(messages.join(','), 'hola') -// }) - -// test.run() - -/*** - * NEW - */ - -class BotClass extends EventEmitter { - flowClass - databaseClass - providerClass - constructor(_flow, _database, _provider) { - super() - this.flowClass = _flow - this.databaseClass = _database - this.providerClass = _provider - - this.on('message', (ctxMessage) => { - this.databaseClass.saveLog(ctxMessage) - this.continue(ctxMessage.body) - }) - } - - continue = (message, ref = false) => { - const responde = this.flowClass.find(message, ref) - if (responde) { - this.providerClass.sendMessage(responde.answer) - this.continue(null, responde.ref) - } - } -} - -class ProviderClass { - constructor() {} - - sendMessage = (message) => { - console.log('Enviar...', message) - } -} - -class FlowClass { - flow - constructor(_flow) { - this.flow = _flow - } - - find = (message, ref = false) => { - let keyRef = ref - let ansRef = null - if (!keyRef) { - keyRef = - this.flow.find((n) => n.keyword.includes(message))?.ref || null - } - ansRef = this.flow.find((n) => n.keyword === keyRef) - if (ansRef) return ansRef - return false - } -} - -class DatabaseClass { - constructor() {} - - saveLog = (ctx) => { - console.log('Guardando...', ctx) - } -} - -test(`[Flow Basico]: Saludar y Responder`, () => { - let messages = [] - - const botBasic = new BotClass( - new FlowClass(flow), - new DatabaseClass(), - new ProviderClass() - ) - - botBasic.on('message', (ctx) => messages.push(ctx.body)) - - botBasic.emit('message', { body: 'hola' }) - - assert.is(messages.join(','), 'hola') -}) - -test.run() diff --git a/lib/cli/bundle.cjs b/lib/cli/bundle.cjs deleted file mode 100644 index b6bae37..0000000 --- a/lib/cli/bundle.cjs +++ /dev/null @@ -1,328 +0,0 @@ -'use strict'; - -var require$$0$3 = require('prompts'); -var require$$0 = require('kleur'); -var require$$0$1 = require('fs'); -var require$$1$1 = require('path'); -var require$$1 = require('cross-spawn'); -var require$$0$2 = require('rimraf'); - -const { red: red$2 } = require$$0; -const spawn = require$$1; -// const { detect } = require('detect-package-manager') -const PKG_OPTION = { - npm: 'install', - yarn: 'add', - pnpm: 'add', -}; - -const getPkgManage$1 = async () => { - // const pkg = await detect() - // return pkg - return 'npm' -}; - -const installDeps$1 = (pkgManager, packageList) => { - const errorMessage = `Ocurrio un error instalando ${packageList}`; - let childProcess = []; - - const installSingle = (pkgInstall) => () => { - new Promise((resolve) => { - try { - childProcess = spawn( - pkgManager, - [PKG_OPTION[pkgManager], pkgInstall], - { - stdio: 'inherit', - } - ); - - childProcess.on('error', (e) => { - console.error(e); - console.error(red$2(errorMessage)); - resolve(); - }); - - childProcess.on('close', (code) => { - if (code === 0) { - resolve(); - } else { - console.error(code); - console.error(red$2(errorMessage)); - } - }); - - resolve(); - } catch (e) { - console.error(e); - console.error(red$2(errorMessage)); - } - }); - }; - - if (typeof packageList === 'string') { - childProcess.push(installSingle(packageList)); - } else { - for (const pkg of packageList) { - childProcess.push(installSingle(pkg)); - } - } - - const runInstall = () => { - return Promise.all(childProcess.map((i) => i())) - }; - return { runInstall } -}; - -var tool = { getPkgManage: getPkgManage$1, installDeps: installDeps$1 }; - -const { readFileSync, existsSync } = require$$0$1; -const { join: join$2 } = require$$1$1; -const { installDeps, getPkgManage } = tool; - -const PATHS_DIR = [ - join$2(__dirname, 'pkg-to-update.json'), - join$2(__dirname, '..', 'pkg-to-update.json'), -]; - -const PKG_TO_UPDATE = () => { - const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a)); - const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8'); - const dataParse = JSON.parse(data); - const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`); - return pkg -}; - -const installAll$1 = async () => { - const pkg = await getPkgManage(); - installDeps(pkg, PKG_TO_UPDATE()).runInstall(); -}; - -var install = { installAll: installAll$1 }; - -const rimraf = require$$0$2; -const { yellow: yellow$2 } = require$$0; -const { join: join$1 } = require$$1$1; - -const PATH_WW = [ - join$1(process.cwd(), '.wwebjs_auth'), - join$1(process.cwd(), 'session.json'), -]; - -const cleanSession$1 = () => { - const queue = []; - for (const PATH of PATH_WW) { - console.log(yellow$2(`😬 Eliminando: ${PATH}`)); - queue.push(rimraf(PATH, () => Promise.resolve())); - } - return Promise.all(queue) -}; - -var clean = { cleanSession: cleanSession$1 }; - -const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0; - -const checkNodeVersion$1 = () => { - console.log(bgCyan('🚀 Revisando tu Node.js')); - const version = process.version; - const majorVersion = parseInt(version.replace('v', '').split('.').shift()); - if (majorVersion < 16) { - console.error( - red$1( - `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` - ) - ); - process.exit(1); - } - console.log(green(`Node.js combatible ${version}`)); - console.log(``); -}; - -const checkOs$1 = () => { - console.log(bgCyan('🙂 Revisando tu Sistema Operativo')); - const os = process.platform; - if (!os.includes('win32')) { - const messages = [ - `El sistema operativo actual (${os}) posiblemente requiera`, - `una confiuración adicional referente al puppeter`, - ``, - `Recuerda pasar por el WIKI`, - `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`, - ``, - ]; - - console.log(yellow$1(messages.join(' \n'))); - } - - console.log(``); -}; - -var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 }; - -const { writeFile } = require$$0$1.promises; -const { join } = require$$1$1; - -/** - * JSON_TEMPLATE = {[key:string]{...pros}} - */ -const JSON_TEMPLATE = { - provider: { - vendor: '', - }, - database: { - host: '', - password: '', - port: '', - username: '', - db: '', - }, - io: { - vendor: '', - }, -}; - -const PATH_CONFIG = join(process.cwd(), 'config.json'); - -const jsonConfig$1 = () => { - return writeFile( - PATH_CONFIG, - JSON.stringify(JSON_TEMPLATE, null, 2), - 'utf-8' - ) -}; - -var configuration = { jsonConfig: jsonConfig$1 }; - -const prompts = require$$0$3; -const { yellow, red } = require$$0; -const { installAll } = install; -const { cleanSession } = clean; -const { checkNodeVersion, checkOs } = check; -const { jsonConfig } = configuration; - -const startInteractive$1 = async () => { - const questions = [ - { - type: 'text', - name: 'dependencies', - message: - 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)', - }, - { - type: 'text', - name: 'cleanTmp', - message: 'Quieres limpiar la session del bot? (Y/n)', - }, - { - type: 'multiselect', - name: 'providerWs', - message: 'Proveedor de Whatsapp', - choices: [ - { title: 'whatsapp-web.js', value: 'whatsapp-web.js' }, - { title: 'API Oficial (Meta)', value: 'meta', disabled: true }, - { title: 'Twilio', value: 'twilio', disabled: true }, - ], - max: 1, - hint: 'Espacio para selecionar', - instructions: '↑/↓', - }, - { - type: 'multiselect', - name: 'providerDb', - message: 'Cual base de datos quieres usar', - choices: [ - { title: 'JSONFile', value: 'json' }, - { title: 'MySQL', value: 'mysql', disabled: true }, - { title: 'Mongo', value: 'mongo', disabled: true }, - ], - max: 1, - hint: 'Espacio para selecionar', - instructions: '↑/↓', - }, - ]; - - console.clear(); - checkNodeVersion(); - checkOs(); - const onCancel = () => { - console.log('Proceso cancelado!'); - return true - }; - const response = await prompts(questions, { onCancel }); - const { - dependencies = '', - cleanTmp = '', - providerDb = [], - providerWs = [], - } = response; - /** - * Question #1 - * @returns - */ - const installOrUdpateDep = async () => { - const answer = dependencies.toLowerCase() || 'n'; - if (answer.includes('n')) return true - - if (answer.includes('y')) { - await installAll(); - return true - } - }; - - /** - * Question #2 - * @returns - */ - const cleanAllSession = async () => { - const answer = cleanTmp.toLowerCase() || 'n'; - if (answer.includes('n')) return true - - if (answer.includes('y')) { - await cleanSession(); - return true - } - }; - - const vendorProvider = async () => { - if (!providerWs.length) { - console.log( - red( - `Debes de seleccionar una WS Provider. Tecla [Space] para seleccionar` - ) - ); - process.exit(1); - } - console.log(yellow(`'Deberia crer una carpeta en root/provider'`)); - return true - }; - - const dbProvider = async () => { - const answer = providerDb; - if (!providerDb.length) { - console.log( - red( - `Debes de seleccionar una DB Provider. Tecla [Space] para seleccionar` - ) - ); - process.exit(1); - } - if (answer === 'json') { - console.log('Deberia crer una carpeta en root/data'); - return 1 - } - }; - - await installOrUdpateDep(); - await cleanAllSession(); - await vendorProvider(); - await dbProvider(); - await jsonConfig(); -}; - -var interactive = { startInteractive: startInteractive$1 }; - -const { startInteractive } = interactive; -if (process.env.NODE_ENV === 'dev') startInteractive(); -var cli = { startInteractive }; - -module.exports = cli; diff --git a/lib/io/bundle.cjs b/lib/io/bundle.cjs deleted file mode 100644 index 3e97d32..0000000 --- a/lib/io/bundle.cjs +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; - -var require$$0 = require('crypto'); - -const crypto = require$$0; - -const generateRef$3 = () => { - return crypto.randomUUID() -}; - -var hash = { generateRef: generateRef$3 }; - -const { generateRef: generateRef$2 } = hash; - -var utils = { generateRef: generateRef$2 }; - -const toJson$3 = (inCtx) => () => { - const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx; - return lastCtx.json -}; - -var toJson_1 = { toJson: toJson$3 }; - -const { generateRef: generateRef$1 } = utils; -const { toJson: toJson$2 } = toJson_1; -/** - * - * @param answer string - * @param options {media:string, buttons:[], capture:true default false} - * @returns - */ -const addAnswer$3 = (inCtx) => (answer, options) => { - const getAnswerOptions = () => ({ - media: typeof options?.media === 'string' ? `${options?.media}` : null, - buttons: Array.isArray(options?.buttons) ? options.buttons : [], - capture: - typeof options?.capture === 'boolean' ? options?.capture : false, - }); - - const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx; - const ctxAnswer = () => { - const ref = `ans_${generateRef$1()}`; - - const options = { - ...getAnswerOptions(), - keyword: {}, - }; - - const json = [].concat(inCtx.json).concat([ - { - ref, - keyword: lastCtx.ref, - answer, - options, - }, - ]); - - return { ...lastCtx, ref, answer, json, options } - }; - - const ctx = ctxAnswer(); - - return { - ctx, - ref: ctx.ref, - addAnswer: addAnswer$3(ctx), - toJson: toJson$2(ctx), - } -}; - -var addAnswer_1 = { addAnswer: addAnswer$3 }; - -const { generateRef } = utils; -const { addAnswer: addAnswer$2 } = addAnswer_1; -const { toJson: toJson$1 } = toJson_1; -/** - * addKeyword: - * Es necesario que genere id|hash - */ - -/** - * - * @param {*} message `string | string[]` - * @param {*} options {sensitive:boolean} default false - */ -const addKeyword$2 = (keyword, options) => { - /** - * Esta funcion deberia parsear y validar las opciones - * del keyword - * @returns - */ - const parseOptions = () => { - const defaultProperties = { - sensitive: - typeof options?.sensitive === 'boolean' - ? options?.sensitive - : false, - }; - - return defaultProperties - }; - - const ctxAddKeyword = () => { - const ref = `key_${generateRef()}`; - const options = parseOptions(); - const json = [ - { - ref, - keyword, - options, - }, - ]; - /** - * Se guarda en db - */ - - return { ref, keyword, options, json } - }; - - const ctx = ctxAddKeyword(); - - return { - ctx, - ref: ctx.ref, - addAnswer: addAnswer$2(ctx), - toJson: toJson$1(ctx), - } -}; - -var addKeyword_1 = { addKeyword: addKeyword$2 }; - -const { addAnswer: addAnswer$1 } = addAnswer_1; -const { addKeyword: addKeyword$1 } = addKeyword_1; -const { toJson } = toJson_1; - -var methods = { addAnswer: addAnswer$1, addKeyword: addKeyword$1, toJson }; - -const { addKeyword, addAnswer } = methods; -var io = { addKeyword, addAnswer }; - -module.exports = io; diff --git a/package-lock.json b/package-lock.json index 45758ef..e1e8de9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2527,6 +2527,12 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "husky": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", + "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", diff --git a/package.json b/package.json index 2d2ad2c..ec65ab7 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,26 @@ "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "scripts": { - "cli": "node ./packages/cli/bin/cli.js", "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js", "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", + "core:rollup": "rollup ./packages/core/index.js --config ./packages/core/rollup-cli.config.js", + "provider:rollup": "rollup ./packages/provider/index.js --config ./packages/provider/rollup-cli.config.js", + "all:rollup": "rollup ./packages/index.js --config ./packages/rollup-cli.config.js", + "format:check": "prettier --check ./packages", + "format:write": "prettier --write ./packages", + "lint:check": "eslint ./packages", + "lint:fix": "eslint --fix ./packages", + "build": "npm run all:rollup", "test.unit": "node ./node_modules/uvu/bin.js packages test", "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", - "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit" + "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit", + "cli": "node ./packages/cli/bin/cli.js" + }, + "husky": { + "hooks": { + "pre-commit": "npm run format:check && npm run lint:fix", + "pre-push": "npm run test" + } }, "workspaces": [ "packages/cli", @@ -63,6 +77,7 @@ "detect-package-manager": "^2.0.1", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", + "husky": "^8.0.2", "kleur": "^4.1.5", "pm2": "^5.2.0", "prettier": "^2.7.1", diff --git a/packages/README.md b/packages/README.md index 6214268..533ac37 100644 --- a/packages/README.md +++ b/packages/README.md @@ -3,37 +3,42 @@ Se separaran responsabilidades del proyecto en diferentes packages, de esta manera se podra versionar y controlar los diferentes versionamientos y cambios con un mayor desacoplamiento. ##### Principales Funciones - El bot tiene tres funciones principales hasta este momento la cuales divideremos en paquetes para que puedan trabajarse y por separador sin acoplamiento. -__Package CLI__ (*Command Line Interface*) +El bot tiene tres funciones principales hasta este momento la cuales divideremos en paquetes para que puedan trabajarse y por separador sin acoplamiento. + +**Package CLI** (_Command Line Interface_) + > Sera basicamente un asistente via `cosola` el cual nos ayudara a realizar las instalacion de las dependencias necesarias y a crear un archivo de configuracion para tener un migrado rápido. -> La idea esque se pueda ejecutar un commando parecido a `npm create bot@leifermendez` o algo parecido y comienze a instalar todo. +> La idea esque se pueda ejecutar un commando parecido a `npm create bot@leifermendez` o algo parecido y comienze a instalar todo. 🤞 Funciones deseadas: -- Que actualice y corrija los problema de versionamientos más frecuetes -- Verificar la versión de NODE correcta -- Verificar OS para brindar mejor soporte de puppeter -- Limpiar sesion, borrar carpeta de sesion -- Seleccionar provider -- Poder usar un archivo .json con la configuración +- Que actualice y corrija los problema de versionamientos más frecuetes +- Verificar la versión de NODE correcta +- Verificar OS para brindar mejor soporte de puppeter +- Limpiar sesion, borrar carpeta de sesion +- Seleccionar provider +- Poder usar un archivo .json con la configuración +**Package Provider** -__Package Provider__ > Es parte clave del proyecto la idea es poder tener la opcion de incluir otro proveedor de mensajeria como la api oficial o api de twilio -- WhatsappWeb (*default*) -- Whatsapp API official -- Twilio +- WhatsappWeb (_default_) +- Whatsapp API official +- Twilio + +**Package Input/Output** -__Package Input/Output__ > Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos ---------- -__Comunidad__ +--- + +**Comunidad** + > Forma parte de este proyecto. -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) \ No newline at end of file +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) diff --git a/packages/cli/lib/bundle.cjs b/packages/cli/lib/bundle.cjs index 7d68589..95f7192 100644 --- a/packages/cli/lib/bundle.cjs +++ b/packages/cli/lib/bundle.cjs @@ -1,30 +1,30 @@ -'use strict'; +'use strict' -var require$$0$3 = require('prompts'); -var require$$0 = require('kleur'); -var require$$0$1 = require('fs'); -var require$$1$1 = require('path'); -var require$$1 = require('cross-spawn'); -var require$$2 = require('detect-package-manager'); -var require$$0$2 = require('rimraf'); +var require$$0$3 = require('prompts') +var require$$0 = require('kleur') +var require$$0$1 = require('fs') +var require$$1$1 = require('path') +var require$$1 = require('cross-spawn') +var require$$2 = require('detect-package-manager') +var require$$0$2 = require('rimraf') -const { red: red$2 } = require$$0; -const spawn = require$$1; -const { detect } = require$$2; +const { red: red$2 } = require$$0 +const spawn = require$$1 +const { detect } = require$$2 const PKG_OPTION = { npm: 'install', yarn: 'add', pnpm: 'add', -}; +} const getPkgManage = async () => { - const pkg = await detect(); + const pkg = await detect() return pkg -}; +} const installDeps$1 = (pkgManager, packageList) => { - const errorMessage = `Ocurrio un error instalando ${packageList}`; - let childProcess = []; + const errorMessage = `Ocurrio un error instalando ${packageList}` + let childProcess = [] const installSingle = (pkgInstall) => () => { new Promise((resolve) => { @@ -35,112 +35,112 @@ const installDeps$1 = (pkgManager, packageList) => { { stdio: 'inherit', } - ); + ) childProcess.on('error', (e) => { - console.error(e); - console.error(red$2(errorMessage)); - resolve(); - }); + console.error(e) + console.error(red$2(errorMessage)) + resolve() + }) childProcess.on('close', (code) => { if (code === 0) { - resolve(); + resolve() } else { - console.error(code); - console.error(red$2(errorMessage)); + console.error(code) + console.error(red$2(errorMessage)) } - }); + }) - resolve(); + resolve() } catch (e) { - console.error(e); - console.error(red$2(errorMessage)); + console.error(e) + console.error(red$2(errorMessage)) } - }); - }; + }) + } if (typeof packageList === 'string') { - childProcess.push(installSingle(packageList)); + childProcess.push(installSingle(packageList)) } else { for (const pkg of packageList) { - childProcess.push(installSingle(pkg)); + childProcess.push(installSingle(pkg)) } } const runInstall = () => { return Promise.all(childProcess.map((i) => i())) - }; + } return { runInstall } -}; +} -var tool = { getPkgManage, installDeps: installDeps$1 }; +var tool = { getPkgManage, installDeps: installDeps$1 } -const { readFileSync, existsSync } = require$$0$1; -const { join: join$2 } = require$$1$1; -const { installDeps } = tool; +const { readFileSync, existsSync } = require$$0$1 +const { join: join$2 } = require$$1$1 +const { installDeps } = tool const PATHS_DIR = [ join$2(__dirname, 'pkg-to-update.json'), join$2(__dirname, '..', 'pkg-to-update.json'), -]; +] const PKG_TO_UPDATE = () => { - const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a)); - const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8'); - const dataParse = JSON.parse(data); - const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`); + const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a)) + const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8') + const dataParse = JSON.parse(data) + const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`) return pkg -}; +} const installAll$1 = async () => { // const pkg = await getPkgManage() - installDeps('npm', PKG_TO_UPDATE()).runInstall(); -}; + installDeps('npm', PKG_TO_UPDATE()).runInstall() +} -var install = { installAll: installAll$1 }; +var install = { installAll: installAll$1 } -const rimraf = require$$0$2; -const { yellow: yellow$2 } = require$$0; -const { join: join$1 } = require$$1$1; +const rimraf = require$$0$2 +const { yellow: yellow$2 } = require$$0 +const { join: join$1 } = require$$1$1 const PATH_WW = [ join$1(process.cwd(), '.wwebjs_auth'), join$1(process.cwd(), 'session.json'), -]; +] const cleanSession$1 = () => { - const queue = []; + const queue = [] for (const PATH of PATH_WW) { - console.log(yellow$2(`😬 Eliminando: ${PATH}`)); - queue.push(rimraf(PATH, () => Promise.resolve())); + console.log(yellow$2(`😬 Eliminando: ${PATH}`)) + queue.push(rimraf(PATH, () => Promise.resolve())) } return Promise.all(queue) -}; +} -var clean = { cleanSession: cleanSession$1 }; +var clean = { cleanSession: cleanSession$1 } -const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0; +const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0 const checkNodeVersion$1 = () => { - console.log(bgCyan('🚀 Revisando tu Node.js')); - const version = process.version; - const majorVersion = parseInt(version.replace('v', '').split('.').shift()); + console.log(bgCyan('🚀 Revisando tu Node.js')) + const version = process.version + const majorVersion = parseInt(version.replace('v', '').split('.').shift()) if (majorVersion < 16) { console.error( red$1( `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` ) - ); - process.exit(1); + ) + process.exit(1) } - console.log(green(`Node.js combatible ${version}`)); - console.log(``); -}; + console.log(green(`Node.js combatible ${version}`)) + console.log(``) +} const checkOs$1 = () => { - console.log(bgCyan('🙂 Revisando tu Sistema Operativo')); - const os = process.platform; + console.log(bgCyan('🙂 Revisando tu Sistema Operativo')) + const os = process.platform if (!os.includes('win32')) { const messages = [ `El sistema operativo actual (${os}) posiblemente requiera`, @@ -149,18 +149,18 @@ const checkOs$1 = () => { `Recuerda pasar por el WIKI`, `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`, ``, - ]; + ] - console.log(yellow$1(messages.join(' \n'))); + console.log(yellow$1(messages.join(' \n'))) } - console.log(``); -}; + console.log(``) +} -var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 }; +var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 } -const { writeFile } = require$$0$1.promises; -const { join } = require$$1$1; +const { writeFile } = require$$0$1.promises +const { join } = require$$1$1 /** * JSON_TEMPLATE = {[key:string]{...pros}} @@ -179,9 +179,9 @@ const JSON_TEMPLATE = { io: { vendor: '', }, -}; +} -const PATH_CONFIG = join(process.cwd(), 'config.json'); +const PATH_CONFIG = join(process.cwd(), 'config.json') const jsonConfig$1 = () => { return writeFile( @@ -189,16 +189,16 @@ const jsonConfig$1 = () => { JSON.stringify(JSON_TEMPLATE, null, 2), 'utf-8' ) -}; +} -var configuration = { jsonConfig: jsonConfig$1 }; +var configuration = { jsonConfig: jsonConfig$1 } -const prompts = require$$0$3; -const { yellow, red } = require$$0; -const { installAll } = install; -const { cleanSession } = clean; -const { checkNodeVersion, checkOs } = check; -const { jsonConfig } = configuration; +const prompts = require$$0$3 +const { yellow, red } = require$$0 +const { installAll } = install +const { cleanSession } = clean +const { checkNodeVersion, checkOs } = check +const { jsonConfig } = configuration const startInteractive$1 = async () => { const questions = [ @@ -239,49 +239,49 @@ const startInteractive$1 = async () => { hint: 'Espacio para selecionar', instructions: '↑/↓', }, - ]; + ] - console.clear(); - checkNodeVersion(); - checkOs(); + console.clear() + checkNodeVersion() + checkOs() const onCancel = () => { - console.log('Proceso cancelado!'); + console.log('Proceso cancelado!') return true - }; - const response = await prompts(questions, { onCancel }); + } + const response = await prompts(questions, { onCancel }) const { dependencies = '', cleanTmp = '', providerDb = [], providerWs = [], - } = response; + } = response /** * Question #1 * @returns */ const installOrUdpateDep = async () => { - const answer = dependencies.toLowerCase() || 'n'; + const answer = dependencies.toLowerCase() || 'n' if (answer.includes('n')) return true if (answer.includes('y')) { - await installAll(); + await installAll() return true } - }; + } /** * Question #2 * @returns */ const cleanAllSession = async () => { - const answer = cleanTmp.toLowerCase() || 'n'; + const answer = cleanTmp.toLowerCase() || 'n' if (answer.includes('n')) return true if (answer.includes('y')) { - await cleanSession(); + await cleanSession() return true } - }; + } const vendorProvider = async () => { if (!providerWs.length) { @@ -289,40 +289,40 @@ const startInteractive$1 = async () => { red( `Debes de seleccionar una WS Provider. Tecla [Space] para seleccionar` ) - ); - process.exit(1); + ) + process.exit(1) } - console.log(yellow(`'Deberia crer una carpeta en root/provider'`)); + console.log(yellow(`'Deberia crer una carpeta en root/provider'`)) return true - }; + } const dbProvider = async () => { - const answer = providerDb; + const answer = providerDb if (!providerDb.length) { console.log( red( `Debes de seleccionar una DB Provider. Tecla [Space] para seleccionar` ) - ); - process.exit(1); + ) + process.exit(1) } if (answer === 'json') { - console.log('Deberia crer una carpeta en root/data'); + console.log('Deberia crer una carpeta en root/data') return 1 } - }; + } - await installOrUdpateDep(); - await cleanAllSession(); - await vendorProvider(); - await dbProvider(); - await jsonConfig(); -}; + await installOrUdpateDep() + await cleanAllSession() + await vendorProvider() + await dbProvider() + await jsonConfig() +} -var interactive = { startInteractive: startInteractive$1 }; +var interactive = { startInteractive: startInteractive$1 } -const { startInteractive } = interactive; -if (process.env.NODE_ENV === 'dev') startInteractive(); -var cli = { startInteractive }; +const { startInteractive } = interactive +if (process.env.NODE_ENV === 'dev') startInteractive() +var cli = { startInteractive } -module.exports = cli; +module.exports = cli diff --git a/packages/cli/package.json b/packages/cli/package.json index 6c1cb19..6c0a809 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -4,15 +4,6 @@ "description": "", "main": "index.js", "private": true, - "scripts": { - "cli:dev": "cross-env NODE_ENV=dev node ./index.js", - "cli:rollup": "rollup index.js --config ./rollup-cli.config.js", - "format:check": "prettier --check .", - "format:write": "prettier --write .", - "lint:check": "eslint .", - "lint:fix": "eslint --fix .", - "build:cli": "npm run format:write && npm run lint:fix && npm run cli:rollup" - }, "keywords": [], "author": "", "license": "ISC" diff --git a/packages/cli/rollup-cli.config.js b/packages/cli/rollup-cli.config.js index e030bb2..02f9e6b 100644 --- a/packages/cli/rollup-cli.config.js +++ b/packages/cli/rollup-cli.config.js @@ -3,7 +3,7 @@ const commonjs = require('@rollup/plugin-commonjs') module.exports = { input: 'index.js', output: { - file: 'lib/cli/bundle.cjs', + file: 'lib/cli/bundle.cli.cjs', format: 'cjs', }, plugins: [commonjs()], diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js new file mode 100644 index 0000000..cee96b1 --- /dev/null +++ b/packages/core/classes/bot.class.js @@ -0,0 +1,32 @@ +const { EventEmitter } = require('node:events') + +/** + * Clase principal del BOT + */ +class BotClass extends EventEmitter { + flowClass + databaseClass + providerClass + constructor(_flow, _database, _provider) { + super() + this.flowClass = _flow + this.databaseClass = _database + this.providerClass = _provider + + this.on('message', (ctxMessage) => this.handleOnMessage(ctxMessage)) + } + + handleOnMessage = (ctxMessage) => { + this.databaseClass.saveLog(ctxMessage) + this.continue(ctxMessage.body) + } + + continue = (message, ref = false) => { + const responde = this.flowClass.find(message, ref) + if (responde) { + this.providerClass.sendMessage(responde.answer) + this.continue(null, responde.ref) + } + } +} +module.exports = BotClass diff --git a/packages/core/index.js b/packages/core/index.js new file mode 100644 index 0000000..80a28cc --- /dev/null +++ b/packages/core/index.js @@ -0,0 +1,2 @@ +const BotClass = require('./classes/bot.class') +module.exports = { instance: BotClass } diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 0000000..77e12a7 --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,21 @@ +{ + "name": "bot-core", + "version": "0.0.1", + "description": "", + "main": "index.js", + "private": true, + "scripts": { + "core:dev": "node ./index.js", + "core:rollup": "node ../../node_modules/.bin/rollup index.js --config ./rollup-cli.config.js", + "format:check": "prettier --check .", + "format:write": "prettier --write .", + "lint:check": "eslint .", + "lint:fix": "eslint --fix .", + "test:core": "node ../../node_modules/uvu/bin.js tests", + "build:core": "npm run format:write && npm run lint:fix && npm run io:rollup" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": {} +} diff --git a/packages/core/rollup-cli.config.js b/packages/core/rollup-cli.config.js new file mode 100644 index 0000000..9069686 --- /dev/null +++ b/packages/core/rollup-cli.config.js @@ -0,0 +1,10 @@ +const commonjs = require('@rollup/plugin-commonjs') + +module.exports = { + input: 'index.js', + output: { + file: 'lib/core/bundle.core.cjs', + format: 'cjs', + }, + plugins: [commonjs()], +} diff --git a/packages/core/tests/bot.class.test.js b/packages/core/tests/bot.class.test.js new file mode 100644 index 0000000..352dc24 --- /dev/null +++ b/packages/core/tests/bot.class.test.js @@ -0,0 +1,32 @@ +const { test } = require('uvu') +const assert = require('uvu/assert') +const BotClass = require('../classes/bot.class') + +class MockDB { + saveLog = () => {} +} + +class MockProvider { + sendMessage = () => {} +} + +class MockFlow { + find = () => {} +} + +test(`BotClass emit ping`, () => { + let messages = [] + + const botBasic = new BotClass( + new MockFlow(), + new MockDB(), + new MockProvider() + ) + + botBasic.on('message', (ctx) => messages.push(ctx)) + botBasic.emit('message', 'ping') + + assert.is(messages.join(''), 'ping') +}) + +test.run() diff --git a/packages/index.js b/packages/index.js new file mode 100644 index 0000000..bcd72f3 --- /dev/null +++ b/packages/index.js @@ -0,0 +1,5 @@ +const inout = require('./io') +const provider = require('./provider') +const bot = require('./core') + +module.exports = { inout, provider, bot } diff --git a/packages/io/classes/flow.class.js b/packages/io/classes/flow.class.js new file mode 100644 index 0000000..fa0a173 --- /dev/null +++ b/packages/io/classes/flow.class.js @@ -0,0 +1,20 @@ +class FlowClass { + flow + constructor(_flow) { + this.flow = _flow + } + + find = (message, ref = false) => { + let keyRef = ref + let ansRef = null + if (!keyRef) { + keyRef = + this.flow.find((n) => n.keyword.includes(message))?.ref || null + } + ansRef = this.flow.find((n) => n.keyword === keyRef) + if (ansRef) return ansRef + return false + } +} + +module.exports = FlowClass diff --git a/packages/io/index.js b/packages/io/index.js index 4e5daf2..0dd0d22 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -1,4 +1,3 @@ const { addKeyword, addAnswer } = require('./methods') -module.exports = { addKeyword, addAnswer } - - +const FlowClass = require('./classes/flow.class') +module.exports = { addKeyword, addAnswer, instance: FlowClass } diff --git a/packages/io/package.json b/packages/io/package.json index 5848618..f4f865a 100644 --- a/packages/io/package.json +++ b/packages/io/package.json @@ -4,16 +4,6 @@ "description": "", "main": "index.js", "private": true, - "scripts": { - "io:dev": "node ./index.js", - "io:rollup": "node ../../node_modules/.bin/rollup index.js --config ./rollup-cli.config.js", - "format:check": "prettier --check .", - "format:write": "prettier --write .", - "lint:check": "eslint .", - "lint:fix": "eslint --fix .", - "test:io": "node ../../node_modules/uvu/bin.js tests", - "build:io": "npm run format:write && npm run lint:fix && npm run io:rollup" - }, "keywords": [], "author": "", "license": "ISC", diff --git a/packages/io/rollup-cli.config.js b/packages/io/rollup-cli.config.js index b2e6771..355242c 100644 --- a/packages/io/rollup-cli.config.js +++ b/packages/io/rollup-cli.config.js @@ -3,7 +3,7 @@ const commonjs = require('@rollup/plugin-commonjs') module.exports = { input: 'index.js', output: { - file: 'lib/io/bundle.cjs', + file: 'lib/io/bundle.io.cjs', format: 'cjs', }, plugins: [commonjs()], diff --git a/packages/provider/TODO.md b/packages/provider/TODO.md index 4efe110..1e2b948 100644 --- a/packages/provider/TODO.md +++ b/packages/provider/TODO.md @@ -6,9 +6,8 @@ const { inout, provider, database } = require('@bot-whatsapp') provider.start() provider.close() - ``` -- [ ] whatsapp-web.js _verificar update_ -- [ ] Meta _verificar tokens_ -- [ ] Twilio _verificar tokens_ \ No newline at end of file +- [ ] whatsapp-web.js _verificar update_ +- [ ] Meta _verificar tokens_ +- [ ] Twilio _verificar tokens_ diff --git a/packages/provider/classes/provider.class.js b/packages/provider/classes/provider.class.js new file mode 100644 index 0000000..5f58b79 --- /dev/null +++ b/packages/provider/classes/provider.class.js @@ -0,0 +1,9 @@ +class ProviderClass { + constructor() {} + + sendMessage = (message) => { + return message + } +} + +module.exports = ProviderClass diff --git a/packages/provider/index.js b/packages/provider/index.js new file mode 100644 index 0000000..e32e127 --- /dev/null +++ b/packages/provider/index.js @@ -0,0 +1,2 @@ +const ProviderClass = require('./classes/provider.class') +module.exports = { instance: ProviderClass } diff --git a/packages/provider/rollup-cli.config.js b/packages/provider/rollup-cli.config.js new file mode 100644 index 0000000..fa77e06 --- /dev/null +++ b/packages/provider/rollup-cli.config.js @@ -0,0 +1,10 @@ +const commonjs = require('@rollup/plugin-commonjs') + +module.exports = { + input: 'index.js', + output: { + file: 'lib/provider/bundle.provider.cjs', + format: 'cjs', + }, + plugins: [commonjs()], +} diff --git a/packages/rollup-cli.config.js b/packages/rollup-cli.config.js new file mode 100644 index 0000000..10aeedd --- /dev/null +++ b/packages/rollup-cli.config.js @@ -0,0 +1,10 @@ +const commonjs = require('@rollup/plugin-commonjs') + +module.exports = { + input: 'index.js', + output: { + file: 'lib/index.cjs', + format: 'cjs', + }, + plugins: [commonjs()], +} From 30e7b220cda23e43bcdecd3a61f9705ec1ab7325 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 8 Nov 2022 21:46:41 +0100 Subject: [PATCH 037/459] update --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index ec65ab7..3247115 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "test.unit": "node ./node_modules/uvu/bin.js packages test", "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit", + "test": "npm run test.unit && npm run test.e2e", "cli": "node ./packages/cli/bin/cli.js" }, "husky": { From 24484015b30eecadd8358d2c057c5426a0c2244f Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 9 Nov 2022 11:27:01 +0100 Subject: [PATCH 038/459] before lerna --- .env.example | 13 --- .fleet/settings.json | 0 .gitignore | 4 +- README.md | 159 ++------------------------ adapter/diaglogflow.js | 77 ------------- adapter/index.js | 90 --------------- adapter/jsonDb.js | 20 ---- adapter/mysql.js | 74 ------------- app.js | 172 ----------------------------- app.json | 35 ------ chatbot-account.json | 13 --- chats/.gitkeep | 0 config/mysql.js | 18 --- controllers/connection.js | 14 --- controllers/flows.js | 28 ----- controllers/handle.js | 83 -------------- controllers/save.js | 18 --- controllers/send.js | 113 ------------------- controllers/socket.js | 16 --- controllers/web.js | 17 --- flow/initial.json | 93 ---------------- flow/response.json | 148 ------------------------- media/.gitkeep | 0 mediaSend/.gitkeep | 0 mediaSend/PTT-20220223-WA0000.opus | Bin 12001 -> 0 bytes mediaSend/nota-de-voz.mp3 | Bin 676725 -> 0 bytes middleware/client.js | 21 ---- middleware/db.js | 0 package.json | 14 +-- packages/cli/package.json | 2 +- packages/core/package.json | 2 +- packages/io/package.json | 2 +- packages/provider/package.json | 11 ++ routes/api.js | 7 -- routes/web.js | 7 -- sql-bot.sql | 79 ------------- 36 files changed, 27 insertions(+), 1323 deletions(-) delete mode 100644 .env.example delete mode 100644 .fleet/settings.json delete mode 100644 adapter/diaglogflow.js delete mode 100644 adapter/index.js delete mode 100644 adapter/jsonDb.js delete mode 100644 adapter/mysql.js delete mode 100644 app.js delete mode 100644 app.json delete mode 100644 chatbot-account.json delete mode 100644 chats/.gitkeep delete mode 100644 config/mysql.js delete mode 100644 controllers/connection.js delete mode 100644 controllers/flows.js delete mode 100644 controllers/handle.js delete mode 100644 controllers/save.js delete mode 100644 controllers/send.js delete mode 100644 controllers/socket.js delete mode 100644 controllers/web.js delete mode 100644 flow/initial.json delete mode 100644 flow/response.json delete mode 100644 media/.gitkeep delete mode 100644 mediaSend/.gitkeep delete mode 100644 mediaSend/PTT-20220223-WA0000.opus delete mode 100644 mediaSend/nota-de-voz.mp3 delete mode 100644 middleware/client.js delete mode 100644 middleware/db.js create mode 100644 packages/provider/package.json delete mode 100644 routes/api.js delete mode 100644 routes/web.js delete mode 100644 sql-bot.sql diff --git a/.env.example b/.env.example deleted file mode 100644 index beb1bb7..0000000 --- a/.env.example +++ /dev/null @@ -1,13 +0,0 @@ -######DATABASE: none, mysql, dialogflow - -DEFAULT_MESSAGE=true -SAVE_MEDIA=true -PORT=3000 -DATABASE=none -LANGUAGE=es -SQL_HOST= -SQL_USER= -SQL_PASS= -SQL_DATABASE= -KEEP_DIALOG_FLOW=false -MULTI_DEVICE=true \ No newline at end of file diff --git a/.fleet/settings.json b/.fleet/settings.json deleted file mode 100644 index e69de29..0000000 diff --git a/.gitignore b/.gitignore index f9ca563..079bd6a 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,6 @@ config.json coverage/ *.lcov lib -tmp/ \ No newline at end of file +tmp/ +.fleet/ +example-app/ \ No newline at end of file diff --git a/README.md b/README.md index 455d71e..d6dea6d 100644 --- a/README.md +++ b/README.md @@ -1,155 +1,10 @@ -## Chatbot Whatsapp (OpenSource) -#### Actualizado Abril 2022 +Estamos mejorando esto para llevarlo a un siguiente nivel! -El siguiente proyecto se realizó con fines educativos para el canal de [Youtube (Leifer Mendez)](https://www.youtube.com/channel/UCgrIGp5QAnC0J8LfNJxDRDw?sub_confirmation=1) donde aprendemos a crear y implementar un chatbot increíble usando [node.js](https://codigoencasa.com/tag/nodejs/) además le agregamos inteligencia artificial gracias al servicio de __dialogflow__. +**Comunidad** -[![Video](https://i.giphy.com/media/OBDi3CXC83WkNeLEZP/giphy.webp)](https://youtu.be/5lEMCeWEJ8o) +> Forma parte de este proyecto. -### ATENCION 🔴 -> 💥💥 Si te aparece el Error Multi-device es porque tienes la cuenta de whatsapp afiliada al modo "BETA de Multi dispositivo" por el momento no se tiene soporte para esas personas si tu quieres hacer uso de este __BOT__ debes de salir del modo BETA y intentarlo de la manera tradicional - -> El core de whatsapp esta en constante actualizaciones por lo cual siempre revisa la ultima fecha de la actualizacion -> [VER](https://github.com/leifermendez/bot-whatsapp/commits/main) - -### Busco colaboradores ⭐ -Hola amigos me gusta mucho este proyecto pero por cuestiones de tiempo se me dificulta mantener las actualizaciones si alguno quieres participar en el proyecto escribeme a leifer.contacto@gmail.com - -#### Acceso rápido -> Si tienes una cuenta en __heroku__ puedes desplegar este proyecto con (1 click) - -[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/leifermendez/bot-whatsapp) - -> Comprarme un cafe! - -[![Comprar](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/leifermendez) - -#### Actualización - -| Feature | Status | -| ------------- | ------------- | -| Dialogflow | ✅ | -| MySQL | ✅ | -| JSON File | ✅ | -| QR Scan (route) | ✅ | -| Easy deploy heroku | ✅ | -| Buttons | ✅ℹ️ (No funciona en multi-device)| -| Send Voice Note | ✅ | -| Add support ubuntu/linux | ✅ | - -## Requisitos -- node v14 o superior -- VSCode (Editor de codigo) [Descargar](https://code.visualstudio.com/download) -- MySql (opcional) solo aplica si vas a usar el modo 'mysql' [sql-bot.sql migración](https://github.com/leifermendez/bot-whatsapp/blob/main/sql-bot.sql) -- Dialogflow (opcional) solo aplica si vas a usar el modo 'dialogflow' - -### (Nuevo) Botones - -[![btn](https://i.imgur.com/W7oYlSu.png)](https://youtu.be/5lEMCeWEJ8o) - -> Implementar los botones solo necesitas hacer uso del metodo __sendMessageButton__ que se encuentra dentro `./controllers/send` dejo un ejemplo de como usarlo. -[Ver implementación](https://github.com/leifermendez/bot-whatsapp/blob/main/app.js#L123) - -``` javascript -const { sendMessageButton } = require('./controllers/send') - -await sendMessageButton( - { - "title":"¿Que te interesa ver?", - "message":"Recuerda todo este contenido es gratis y estaria genial que me siguas!", - "footer":"Gracias", - "buttons":[ - {"body":"😎 Cursos"}, - {"body":"👉 Youtube"}, - {"body":"😁 Telegram"} - ] - } -) - -``` - -## Notas de Voz -[![voice note](https://i.imgur.com/zq6xYDp.png)](https://i.imgur.com/zq6xYDp.png) - -> Se pueden enviar notas de voz con formato nativo para que no se vea como reenviado. En este ejemplo enviare el archivo __PTT-20220223-WA0000.opus__ que se encuentra dentro de la carpeta de __/mediaSend__ - -``` javascript -const { sendMediaVoiceNote } = require('./controllers/send') - -await sendMediaVoiceNote(client, from, 'PTT-20220223-WA0000.opus') - -``` - -## Instruciones -__Descargar o Clonar repositorio__ -![](https://i.imgur.com/dSpUbFz.png) - -__Usas ¿Ubuntu / Linux?__ -> Asegurate de instalar los siguientes paquetes -``` -sudo apt-get install -y libgbm-dev -sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget -``` - -__Instalar dependencias (npm install)__ -> Ubicate en le directorio que descargaste y via consola o terminal ejecuta el siguiente comando - -`npm install` - -![](https://i.imgur.com/BJuMjGR.png) - -__Configurar .env__ -> Con el editor de texto crea un archivo `.env` el cual debes de guiarte del archivo `.env.example` -[Ver video explicando](https://youtu.be/5lEMCeWEJ8o?t=381) -``` -######DATABASE: none, mysql, dialogflow - -DEFAULT_MESSAGE=true -SAVE_MEDIA=true -PORT=3000 -DATABASE=none -LANGUAGE=es -SQL_HOST= -SQL_USER= -SQL_PASS= -SQL_DATABASE= -``` - -![](https://i.imgur.com/9poNnW0.png) - -__Ejecutar el script__ -> Ubicate en le directorio que descargaste y via consola o terminal ejecuta el siguiente comando -`npm run start` - -![](https://i.imgur.com/eMkBkuJ.png) - -__Whatsapp en tu celular__ -> Ahora abre la aplicación de Whatsapp en tu dispositivo y escanea el código QR - -Visitar la pagina -`http://localhost:3000/qr` - -![](https://i.imgur.com/Q3JEDlP.png) - -__Listo 😎__ -> Cuando sale este mensaje tu BOT está __listo__ para trabajar! -![](https://i.imgur.com/eoJ4Ruk.png) - -# ¿Quieres ver como se creó? 🤖 -- [Ver Video 1](https://www.youtube.com/watch?v=A_Xu0OR_HkE) -- [¿Como instalarlo? (Actulización)](https://youtu.be/5lEMCeWEJ8o) - -## ¿Como usarlo el chatbot de whatsapp? -> Escribe un mensaje al whatsapp que vinculaste con tu BOT - -![](https://i.imgur.com/OSUgljQ.png) - -> Ahora deberías obtener un arespuesta por parte del BOT como la siguiente, ademas de esto tambien se crea un archivo excel -con el historial de conversación con el número de tu cliente - -![](https://i.imgur.com/lrMLgR8.png) -![](https://i.imgur.com/UYcoUSV.png) - -## Preguntar al BOT -> Puedes interactuar con el bot ejemplo escribele __hola__ y el bot debe responderte! - -![](https://i.imgur.com/cNAS51I.png) +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) diff --git a/adapter/diaglogflow.js b/adapter/diaglogflow.js deleted file mode 100644 index c80b034..0000000 --- a/adapter/diaglogflow.js +++ /dev/null @@ -1,77 +0,0 @@ -const dialogflow = require('@google-cloud/dialogflow'); -const fs = require('fs') -const crypto = require('crypto'); -/** - * Debes de tener tu archivo con el nombre "chatbot-account.json" en la raíz del proyecto - */ - -const KEEP_DIALOG_FLOW = (process.env.KEEP_DIALOG_FLOW === 'true') -let PROJECID; -let CONFIGURATION; -let sessionClient; - -const checkFileCredentials = () => { - if(!fs.existsSync(`${__dirname}/../chatbot-account.json`)){ - return false - } - - const parseCredentials = JSON.parse(fs.readFileSync(`${__dirname}/../chatbot-account.json`)); - PROJECID = parseCredentials.project_id; - CONFIGURATION = { - credentials: { - private_key: parseCredentials['private_key'], - client_email: parseCredentials['client_email'] - } - } - sessionClient = new dialogflow.SessionsClient(CONFIGURATION); -} - -// Create a new session - - -// Detect intent method -const detectIntent = async (queryText) => { - let media = null; - const sessionId = KEEP_DIALOG_FLOW ? 1 : crypto.randomUUID(); - const sessionPath = sessionClient.projectAgentSessionPath(PROJECID, sessionId); - const languageCode = process.env.LANGUAGE - const request = { - session: sessionPath, - queryInput: { - text: { - text: queryText, - languageCode: languageCode, - }, - }, - }; - - const responses = await sessionClient.detectIntent(request); - const [singleResponse] = responses; - const { queryResult } = singleResponse - const { intent } = queryResult || { intent: {} } - const parseIntent = intent['displayName'] || null - const parsePayload = queryResult['fulfillmentMessages'].find((a) => a.message === 'payload'); - // console.log(singleResponse) - if (parsePayload && parsePayload.payload) { - const { fields } = parsePayload.payload - media = fields.media.stringValue || null - } - const customPayload = parsePayload['payload'] - - const parseData = { - replyMessage: queryResult.fulfillmentText, - media, - trigger: null - } - return parseData -} - -const getDataIa = (message = '', cb = () => { }) => { - detectIntent(message).then((res) => { - cb(res) - }) -} - -checkFileCredentials(); - -module.exports = { getDataIa } diff --git a/adapter/index.js b/adapter/index.js deleted file mode 100644 index 6f06561..0000000 --- a/adapter/index.js +++ /dev/null @@ -1,90 +0,0 @@ -const { getData, getReply, saveMessageMysql } = require('./mysql') -const { saveMessageJson } = require('./jsonDb') -const { getDataIa } = require('./diaglogflow') -const stepsInitial = require('../flow/initial.json') -const stepsReponse = require('../flow/response.json') - -const get = (message) => new Promise((resolve, reject) => { - /** - * Si no estas usando un gesto de base de datos - */ - - if (process.env.DATABASE === 'none') { - const { key } = stepsInitial.find(k => k.keywords.includes(message)) || { key: null } - const response = key || null - resolve(response) - } - /** - * Si usas MYSQL - */ - if (process.env.DATABASE === 'mysql') { - getData(message, (dt) => { - resolve(dt) - }); - } - -}) - - -const reply = (step) => new Promise((resolve, reject) => { - /** - * Si no estas usando un gesto de base de datos - */ - if (process.env.DATABASE === 'none') { - let resData = { replyMessage: '', media: null, trigger: null } - const responseFind = stepsReponse[step] || {}; - resData = { - ...resData, - ...responseFind, - replyMessage:responseFind.replyMessage.join('')} - resolve(resData); - return - } - /** - * Si usas MYSQL - */ - if (process.env.DATABASE === 'mysql') { - let resData = { replyMessage: '', media: null, trigger: null } - getReply(step, (dt) => { - resData = { ...resData, ...dt } - resolve(resData) - }); - } -}) - -const getIA = (message) => new Promise((resolve, reject) => { - /** - * Si usas dialogflow - */ - if (process.env.DATABASE === 'dialogflow') { - let resData = { replyMessage: '', media: null, trigger: null } - getDataIa(message,(dt) => { - resData = { ...resData, ...dt } - resolve(resData) - }) - } -}) - -/** - * - * @param {*} message - * @param {*} date - * @param {*} trigger - * @param {*} number - * @returns - */ -const saveMessage = ( message, trigger, number ) => new Promise( async (resolve, reject) => { - switch ( process.env.DATABASE ) { - case 'mysql': - resolve( await saveMessageMysql( message, trigger, number ) ) - break; - case 'none': - resolve( await saveMessageJson( message, trigger, number ) ) - break; - default: - resolve(true) - break; - } -}) - -module.exports = { get, reply, getIA, saveMessage } \ No newline at end of file diff --git a/adapter/jsonDb.js b/adapter/jsonDb.js deleted file mode 100644 index dbc2626..0000000 --- a/adapter/jsonDb.js +++ /dev/null @@ -1,20 +0,0 @@ -const Path = require('path') -const StormDB = require("stormdb"); -const date = new Date().toISOString(); -const saveMessageJson = (message, trigger, number) => new Promise( async(resolve,reject) =>{ - try { - const engine = new StormDB.localFileEngine( Path.join(__dirname, `/../chats/${number}.json`) ); - const db = new StormDB(engine); - // set default db value if db is empty - db.default({ messages: [] }); - // add new users entry - db.get("messages").push({ message, date, trigger }); - db.save(); - resolve('Saved') - } catch (error) { - console.log(error) - reject(error) - } -}) - -module.exports = { saveMessageJson } \ No newline at end of file diff --git a/adapter/mysql.js b/adapter/mysql.js deleted file mode 100644 index e92cf97..0000000 --- a/adapter/mysql.js +++ /dev/null @@ -1,74 +0,0 @@ -const {connection} = require('../config/mysql') -const DATABASE_NAME = process.env.SQL_DATABASE || 'db_test' - -getData = (message = '', callback) => connection.query( - `SELECT * FROM ${DATABASE_NAME}.initial WHERE keywords LIKE '%${message}%' LIMIT 1`, - (error, results - ) => { - const [response] = results - const key = response?.option_key || null - callback(key) -}); - - -getReply = (option_key = '', callback) => connection.query( - `SELECT * FROM ${DATABASE_NAME}.response WHERE option_key = '${option_key}' LIMIT 1`, - (error, results - ) => { - const [response] = results; - console.log(response) - const value = { - replyMessage:response?.replyMessage || '', - trigger:response?.trigger || '', - media:response?.media || '' - - } - callback(value) -}); - -getMessages = ( number ) => new Promise((resolve,reejct) => { - try { - connection.query( - `SELECT * FROM ${DATABASE_NAME}.response WHERE number = '${number}'`, (error, results) => { - if(error) { - console.log(error) - } - const [response] = results; - console.log(response) - const value = { - replyMessage:response?.replyMessage || '', - trigger:response?.trigger || '', - media:response?.media || '' - } - resolve(value) - }) - } catch (error) { - - } -}) - -saveMessageMysql = ( message, date, trigger, number ) => new Promise((resolve,reejct) => { - try { - connection.query( - `INSERT INTO ${DATABASE_NAME}.messages `+"( `message`, `date`, `trigger`, `number`)"+` VALUES ('${message}','${date}','${trigger}', '${number}')` , (error, results) => { - if(error) { - //TODO esta parte es mejor incluirla directamente en el archivo .sql template - console.log('DEBES DE CREAR LA TABLA DE MESSAGE') - // if( error.code === 'ER_NO_SUCH_TABLE' ){ - // connection.query( `CREATE TABLE ${DATABASE_NAME}.messages `+"( `date` DATE NOT NULL , `message` VARCHAR(450) NOT NULL , `trigger` VARCHAR(450) NOT NULL , `number` VARCHAR(50) NOT NULL ) ENGINE = InnoDB", async (error, results) => { - // setTimeout( async () => { - // return resolve( await this.saveMessageMysql( message, date, trigger, number ) ) - // }, 150) - // }) - // } - } - console.log('Saved') - console.log( results ) - resolve(results) - }) - } catch (error) { - - } -}) - -module.exports = {getData, getReply, saveMessageMysql} \ No newline at end of file diff --git a/app.js b/app.js deleted file mode 100644 index 755b924..0000000 --- a/app.js +++ /dev/null @@ -1,172 +0,0 @@ -/** - * ⚡⚡⚡ DECLARAMOS LAS LIBRERIAS y CONSTANTES A USAR! ⚡⚡⚡ - */ -require('dotenv').config() -const fs = require('fs'); -const express = require('express'); -const cors = require('cors') -const qrcode = require('qrcode-terminal'); -const { Client,LocalAuth } = require('whatsapp-web.js'); -const mysqlConnection = require('./config/mysql') -const { middlewareClient } = require('./middleware/client') -const { generateImage, cleanNumber, checkEnvFile, createClient, isValidNumber } = require('./controllers/handle') -const { connectionReady, connectionLost } = require('./controllers/connection') -const { saveMedia } = require('./controllers/save') -const { getMessages, responseMessages, bothResponse } = require('./controllers/flows') -const { sendMedia, sendMessage, lastTrigger, sendMessageButton, readChat } = require('./controllers/send') -const app = express(); -app.use(cors()) -app.use(express.json()) -const MULTI_DEVICE = process.env.MULTI_DEVICE || 'true'; -const server = require('http').Server(app) - -const port = process.env.PORT || 3000 -var client; -app.use('/', require('./routes/web')) - -/** - * Escuchamos cuando entre un mensaje - */ -const listenMessage = () => client.on('message', async msg => { - const { from, body, hasMedia } = msg; - - if(!isValidNumber(from)){ - return - } - - // Este bug lo reporto Lucas Aldeco Brescia para evitar que se publiquen estados - if (from === 'status@broadcast') { - return - } - message = body.toLowerCase(); - console.log('BODY',message) - const number = cleanNumber(from) - await readChat(number, message) - - /** - * Guardamos el archivo multimedia que envia - */ - if (process.env.SAVE_MEDIA && hasMedia) { - const media = await msg.downloadMedia(); - saveMedia(media); - } - - /** - * Si estas usando dialogflow solo manejamos una funcion todo es IA - */ - - if (process.env.DATABASE === 'dialogflow') { - if(!message.length) return; - const response = await bothResponse(message); - await sendMessage(client, from, response.replyMessage); - if (response.media) { - sendMedia(client, from, response.media); - } - return - } - - /** - * Ver si viene de un paso anterior - * Aqui podemos ir agregando más pasos - * a tu gusto! - */ - - const lastStep = await lastTrigger(from) || null; - if (lastStep) { - const response = await responseMessages(lastStep) - await sendMessage(client, from, response.replyMessage); - } - - /** - * Respondemos al primero paso si encuentra palabras clave - */ - const step = await getMessages(message); - - if (step) { - const response = await responseMessages(step); - - /** - * Si quieres enviar botones - */ - - await sendMessage(client, from, response.replyMessage, response.trigger); - - if(response.hasOwnProperty('actions')){ - const { actions } = response; - await sendMessageButton(client, from, null, actions); - return - } - - if (!response.delay && response.media) { - sendMedia(client, from, response.media); - } - if (response.delay && response.media) { - setTimeout(() => { - sendMedia(client, from, response.media); - }, response.delay) - } - return - } - - //Si quieres tener un mensaje por defecto - if (process.env.DEFAULT_MESSAGE === 'true') { - const response = await responseMessages('DEFAULT') - await sendMessage(client, from, response.replyMessage, response.trigger); - - /** - * Si quieres enviar botones - */ - if(response.hasOwnProperty('actions')){ - const { actions } = response; - await sendMessageButton(client, from, null, actions); - } - return - } -}); - - - -client = new Client({ - authStrategy: new LocalAuth(), - puppeteer: { headless: true } - }); - -client.on('qr', qr => generateImage(qr, () => { - qrcode.generate(qr, { small: true }); - - console.log(`Ver QR http://localhost:${port}/qr`) - socketEvents.sendQR(qr) -})) - -client.on('ready', (a) => { - connectionReady() - listenMessage() - // socketEvents.sendStatus(client) -}); - -client.on('auth_failure', (e) => { - // console.log(e) - // connectionLost() -}); - -client.on('authenticated', () => { - console.log('AUTHENTICATED'); -}); - - client.initialize(); - - - -/** - * Verificamos si tienes un gesto de db - */ - -if (process.env.DATABASE === 'mysql') { - mysqlConnection.connect() -} - -server.listen(port, () => { - console.log(`El server esta listo por el puerto ${port}`); -}) -checkEnvFile(); - diff --git a/app.json b/app.json deleted file mode 100644 index a602ccf..0000000 --- a/app.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Chatbot Whatsapp (Leifer Mendez)", - "description": "El siguiente proyecto se realizó con fines educativos para el canal de Youtube (Leifer Mendez) donde aprendemos como usando node.js podemos crear un chatbot increíble que además le agregamos inteligencia artificial gracias al servicio de dialogflow", - "repository": "https://github.com/leifermendez/bot-whatsapp", - "logo": "https://avatars0.githubusercontent.com/u/15802366?s=460&u=77ec7ef359e8ed842aef769693f1675c0ed460fd&v=4", - "keywords": [ - "nodejs", - "whatsapp", - "bot", - "chatbot", - "dialogflow" - ], - "addons": [ - ], - "buildpacks": [ - { - "url": "heroku/nodejs" - }, - { - "url": "https://github.com/jontewks/puppeteer-heroku-buildpack" - } - ], - "env": { - "SAVE_MEDIA": "false", - "DATABASE": { - "description": "'none', 'mysql', 'dialogflow' por defecto 'none' Puedes usar alguna de los siguientes opciones. Pero antes debes de saber como funciona y eso lo explico en el video. Puedes obtener más información https://github.com/leifermendez/bot-whatsapp/blob/main/README.md", - "value": "none" - }, - "LANGUAGE": "es", - "SQL_HOST":"your_host", - "SQL_USER":"your_user", - "SQL_PASS":"your_password", - "SQL_DATABASE":"your_database" - } - } \ No newline at end of file diff --git a/chatbot-account.json b/chatbot-account.json deleted file mode 100644 index cb8956d..0000000 --- a/chatbot-account.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "", - "project_id": "", - "private_key_id": "", - "private_key":"", - "client_email": "", - "client_id": "", - "auth_uri": "", - "token_uri": "", - "auth_provider_x509_cert_url": "", - "client_x509_cert_url":"" - } - \ No newline at end of file diff --git a/chats/.gitkeep b/chats/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/config/mysql.js b/config/mysql.js deleted file mode 100644 index 8db7c76..0000000 --- a/config/mysql.js +++ /dev/null @@ -1,18 +0,0 @@ -const mysql = require('mysql'); -const connection = mysql.createConnection({ - host : process.env.SQL_HOST || 'localhost', - user : process.env.SQL_USER || 'root', - password : process.env.SQL_PASS || '', - database : process.env.SQL_DATABASE || 'pruebas' -}); - -const connect = () => connection.connect(function(err) { - if (err) { - console.error('error connecting: ' + err.stack); - return; - } - - console.log('Conexion correcta con tu base de datos MySQL') -}); - -module.exports = {connect, connection} \ No newline at end of file diff --git a/controllers/connection.js b/controllers/connection.js deleted file mode 100644 index a2aa6f4..0000000 --- a/controllers/connection.js +++ /dev/null @@ -1,14 +0,0 @@ -const connectionReady = (cb = () =>{}) => { - console.log('Listo para escuchas mensajes') - console.log('Client is ready!'); - console.log('🔴 escribe: hola'); - cb() -} - -const connectionLost = (cb = () =>{}) => { - console.log('** Error de autentificacion vuelve a generar el QRCODE (Borrar el archivo session.json) **'); - cb() -} - - -module.exports = {connectionReady, connectionLost} \ No newline at end of file diff --git a/controllers/flows.js b/controllers/flows.js deleted file mode 100644 index 0e769cd..0000000 --- a/controllers/flows.js +++ /dev/null @@ -1,28 +0,0 @@ -const {get, reply, getIA} = require('../adapter') -const {saveExternalFile, checkIsUrl} = require('./handle') - -const getMessages = async (message) => { - const data = await get(message) - return data -} - -const responseMessages = async (step) => { - const data = await reply(step) - if(data && data.media){ - const file = checkIsUrl(data.media) ? await saveExternalFile(data.media) : data.media; - return {...data,...{media:file}} - } - return data -} - -const bothResponse = async (message) => { - const data = await getIA(message) - if(data && data.media){ - const file = await saveExternalFile(data.media) - return {...data,...{media:file}} - } - return data -} - - -module.exports = { getMessages, responseMessages, bothResponse } \ No newline at end of file diff --git a/controllers/handle.js b/controllers/handle.js deleted file mode 100644 index ce006d7..0000000 --- a/controllers/handle.js +++ /dev/null @@ -1,83 +0,0 @@ -const { Client, LegacySessionAuth, LocalAuth } = require('whatsapp-web.js'); -const http = require('http'); // or 'https' for https:// URLs -const https = require('https'); // or 'https' for https:// URLs -const fs = require('fs'); -const qr = require('qr-image') - -const MULTI_DEVICE = process.env.MULTI_DEVICE || 'true'; - -const cleanNumber = (number) => { - number = number.replace('@c.us', ''); - number = `${number}@c.us`; - return number -} - -const saveExternalFile = (url) => new Promise((resolve, reject) => { - const ext = url.split('.').pop() - const checkProtocol = url.split('/').includes('https:'); - const handleHttp = checkProtocol ? https : http; - const name = `${Date.now()}.${ext}`; - const file = fs.createWriteStream(`${__dirname}/../mediaSend/${name}`); - console.log(url) - handleHttp.get(url, function(response) { - response.pipe(file); - file.on('finish', function() { - file.close(); // close() is async, call cb after close completes. - resolve(name) - }); - file.on('error', function() { - console.log('errro') - file.close(); // close() is async, call cb after close completes. - resolve(null) - }); - }); -}) - -const checkIsUrl = (path) => { - try{ - regex = /^(http(s)?:\/\/)[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/i; - match = path.match(regex); - return match[0] - }catch(e){ - return null - } -} - -const generateImage = (base64, cb = () => {}) => { - let qr_svg = qr.image(base64, { type: 'svg', margin: 4 }); - qr_svg.pipe(require('fs').createWriteStream('./mediaSend/qr-code.svg')); - console.log(`⚡ Recuerda que el QR se actualiza cada minuto ⚡'`); - console.log(`⚡ Actualiza F5 el navegador para mantener el mejor QR⚡`); - cb() -} - -const checkEnvFile = () => { - const pathEnv = `${__dirname}/../.env`; - const isExist = fs.existsSync(pathEnv); - if(!isExist){ - console.log(`🆗 ATENCION! 🆗 te falta crear tu archivo .env de lo contrario no funcionara`) - } -} - -/** - * - * @param {*} session - * @param {*} cb - */ -const createClient = () => { - client = new Client({ - authStrategy: new LocalAuth( - {dataPath: './sessions/', - clientId: 'bot'}), - puppeteer: { headless: false } - - }); -} - -const isValidNumber = (rawNumber) => { - const regexGroup = /\@g.us\b/gm; - const exist = rawNumber.match(regexGroup); - return !exist -} - -module.exports = {cleanNumber, saveExternalFile, generateImage, checkIsUrl, checkEnvFile, createClient, isValidNumber} \ No newline at end of file diff --git a/controllers/save.js b/controllers/save.js deleted file mode 100644 index 92555e0..0000000 --- a/controllers/save.js +++ /dev/null @@ -1,18 +0,0 @@ -const mimeDb = require('mime-db') -const fs = require('fs') - -/** - * Guardamos archivos multimedia que nuestro cliente nos envie! - * @param {*} media - */ - - -const saveMedia = (media) => { - const extensionProcess = mimeDb[media.mimetype] - const ext = extensionProcess.extensions[0] - fs.writeFile(`./media/${Date.now()}.${ext}`, media.data, { encoding: 'base64' }, function (err) { - console.log('** Archivo Media Guardado **'); - }); -} - -module.exports = {saveMedia} \ No newline at end of file diff --git a/controllers/send.js b/controllers/send.js deleted file mode 100644 index d081381..0000000 --- a/controllers/send.js +++ /dev/null @@ -1,113 +0,0 @@ - -const ExcelJS = require('exceljs'); -const moment = require('moment'); -const fs = require('fs'); -const { MessageMedia, Buttons } = require('whatsapp-web.js'); -const { cleanNumber } = require('./handle') -const DELAY_TIME = 170; //ms -const DIR_MEDIA = `${__dirname}/../mediaSend`; -// import { Low, JSONFile } from 'lowdb' -// import { join } from 'path' -const { saveMessage } = require('../adapter') -/** - * Enviamos archivos multimedia a nuestro cliente - * @param {*} number - * @param {*} fileName - */ - -const sendMedia = (client, number = null, fileName = null) => { - if(!client) return cosnole.error("El objeto cliente no está definido."); - try { - number = cleanNumber(number || 0) - const file = `${DIR_MEDIA}/${fileName}`; - if (fs.existsSync(file)) { - const media = MessageMedia.fromFilePath(file); - client.sendMessage(number, media, { sendAudioAsVoice: true }); - } - } catch(e) { - throw e; - } -} - -/** - * Enviamos archivos como notas de voz - * @param {*} number - * @param {*} fileName - */ - - const sendMediaVoiceNote = (client, number = null, fileName = null) => { - if(!client) return cosnole.error("El objeto cliente no está definido."); - try { - number = cleanNumber(number || 0) - const file = `${DIR_MEDIA}/${fileName}`; - if (fs.existsSync(file)) { - const media = MessageMedia.fromFilePath(file); - client.sendMessage(number, media ,{ sendAudioAsVoice: true }); - - } - }catch(e) { - throw e; -} - -} -/** - * Enviamos un mensaje simple (texto) a nuestro cliente - * @param {*} number - */ -const sendMessage = async (client, number = null, text = null, trigger = null) => { - setTimeout(async () => { - number = cleanNumber(number) - const message = text - client.sendMessage(number, message); - await readChat(number, message, trigger) - console.log(`⚡⚡⚡ Enviando mensajes....`); - },DELAY_TIME) -} - -/** - * Enviamos un mensaje con buttons a nuestro cliente - * @param {*} number - */ -const sendMessageButton = async (client, number = null, text = null, actionButtons) => { - number = cleanNumber(number) - const { title = null, message = null, footer = null, buttons = [] } = actionButtons; - let button = new Buttons(message,[...buttons], title, footer); - client.sendMessage(number, button); - - console.log(`⚡⚡⚡ Enviando mensajes....`); -} - - -/** - * Opte - */ -const lastTrigger = (number) => new Promise((resolve, reject) => { - number = cleanNumber(number) - const pathExcel = `${__dirname}/../chats/${number}.xlsx`; - const workbook = new ExcelJS.Workbook(); - if (fs.existsSync(pathExcel)) { - workbook.xlsx.readFile(pathExcel) - .then(() => { - const worksheet = workbook.getWorksheet(1); - const lastRow = worksheet.lastRow; - const getRowPrevStep = worksheet.getRow(lastRow.number); - const lastStep = getRowPrevStep.getCell('C').value; - resolve(lastStep) - }); - } else { - resolve(null) - } -}) - -/** - * Guardar historial de conversacion - * @param {*} number - * @param {*} message - */ -const readChat = async (number, message, trigger = null) => { - number = cleanNumber(number) - await saveMessage( message, trigger, number ) - console.log('Saved') -} - -module.exports = { sendMessage, sendMedia, lastTrigger, sendMessageButton, readChat, sendMediaVoiceNote } diff --git a/controllers/socket.js b/controllers/socket.js deleted file mode 100644 index 05ff8d3..0000000 --- a/controllers/socket.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = (socket) => { - return { - sendQR:(qr) => { - socket.emit('connection_qr',{ - qr - }) - }, - sendStatus:() => { - socket.emit('connection_status',{ - a:1 - }) - } - } - -} - diff --git a/controllers/web.js b/controllers/web.js deleted file mode 100644 index 5b7bad9..0000000 --- a/controllers/web.js +++ /dev/null @@ -1,17 +0,0 @@ -const fs = require('fs') -const { sendMessage } = require('../controllers/send') - -const sendMessagePost = (req, res) => { - console.log('asdasdasdasdasd') - const { message, number } = req.body - const client = req.clientWs || null; - sendMessage(client, number, message) - res.send({ status: 'Enviado!' }) -} - -const getQr = (req, res) => { - res.writeHead(200, { 'content-type': 'image/svg+xml' }); - fs.createReadStream(`${__dirname}/../mediaSend/qr-code.svg`).pipe(res); -} - -module.exports = { sendMessagePost, getQr } \ No newline at end of file diff --git a/flow/initial.json b/flow/initial.json deleted file mode 100644 index 6a91c75..0000000 --- a/flow/initial.json +++ /dev/null @@ -1,93 +0,0 @@ -[ - { - "keywords": [ - "hola", - "hola!", - "ola", - "ole", - "inicio", - "welcome", - "buenos días", - "buenas tardes", - "buenas noches", - "me dieron este número", - "venden a crédito", - "quisiera saber si venden", - "necesito saber" - ], - "key": "STEP_1" - }, - { - "keywords": [ - "cursos", - "info", - "curso" ], - "key": "STEP_2" - }, - { - "keywords": [ - "angular" - ], - "key": "STEP_2_1" - }, - { - "keywords": [ - "node" - ], - "key": "STEP_2_2" - }, - { - "keywords": [ - "ngrx" - ], - "key": "STEP_2_3" - }, - { - "keywords": [ - "aws" - ], - "key": "STEP_2_4" - }, - { - "keywords": [ - "asesor", - "asesores", - "Vendedor", - "cobrador" - ], - "key": "STEP_3" - }, - { - "keywords": [ - "muchas gracias", - "ok", - "gracias", - "vale gracias" - ], - "key": "STEP_4" - }, - { - "keywords": [ - "youtube" - ], - "key": "STEP_5" - }, - { - "keywords": [ - "VER_CURSOS" - ], - "key": "STEP_6" - }, - { - "keywords": [ - "telegram" - ], - "key": "STEP_7" - }, - { - "keywords": [ - "audio" - ], - "key": "STEP_8" - } -] \ No newline at end of file diff --git a/flow/response.json b/flow/response.json deleted file mode 100644 index 4413f32..0000000 --- a/flow/response.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "DEFAULT":{ - "replyMessage":[ - "*Esta respuesta es un respuesta default* cuando no se consigue una palabra clave \n", - "la puedes desactivar en tu archivo .env DEFAULT_MESSAGE=false \n", - "tambien te quiero recordar que si presentas algun error pasarte por el repositorio \n", - "https://github.com/leifermendez/bot-whatsapp#chatbot-whatsapp-opensource \n", - "y recuerda tener la ultima versión del proyecto \n\n", - "Prueba escribiendo *hola* \n" - ], - "media":null, - "trigger":null - }, - "STEP_0":{ - "replyMessage":[ - "El flujo ha finalizado \n", - "pero puedes ver todo el codigo de este \n", - "repositorio en https://github.com/leifermendez/bot-whatsapp.git" - ], - "media":null, - "trigger":null - }, - "STEP_1":{ - "replyMessage":[ - "Hola! y✌️ Bienvenido a este 🤖 CHATBOT de Whatsapp, lo primero \n", - "decirte que mi nombre es *Leifer Mendez*😎 \n", - "\n Si necesitas ver más info sobre las capacitacion tecnicas ", - "escribe *cursos* o *info* o escribe *audio*" - ], - "media":"https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif", - "trigger":null, - "actions":{ - "title":"¿Que te interesa ver?", - "message":"Recuerda todo este contenido es gratis y estaria genial que me siguas!", - "footer":"Gracias", - "buttons":[ - {"body":"Cursos"}, - {"body":"Youtube"}, - {"body":"Telegram"} - ] - } - }, - "STEP_2":{ - "replyMessage":[ - "Perfecto, te voy a pasar la lista ", - "de los temas que tengo y un breve video 🙂🤖 \n\n", - "*Angular* Basico (Pago) \n", - "*Angular* Basico (Gratis) \n", - "*Node* Basico (Gratis) \n", - "*NGRX* Basico (Gratis) \n", - "*AWS* Basico (Pago) \n\n", - "Escribe la palabra del tema que te interese \n" - ], - "media":"https://i.giphy.com/media/5J5gN0WUk0VToHaK2p/giphy-downsized.gif", - "trigger":null - }, - "STEP_2_1":{ - "replyMessage":[ - "Si te interesa Angular tienes disponible \n", - "*(Gratis)* https://bit.ly/367tJ32 \n\n", - "*(Pago)* https://link.codigoencasa.com/PROMO-INICIAL \n\n", - "*(Pago)* https://link.codigoencasa.com/ANGULAR-BASICO-EDTEAM \n\n", - "😎😎😎" - ], - "media":"https://i.imgur.com/Q0a5UQI.jpg", - "trigger":null - }, - "STEP_2_2":{ - "replyMessage":[ - "Si te interesa NODE tienes disponible \n", - "*(Gratis)* https://bit.ly/3od1Bl6 \n\n", - "Espero pronto tener más material disponible", - "🤖" - ], - "media":null, - "trigger":null - }, - "STEP_2_3":{ - "replyMessage":[ - "NGRX para manejar estados en Angular \n", - "*(Gratis)* https://bit.ly/ngrx-desde-cero \n", - "A darle! 😮" - ], - "media":null, - "trigger":null - }, - "STEP_2_4":{ - "replyMessage":[ - "Muy bien AWS esta pronto a salir pre-registrate aquí \n", - "*(Pre-registro)* https://link.codigoencasa.com/AWS-BASICO-INVITACION \n", - "😮😮" - ], - "media":null, - "trigger":null - }, - "STEP_3":{ - "replyMessage":[ - "¿Ok cual curso de intereso? \n", - "*angular* , *node*, *ngrx*, *aws*" - ], - "media":null, - "trigger":null - }, - "STEP_4":{ - "replyMessage":[ - "Gracias a ti! \n" - ], - "media":"https://media4.giphy.com/media/hur0SFIU5SH4mxNBWa/giphy.gif", - "trigger":null - }, - "STEP_5":{ - "replyMessage":[ - "Muy bien te comparto el canal de Youtube \n", - "https://youtube.com/leifermendez \n" - ], - "media":null, - "trigger":null - }, - "STEP_6":{ - "replyMessage":[ - "Perfecto, te voy a pasar la lista ", - "de los temas que tengo y un breve video 🙂🤖 \n\n", - "*Angular* Basico (Pago) \n", - "*Angular* Basico (Gratis) \n", - "*Node* Basico (Gratis) \n", - "*NGRX* Basico (Gratis) \n", - "*AWS* Basico (Pago) \n\n", - "Escribe la palabra del tema que te interese \n" - ], - "media":"https://i.giphy.com/media/5J5gN0WUk0VToHaK2p/giphy-downsized.gif", - "trigger":null - }, - "STEP_7":{ - "replyMessage":[ - "Vente al telegram \n", - "https://t.me/leifermendez \n" - ], - "media":null, - "trigger":null - }, - "STEP_8":{ - "replyMessage":[ - "Esto es una nota de voz \n" - ], - "media":"nota-de-voz.mp3", - "trigger":null - } -} \ No newline at end of file diff --git a/media/.gitkeep b/media/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/mediaSend/.gitkeep b/mediaSend/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/mediaSend/PTT-20220223-WA0000.opus b/mediaSend/PTT-20220223-WA0000.opus deleted file mode 100644 index 6e6e9951aa63ffac14e3a566a67f38433ca9c13a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12001 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%0AQZ*y!h0j(3Bska6!YQ>+qs|-g+NAA+4sG2V> zQsRdR=rNTD`R0C3_6tY7TlvTr$;n+G^u$iB=FOl38ka0FZNVo)=^!4}YrS@(r3(Mm zV3+3?LF3zv17ax+71Q<{O{S%@>kZez{Lk_o48csEsaVTAl+1;cCSRg$GgiDb!T@Px z#r=?SJU!*prjzc(>(V`cmx|of6#7%dp?SALF=*E+M~YaD@AQ?z+5~I{s@Z!nQHZt( zVjy6CZu0e81A%K`WKs;Vi5y?n_W{_nZ@q%{HFfM479tBZk;=BEy&#{{S4!#Z zpAzY=_4>x5ao8^kX6;rMRTeasG8gEK^_ogJN-D}BhfS*Z$2#_#0TqG{3^=W&imK_?+n}ki|B>GTNZzhP$8zD=5K`P6idwX`ovc@DB`zeCzxBCg*dLa*O^t>q5is zFa}4YBi6&zv$9!7lw|M{UlMX+KF$ksucut8&-`~VlR@r zRizpor2c&_TV@>R*HSQK$xFY%jD6eece_WHI)?F82|axatw&EU%r&_>I$uQo?!P>z~$?Hc)&}DtyrIdE65ZXg7Z`| ze_E?VN<_*$^abk<@e1+1Xfs|3v|IaGm2ly>{Hfu~tbLt_=M^OQNb=i47+JL^lZuN^ z_r=|c;LYm9x8U*M>6dNxU!9Jo>g+ntO~Tkl$5b+1K7QRdy}R7bXp=dTnr-2oB?_$V&wIa+LcK*yU0Aw?2*5n#qd8}3#7Zd+GQHR z8Vsi|MUHI4@_LCaq}dB49auj=wQyBY59$Qy)#%UDFDXcJ6l0+!2c}pWRs=AaiRF~< z%GS<(l$LH)CZ11U`^O49Frh#72&HOP)>ELq^DJ<^oG@y#&hvK>{Vl&ChboMV8NwZAZ8TCohSUbNM{bWgW` z=w~Nmg=Rec;4ZTDDcYLR=o~^pO<;=xNtTkc815la-_oHgR)jiOno{KcAObOk<5R+i z(IID7;CT5rGa9TEu?c*n*ia&J4C|4MGY3~}hq;L#{Cx0Z29_=P`o+Na2wln;if%M{V-K4GO>jNPQ0gaPWSYdNjvz zgEQzqo*;H79$#P#3CD;2q%%q~wA5aCmfHD4M&v$9=7|geawu;U!5Kx5%bTV`pD<~( z!MjzRc@t$#*y5VuI-_F-3bpb3h~Ytk#OT&`SU-8)EMmK1qwxgCFZXHswjcfEKh4`$ z-mR|ZrWw&Zk{3DYOZBJy_f@#vqt2#e5oX0oEi`$FZH)@(zCBM?VtbHUW=iQ=(%*C| zWXz7r#3Z`AA8&;JJ$DilH9^j?h_4sDaAcBAy9*Av2zfX~lBf`fvWH_@#1V3Od8qgH zXe<>9fGdWuy(l6%_CfjAQ54Ki_|EdxJ~G^HC}E`4Pxr8@QNOEgd3}v;@(yiU!XhcD z>!07N;pr6#kvGSd0>{Y_p;7`#!Q-)CV`GC%^X@<1zFB7Ns*zAlP|J9ipm4I1-TdR< z&{uV*P0Iu0t3_)_4PWw(nou*g@GE20)!@{>=zJ;nVw{ z3~Sq?x#q|A1RTGVSphn`RL^qaG>t$w7{%{lJs9XXWO!+j&2ku*;q_OEF0(j={N1^D zn5YJ6>O=!RieF>a9VucnSDs`3cBxjnGEumNfNmJlc9y%2?bO{^5->ws>=>HTKeDzfh~?}kv< z0>GB(KB!34CKT$dQMM9v#_#<8rKApTe*GZE{1b2jDyE7yH93w2 zF)wRUPv|*If*o9G!g6N~1#J2F?zuoE<*{BySi-USq2S0Zq>{>xm+@sOz#8^HoULr3 zh(&L>yyUZzC??KP4w&kAu_R6pzEO;qwVk8}AR+>0{3Dt!l?4Hy^hcR+VfoiJLm)y6 zY;$pr9NxuSGwvbf2I4G?_sW}#B&^`c6VLn@;{5=%@L_bxczT}=e@Cf=DBh=`h0ofY z4Ts&S!B!GrYU=V-levDQQ%o>NRD`{91*)n;^C*#qZ6X-!A;*t zjv#A-2|G%gmJ*F4%d){OHWJ`LawZnX|H6FC4LgV_q`KuD*-Z`0f`?4btysI8pYXp^ zJ?m+ZZfSEhp(*2^&~e>Xt^hu@HMvo`GrsDVRQe)@jl4- z#r@_PSLdQmBI0K{qTLjb6nF&WhU0oAeKqI@&HR9|V zz@B6ggd!AfLBX^iS`Uhp9O;FVpyX><=zy3p05eOe*wCmU9`;O-U83XyNH$BgvMpekr(&cNJ(a)86IP-rtlg~6-i5q zj7G{xT3`j~kyfUlK(-nPNKlfo;!45J1$`^|OOi6sdOrXh&n!j)Dn|!C#)lrfv`Mg6^DpB`7izg- zdu=ls(2!S^?BOtp(SCRJBV&S8h&j;g!b;qW>hjYQIbasuQi#XV7%asKOU zBmOPl=g_VrjxM+U?LdbXqDLrQjCmzNtcs|(tiHEkS!iwQN z&booKDLL#-oK#e~$$wZiWNBlaC z*EU|hI}FdnGR*lj)5OKwU61l)#;gRaV;{vQIeX6^*oIP(Yx^6erB!q4Pufj|HdIpfVpAP5+cP!`nFhfC7_fEoqyD$loy>dSzsIjtsL^FIOtml`B5_#-WYe36`b|~ z#p0-Our+A>ZS9YL9TehqbA26WXe)L_n$fl=Yxsh}_^Hz>bhiP%?#nDxpMxzGh-)7s z?k9jAWi}u5Y6}~>1uoA=LM0b7|8qG^1+2-D@$Z|nW1%WA~YdN`1kOBrm@YH5z}#I*SiLBh0IIx)0<+$ zWCyJ@iC1$@d2*i+qJKg3B%y=l1;OXk*~{w6F@Yh7#{thnBBE%2_EzE;_zB6+0xmh8 z*mGs(X@RljI6=h*S>Qg5l0N(AE=pJ~)TZwuX*jl;DEqT<6rhU5?|2N;#w`7P?Yku? z-V2ldY}8Bk4O(UBMpxc8+`ioi*nF{wp4~_xr|j(Nh3lE!f_Sm*sg0w;?#m`D(RodC zj<`jY2xw+HgXgks?Z!%yJQzeu|6_QFde~QsJmx=;*2koUpSbMMkS1 zN#(4)ee#a>bG=u-va+pXg_`?5Xwr~E23;yf6ewMmP=Ta_bUxN+L-zQ`{OTV-g3!}{ z?32+#!R1@XtB%y(ShpI0CjHNt3*8`%P_ED#YGf5wJcuDY(dk!#cozb;m9Sn_MFJ>X zIiGk=M(S)vl@5a)MRp_%my&y}W8|%X)Y4ajIB|iP_I(40)PQ9YqmIURhjrcj)Ji@0 z)mFlV`e8jx1B4;nV3^EDO;)Ef+cvij#YTr=ptjj8{byQp1P3cwFS&Zj5+UWH7JD9Z zy9CX)byUUwLr*h>T141(d(?2*t-9_j~yuy|HnIx=a@O0w4-I}n@#7omk%IylyJBv{y&zkGAxSz zYY(u%5+cpgOS*JRsdR%N-QA5e3M}2-C5?24fP{2PgEWGGlo*79u!bzG_F5+3xQihv=Ul z(spNUhimc=_qJC)oa)3m+1B%KQx%f9jFQ*)U97x$K-ogB*cCy0re8bQZup$V$@2a) zpj4TR7Az3|GHbb)<1O9LsS7O%wQ~LF?g+JnTCG7z0@}pTP)VGhl3Mu1L|EwRAxtq? z=Aq0AP&CXZlW66=v6`~v2vmoywfJ`nUT)jyIeRjbZX&X_CN$%2k>W-`fk#mB$# z7;Z^& zbJ&4`{kTrhC6Fw6tJUp{evL%_kD%;RCfZ9e$1B-&g+lwT0i@^`CsFE`b?&Dr{u)6< z^3sM>W}CaFq*V7qA)q~v>)DF|T}K02hi$jM zF~FW+zw~OQdtS|P^Yr>x@YjTj^KQ^{-u1ck-DWo^O3kVuNR_yKrh;neaejN~s*)@T!K?6jVb+4p8{RZV59rJ`qogd{IW?Wa&9^4AN}l!ydu&-p}Z zU`3&@41AR%q0bFZ2XFcL@-vIRu~UW-poxcR&X^~9oM~hK2+(= zmNUD+kdhJdi*zbY;9Z-8{ZZ#d~clf_~K< zD35Lx87?kz;fllkX>Djcn?^JULJ0wWJ-_@-ia_Gp?vnz$|G8)|7eRqvz8@%-CC*P3 zOBI%DTx`H-+8o%0=g0Jw6z%asEN#MGBuLAr)8xE2wX-g^jz^jb7Qv>KNz{O0+)~Ne zU(6!oIhv8g45Zd0Q4rqA2M|m}1bik%2w0MGkW@TIW5uV*tsu34^L}9@1Sf;AB?I1g zq_RLYx^SuoQyD4njiQP&m6si5yk0)GKGxsVC*VJFRo&O~GRdV_rc9JG@p>J_s8hjo z(&QyWeQKgU32Tuq^({X1*UlAS=Ptva-@@9xy4-w~MM#l>v(U@TkJGe9etg{FSl7QJr z8GzFx(MT&jumPjmy5}3_sXldPA!P7+JWr-*JRt~|w;DQ#h9RCmePF`}Zya^hVyDD6 zOb|eamJJTtV&QAhd>kAE7N$n!Rl~DKa>t}Yq$42&f}9<= z7;o_+Ll49t_!xXhV#&`t$wa^1nOb5IP`RzIJtDkt^7ACQ$=J*F6s3vm;J@`*l&S_g#$dItlCYuF556e?%4G9d?^U40Q&-gR z?b=6`W_6DXr@I-Kr)f^8JD;oI;&evP8uz8*+G3xvH5~|X2qz!V$|cHHeGz`8HG=-? zjj;Da2qRiI&AhoQ9jj8)P*Vkcjz$a>F_ywKi2xtJWY^FiQXUGWpQ{wl%v&d|KVRTF zh|LQM@LS$soW`Xu$SIYqf8BJTMy%RJf0!Wq zph&IgpQ(gzo=r`U>rA>hFkh-bCR=3eeWT>^>#xy5s{1n6Fo9sPZW`aE@*~(P*|$zb09G5`=AH%avJYV* z;^H`JtU2L`e>Jq;F|j#Ou+6seZ;#@xG?}2PDVKJ?mMD=yY=GpyBQCK;&$+Lp6u%? zJZm^plK|?r9V$T!NErg5Ymyysx?1SF<}X@RI%B> zXMd-~#+|kl*|@J0uaJAOsXwK6^e=pW1~Onq%L_{K)okYfqr4;@b}*~uU91H8Ma#e= zZ;^Esif%Czpk4019Wm68+4A$bX( zIm`DDzfnX(s*wiOV@e_efp<siff zS|$3|iBjhgp(AI9qmK>WKF(p~PXF5Vh*Gqych`0>By#*(uLK8uo{05%gL~Q|&X(s| zWJiA<9<88Wf(lDVHvzA%e1h*30fJqC_v!Suv~x*YCTA2M$OKI;pGPTGVVFb^icv+! zvfC7)ywj(JxMO^2v8M2zjh^VlN`T@xKqCgth^3h|z9rs<)RTwK7bKI%v*hE|%!P#dmx2tt2$6n`gubER`sm|57 zwLPpTXyD@DD&5f9r{{`&$n<17sd>iKoLGwLxh0)|FHT5ggcrof=v0|g6`BwWG`YO;z&MtlVLcqML?fq0s zP}(%qMkbKQ*Le#pxst&(MbZl6`4b!=c1Gm?-XIbOU!_ytImG{Kq99&$)<>|@b$KS3 zI9~ktb|ah>lq#V;oXh!3&csf*y(QmJD8DdJ%jiCPq^Yk?Grg@tRXU`q#c(avr2Ej# z^9hyF;ok#J)wR`f2N$;kPFhO`r{H^G<8}QA_wNth3T98b-H~r+?*M465AW$?4;>rq zN@8YESHY;e!uzeHyS{R0Dg&BIlND>B3oR?!a~;K{=c@j)BMbOm*@~(kl%}A9;~%hP zRCkIblL;YK6!6L+b^b?lVPdW81IA^P>-X_^n zET=X==(#MK@4$5}%6RZk?{RtX7X95lO!9$zb3`%2l-6T2o@DW0)L+zgFnA_WzfnS{ zZPcINmbHohg55e26QVZ{ZWQB!bOzZ=8~$k>%mJ$> z#jd$-+N*+X$RNwujAFsxRA*gIUPN{`;&K96C-?hY#u7fRc0DIu=ZEPn4?mt>{xv>E z3vIhG2O|b1SKroVuqDc^?@SgXpjZ>W-~*KbTW*8DH6eW@?h;W)P2P0(D3+pfsuHNw2++SV^eL$qftgl&Nc5Gc^)G}~Y z_YZwq1fceoFM{0Q=m_}#TJ#JqVG4h0LxCf3f)PxB<=Y?$q=TV5Tv@o3nmBwgB69#MIi`5x$>?p2bFdzWzejJl^-)jU6o#{3(* zU^vOOVD;+VeZa(FFscvrN4rX0BqI*9K!X~!6=`9-AYzfZ2b17uvRw#WVxU{!JRNj$ zV39w5`W#8_)gH4n!uQRFKsh@@t9?{@B8&Q!#Eo|FeRl@~Xb?0s85Y3`QWXe11Sk2+ z7XEa4`od@9$vx+fzMsYpHfZK@q(S93vg|~foJ95qKt*`k&My9t#h3^SpLQ^>A^<#Q z&>&T8-SJc<#I6%s;2Y%+z5qAJtIT6*5{ZiQo__YPOOc(%!g2&WMk7h@5Aw~RwLnRh|uEw&J|EIM#juBtjiff>+;9Cm+CKpt zFxz5f zvqe%%`Dv8)cb>Kf-i@cL`5BY+2b7jq)j>YA3equIE$@QZ;AK&~P22jqAaHLJXIMiN z<)U+VC)UxYK2myhc&w@2NP)Vi4al^IBEg=~5q*~LtwG1l$@RH+Y{T8(w{2bvf3xCF z74#No+8ZuA7Vf`jgXKO0FI-6c5pH-$sEnmFlfW14Qev%8zHJO90#5^e8wvp`qAq@3 z>OF=XVO~0H653QQK6hLhdUPK?VZx@8KfL2uOhg_~Vj!)hM^He3<1zn*jG*e{3K>9M zES*Hkl=p`fo)0gv=kw=}e_ehqQZY%m)URJGz+uUuLn;EQmi+QoelLX6J#cW$ z?N@L=R`jn4#81nTvRg>G?d*ia#88;r7Wk606XQFFbHhwo-W$tJnZYaPav_wkSfe6_ zxAotPp|B}PuB@whg)KU+CC0QzaR;2YOLl3c6L>KRL-0`PSFSw zO->a;YHkh;Nky8f_O0<(_NyO-gzzx*U#zndQqd#O0}IJZdH9I=H(*6gsd)(u+5WV{ z`gslw53|w%T!Urpl{NPAn7)Ut`<=e8wISJ1{W;7syxcmb8G?~70(t@gQj*A>2u@WY z442IbgDdw=hViFrR`1&`bVU=Ajc&-DNm$P>$e$0{1Iry9uzj)aR;3dzgHkclm=X#- z%XQWXQ+DezuL-A0=U?i@?rC&)Le0Bw_BHD`7h6x6H=39auQRF}uE2@ES?e3%L7CHx z>nm$O3Jxv$ceGvdz@uHHSn*%{ZqNsigg{C(4%NsfTQ+>G$fyuLENdB7CM2-;B?N>xP+jK_RHit-MO;p=l!L2Tq@`mw}e zt}zuwnmcjmT<%Kd?(8g7QcBRyLgvs$9VUI;kimW;UZ_V!A?DE36U4kBzB|Gi27|Sw zqhHZ6Vz5AUe#_M26G8}alalT_%1dROG3!;}3QA_rQZN&2-oX5d;f`!#3(ICOt#{L> zft-O5L=Ac7Vwl++vQ^#>8l}VFwiroU)=3$Z+4UvZfn}ylGr|5{O}p{0nargI^55tW z@cZjD@#|P8rf?oCzS;kHj5R%A{;}l`0SMo$t|;wk=-F<_Tm5WHlt|zdnWXM+2pV4B zo|(yAH?)|1z>_S?xR~B)@!r47h%c=PgfD@I>Yw}C8!otKe785QR}8B?8h$9;md;m` z1PiQQEy>-06XWssHyFqfwH$O`Nw%hHw2vNyX2*Q zFVfOknLJ52@RyXIM);g^7+G$1Jw4(668;V23D<{KgDrvgNz5FpQC=HaGb0{GPX5al z&$_&E7EMm>P9*64P|IyMGqn_5p_duoxSWkpsO>F>sO9ZxgSxojAF-~F8&r2!bNzH9 zj<0-IH>jF>%JlhO+P>M-fdkk`eX(sf+enkgVppe4U4K#E`WjF=?5Iw$pxEph1C+vL zP_pG%g-xz*!8xHHKPP6mEw89R7=#lp34h@fiQZmMJfUNkLX{V%<;26}jVwNPoDMbO zh;)9Gs9SB+ke6xkSw%YH$L?@k_4UP73#q@IiQ;PwNyV3)>n(CBE(T?FsuI~nop;7} zN8=yQe_d?SW|btclq5kHO=!ngTGbREBHj&|C|Ex^baaxV-sE<5YrDC>TE2C1B(gL8 z>&5sTbLa&UPG*Z=-er|tllG#$+htJ4t^sxN?VE0yFV8I~%F|GTy4GG=LVJp?tGLG2 zTh2-y%aK#0IAjCmkZehTVyb&XX|TP*+5A@XpZ(RgBOYQEh7tU$Q8ob5@5Z_-Haoa1 zNGMnUF#;h}8ciTljF^wgq9ww6%`9>^e8qaw<;wk3}-3G!|JRR#1Api9wXs zw>2;sSwgmye8qWu+-=Fd$SK4a@Y^35mudM3@k*mX zbRU9>bzKFl3%1tsZ?|>oVB|R>%_-lTTc`sb=#=vF{7r|V12KN&KH_fduLQ~KM|zZR zG88t!wh7M}YN2BRg$gvshm7I;dKiD*OK=f`v@Aum;2nVz zAA#VQdBkjhvqvU89pQ)UXWJ#l*OZDRsDQ#me%141;%0=U%BLI-l@Y&olJsOr<%*St zBa)kuhScA`HZw0<)Czrc!lO)Y6xrMAw@R*MQnTsoeK0-MK1uohDXZ&@G4Dq+%TtQG z5^imO%^d-p5?q|f#uI_+f|tVNh}Lu=zL1daSjW!T60k;Tv|d7z$(SxWDLrO~1OKb? z5v!$=-<(+B@&6f!&Oc0ILrh0`1Hvm)OmLLbvhX}f2b@ih=vyU^6lHJ--?*yKNCe8OtH(c|6!o|(!FmRmypryCF?6~LD9oubY_>t1?{b`_q zuJ*^U(?-`?-Vfw?rsEw?G#X7r(b+UpNVZdAxZsKq2S@(>MK_9hO@ zh;b15WWUH@pE4rH;*@90`u!BQh-{PIv3GaMXP?dXF$rNk1t3+_!fdSnzk1WgL@s zMDMB6*rvfGi+fA_%d;%+>;!7J-TaiReYtLztT1WHG0o_p8LH_l`%CUJNw^|FH~1X2 zAI|SA^R&?MzWS#6u3@F_qmjAwQ@d=uMg^$rn{ZCpC>s?izmW*wEi3jJnP2GgSdR2 z^Coe`do+w87!1{zLH(9ceNnye1COG)zx;M$dktV@j7Vf-RF=8 zPZ3+9CtUtHCz@ius!ONAJ;#mTF21?Bh}j0%T}~UTi%Qq#iOAs>v%l3b$b%)Q%A9S3 zY?bE?D3seBRY&mA1v@wz0Z1#britibl#ZLjA%Bu;hvqhZ(umCMxz9x6k4p*;noGxj zD6akR-5l`*7hRqh*XEYj9*^K*`~zYTtpR;DGQCxE;Y3y7hH2+NqK+RaN^R``A_Vx~ zJ|r*pH0;U`Exh*gJQP_|@}pQ=9W5@Zfu5|xZmL;V{GMhsRWjy z$D%c}5CLlMxzEvJiRH(BiF~3u@ebB6CunDW>d3jOu07ZDrLKEAdWX6(y!KcYZr*xQ zH}PEe>{Z~z*4f&(VD-Z59Je2vKX@h9z6Q%`MD_*HIXF=-GKs%pelx7cT=vF z=d+S!A3abjYyq{7I_bW?41SBcU0uCTf&&k6qsQO}tdTK_vL$kC9_7bU@e3HVA3lU( z@Wzk4AXdSm!sle=^ROTI;E98YPryq_fDs-FG{VvC0i4{3Bx~HSch%48eK-0rq(%xoc2@I_!(FxM z5)ukB+Ymt+4fVcrMbrA$r$2iCm0X)h>^m*>dtX^3izI9j%uAV{=Dhebm5fICA3vE* zRSc=eON(=etpG=P3g;7Gfwm^KJ%k~dKT?#!Au-O*%lywLNB+MSlnE9T!Q{0L*U>6p zi+n8+3mp5Je3on-jt=7?CJKRvb=Z=vSFFWH9RZ@Nu5TTFrVM85*94hKS*B6{*?;n> z+)L|MTSYfV${5#D%u`iyj#QW{Ls0wYwZ+a!tl+;N)V5Kjq%PK<%5}Y~D%zf{sfZo0 zMsPe?&XplOCuNq)Ff|{7a<<4er3>L`l-ZBet{E%0mT-?4$ZV`}bDpH4uA0u&Z%#=| zfNrQPF#vxy|3Fnk%0055kX1u;(Af!+S8u(@R!g157RtZ2bLKDiT8$O7R=Tx$-~Y9%9?#nb)1WlHYK!+=zBCA7J6tXs zU-9c-AA5`zvtN!-cx<10|2ljBYg27$>o!>YozsuM-RoCYEs^3}4MvGBLXE`_^#d>+J(F@ZWzA0c%k>g~DJzhHNr_D2wE51P3-1Zi+oA)&-9cmX7g? zN(Bx40i#RcZhG(1qn0KaLgZ{_3oTWn(9tc4X9^8{ZgTrLqr-H{uZoKJJ1(9>-OSJ@ zw_OcO)Db*A8+~AV@z=69)9m^OwHmM1rRpgs6#Yu@iCs|SRj?i&|GMZzRaJ?B8?|@6 zC-*gnf!nh~&tRo)e@~vfpt{A3?IsB;S}miqI+SRlZn=T+$9DhgyonRva8lAcX;t4N zNp#zC#k(-7OD_9EI-$rjk716UixW^68qBBu{kYHpFaVG-0~kTWRCzv1AgaZ@k4s{R z{$ODTPLVx~?$|h2%WweBJ|$cKLXxwXuADmoxU@Ua3NT-!sPZ(^$p;V-NX7&38R6!A z&~{)F%|){{!zdb$$BdNYhF$FX*IHqZgkKSmiTP^rixIH!Gw?Heu}f(Y3-iBB*=>RI z2@b&DNg50GM<6FSdloGYQVA?dG0<#bq?pY33_#dAfpsQrWVMY%HD1$g2j9~)b)ZlinP0mGR`zc zgj4=j-!;>QrU657Pj~B2m9_UD^U0j%%GBqNHdr|*^7pfJXDkWDIRn^^ZSo3()6`hn z{PXoJVZL9^No~u9ddlkcO@yA2|1lgYsR-N`5^!Pfv%+^i%)I@r!Y~oQmS<9Du+zw* zgcs5Gm1qpLKaBvJhrrYKX-`SJPv)Ia_Z^Q$M31gr?h0${P%#pt7s1!3sLNOgIF!s1 z^29!KVvv%z2o2PdpZyUcH9MumzfpwqbnDBCArC)8o5ldiRb8zs z0t2t8eI1-8-;A?ly9)H!Y_CY5%-&!6KDtK_pI|F{w=ie(5p{q2cc3o8Y?RYMTq(o( zpiY^uC*##S-O<}boy%A4PFDHb3-U*v_tz-xKgatYgZa;5vz>ykMXdt1QT|b=Z=1m@ zJXrBAt$pt$Mf!nP2CLq+XQg?5MC2gC^4|jIg%_$03!V)Ccoyntutko><2W?Vi*L-( zT+8|LfL6gp749$IRej0*bBw_5j+WvO^noJJ8&FV%JE#wG74ddjl-{V&XmU59 zRX&M;*_{zBviZGuN3d3=AQmAt9p1O$gRS7(M2B3eRlFI5BZI=Pjj`Il(Fpn$G0mW zv;|T(yMfUNg*qYz%?m|)xsXrHs?U~5iohAdCd0*I{K%j3nt8yLZ9<_zD8C_W9^k;I z!(heKHcKeA^a@FA0u`ez9l30Zhpdg5memohVgwX1jIyCH!tgLgeZ{e{`al6jjYWg9 zYHQLrQYM(+W~sR9r_NXA^yC2W_qh-(c;NR5`#5UZ+s@gFS? zhYWJ!ePF>*iHQHcFB(&;UF7`TA{<&oD8eRf6FM8cfyJFI0<(~kN>PX;Bnm}Vqk|-) zf4N~qDn$SSE|^C6(vHGQ65Gk^6y^@chh!TQ7x4{Y6GAY;?StNg_oJIrw*~CmBohGL z?R>TQUnDbn;G^t;v!S5^T(xdg+D|wKzC~KrUcc-_I`}aTbwilHh>>gpBTj zS3n>R^(q+TF#q3%b{POGM2ChWgs`6?)@WUtdSq0&SHj3RIi-y zyXz)2?z$0}ma6r_1l@m|-kflZgvqZmrzNH9b#5lstSQe@y>Sw;NQm~K%+f3GaO0rv zcA^P#6zzH!Mlh+2Hwb57IN^-M2QAM9HJq^13|_Fd&S;^e+l`x)mOS>LW4dz?ux zl>7$~jjwxk|^(@I;)9wY2Egb}e(x)czs?t+sJqihn95bDA*%`@H zial8nr3s|-13$_m8M};Z(-##~RryYO4%J&I#3HB~OPdEq&KrI`7Q(5M{IX|!d~fvo z+4tRXrMe0w-ouA4ijTL2>pBcAyJoh6o~TMB`MU+@>-k2}JPX2lTlG63n*{;q@5Q8( z>JRCB^k8YL*r+7K*Gt0ZMB;AS?8Yq(g)(bF-3-KnF+H|do>)@SY92a?O-RQ2j3ARU zUo|AWWWu_?x_X}Q2@IX3m|bH}B8f(9u1xNm{m_RpL4&P|%<0HwXW7{*&*4RzZzg5Z zn-f*+VIIX}V(iH8AOcNG@oX3$lECF+VjRT)A&#d|ka1L;)&A|R@r9mLC_*7g>d57n zs&>9k9G>cu&uEm4Qpy5epmH^8yS~kiJNo;r8B<*}#4Lc0Blp~>r4Po?=%Gy#_A?)zb-Ok6+qa9Fy?O+Z#W{`+LH3S1(|0LN@J{G+!#F)fO0 zK);r`or5Tj&85ACwCudnTd@%q{|FK1WZ1AId+eEnsZAuZe0I=Z_O4r`_=!BGTv#Xt znvr5e=8sDBVu2 zaI%n@C`+z$nh*#8Ckw$Bb)4JP>xZxZTFfXc{n^C2qJiJ1_m3-Zh#0tyg8pi4Of1Dc zty-ttXZ|wsZKB&KBkxMSYf>K{U`F$;^`~{_-;#(ziAU1^Jp{ezzw6NIA?ojKuM=Jn zDR&YI^-%_MYZwV8sRF%>s6Xl}cfDI%+opG;FWS`ModqsKC!`@VyT=a!C|J!pGkX~ zq?YqY)|{F~&68cW`H-t=;Mprp;s{9rGOM#`h}%sRa++0unF#LmWmpoq_}~M#@=hgZ@%1G%{A`gV?vt0|2#dxDK(25 zIP&|KO2sFRq4qbzShx-!)2CAB^~wWv>aUOAsF+-6mg9wOI$D2_O4cwcmy#}CXLJzN zm{bed>3k(=rM}$Fc{9ycSYC?eW4hjORpTS<*yC{ARaY>xETUyav6Sa`FAkPiTiISE zn=|=aVh1gCZYIp(pn=F=y$W_sLfsYg{hP17k?7q9NoK)cz&}AG!PKWrnnYd$K%*AB ze=;`Bw1J~mBqv@o`(vQgls4W6U+4!jg!b_S=b*(P0}ei%o(vxbu_g?p;(+ORgond& z9GW21?{kW%VEue0nK}9)e)vWB(zy5!F*zSR%x>&wCbZZ7AgL<2#1qeKjtl+O^5uip zel{iqZrPm{s(?SO5##c-ob8RdB*9wlHqvnY--!ctRJLvB??Gl`8uR~YFtP-u$bgiE zpn#%P8u+berz^Yx5=c$XavP}=&%(1niVIsG&I$TV==-(1n%XM^Cv|m8HA9|+N>2(? zboC}l#tZl}+#p7L|1CSARG||OD}1)-(mV?5oGzklbTUI>2JN$Z(n8%$KRE*?7ln5h z%YFlJ`7qjky~8{((6l=zx!sKg^;1aZp?+vO#M+8V@Y2c+5xU};)=sS&>fMh= zYv?Tq{B|<_2^~W%(!A!;W#-3!EnbNyF2=T3`%>Zb8YV5}_ns^5>Cr@T$JHj(^0f_0 zUr($Y=kZtDUe@-$V3SoUZ60^-Y<mvfdlDaYoC$0zNecOmE}iOJs;1WH+`=vH*(h>`JUK(w6VjZlkM*Z06tCA zci(4hxVGo4uK8H6@;@KfRBV32 zN$W>mIh+m!dg8K8LVzOkRE9{^Jv12Ulczgnyv3@9gdaYmF?=9g&_AP0ub7HxX}hyI zqG3{2lCpdRl*4-23gV;}R(Dcf7mIlJeQY>9VsSPc1>0P33{j1Dn+D zx@o4-Ftm6M+#_#>Pr-E=H3E=&Y^vTnDc(B+Rp899ckaLe!Tj*ADFZXOZW4VX_mv*o z)K(Uy@HR7EPmJZ_^WbFHNaxxwP>Fj42s@$U62I9vsQPt(h31${#&teJ!=dl#4A!)0 zLbo-+_euBF|4!*W>eTGthLj%a?ih`&1R%zf?~6jvmcCAB_d4s!9#|YNfY8f zlYXmGpg=ouqV4V6&Yv=Cq#VtA}9Jb32!D`wUpa@mVB2nXYh;<{O(+~H=WG3 zeo;RerE2$25{Un-7SM6`=3eYjsB59aes!+L@T>l+mB@J@hRd@gt0K!gQ`EUUI%CuFuGy*jsz@P(O!P5KTH!O}$4^8h^tk zN}5rx+$k;VxeMHa<}EU<4J~|ZB|pWQ-(eh~7L55>Rq7-!pO8(_^W!eU5^*`b&i_Uk z;d<`0k=*A0RPKIKU-oCXkCS)pyz_Qi$~@O z>HS6bU$rss?1bFFLKXBdpr!6Ja5`T@KIO-J{7%coR9w=pV?O^u;ScPY|aoxeGUUAj-g6I^5e@qg7b@>U$JL939n{W5sIE>t#kY zEIm3F(grPQl#(m&=rYucXu5wP>Tb5@^gSv^XvaqFB8?J?@u z7=hnvxJN>0;b>kpcQXo9Jv{GPOczn>H~;D=6iPo%O`m;~Q_Ei|0VmqgO9dm1H;fGK zApa%L8hA{&W5f|Kp{J(ctuPUxY{!!YrYy>QC!mYI{D z!chMala{7d99H|0$Yz1mE6mS@Bn-XH^{Q4g-4CL<72kI1$DGBv+$o$oJN9vX?}QHy zo>qiB6;jlpw_a=ZIh%|+Pdc&6dn%HUE9B?D>v!A>|tD+`TZ~VGQyu6{roSR?$G|6x5Z9ubp zW_oulOL)?j2|IJGV#BwpJE3*0z^q%f`pq95y$Ak%JsqXVS=&{{wn|xUa^Z~|O(7X@ zv~$$g-Z!JoS;7DKQ$es+pP^J1o_)fdXhw+DBlxghQ(8|Ll8!McshAQWZ+a*-v3uBL zvuiSED`UxMT%i$<9+5v*8HvxV8tRs*+DWLd8lk2tZ7ebPeVZ*=HU~5Gp(lhURjzn9 z`PH^SSqB@9%FiqJHT*Oe&zaXz<3Ei84mMBr$Ud&Q5yY3gV44%{7B+g${O#QPfryji z-m9tQPo&>vw02R`exe`)^EoFvg~G(6_m)KM#|3r@zSRk^YRA-t&d^!YO7YQl09nDT54G|M?t>8Z#A#)HXYgmaa)0%}|Ud!3U zhNqWSXnT5fx-Tm18PailYa?6zGiwNJwe=m6S$A)^3_Ye(xDv3m+!wFE4Suz9lhU;| zxZT}Qq0)EdqjwQg!>Ne_sTx~IMf#`opYj&Ve3UM>!_M&wS9@Em>`-p(KzO=TVW&~4 z)gx|sDsdJPE;t(AlKk5_NKwYPLVWMp{HMYeh3YAa3Y!<^m1Tdwdx{u}^AQD!Jzl=F zRDb2k0k^g6_HC-AxwNdgs2cqB`qbgPyr=%Swe;l|8;-OkaoX?~GdGon*glBRpKu4l z57(5LFBw#3#iFszl6<{M7WpJiFZCybQR-V8!7e;7+y>;tBG7eAs#7dq{r<#Qoz{HVv-(HIp-|-U#25Ryp?A)O z8i;=eT1BRZ7|z_{Q-hj{|5Ifp;nI3~%Imq4`JXClC@q$<%e3r+e#*tu$YL3WBefMm6L5=A2#YidhjcFZ)ga?lB zx!8D@{DtJHJ9m+?q0#45k~6R&R%Kg$gq4i6434g4Buk4iRth$&e3ydKpj64iKLf1; zq}CeGZ*ge8(n|i1pO+*=OXxBR36uhiwnzXlBqp4rksXKxOD^lA4-vHYy%YOg+AQEhlH;r%j;X1~U1AyzLcG!{J^4QlUH z;Ik)?{M2E>kB%lUu9E3TyI^DWz*5dlK+XF1FSgS{W)lULLgVPU5;RfAn(`SIu7*Y? z>pphcsc|=hoILliWv6d{O{q=JpVY0Vyvs253-sj9?8=_v_OW==Df(%vduEVEXv_EW zH8Gz>y#z%S8>e0EtL1mQ{cN~<{AAsH%t)IBy|Z}uLP(Qu@PrH|?ftv1kE!V3T|V5X z2>wZb(+9@6`=q-9iu=O5KHs}-)aCS3qhaZ_+~h`F*%0Y@SLc`R?jxd5S+rTAcAr_d zD?MIm2FZc+aMLQ>%3PInI;RSYs$nZEcqO0YPTM6tdPYLKpTqZei35b$fF+zzrOBu9 z1qAQ=l1_qemfDqZq*nI)OBe%dY0D!P8DlnMe^QJ{^b&AF#y_23#5<7XU;eub;3(S6 z2e}~tTKNA~%b6G&wEpB1f(H8Egy|AzQ%ekfkIP-oAeo@yW`8vv9@c?%d~l-yGL?Ro&(&{T+&SqEROD zezmkOf5hO|_3cc+^7p1m3-DFDoP>fy%-FsLYg=ZzDBHffr7>rPbt|Il#hIHu{%vAE7 zGyG@SEZfrvb=jcV{N2NZI1M2jYcb>6-zRB&^yQK^2Dk0vJ^7uD&-@I$w;V4+4y{^O zx>{>q6slBLc9t>YNK759meDLunXUdhn|AUQ7Wf65GP=5N`*HbGPoh@a5ef^;H*2fW zdi?RXjp0|qiq~b|RX!vd zygt;^Wag0P&qXmh9dGs2gq3oAl#u&A`*JD9grw9?^h>Nufv78qle*{Rxr&J6zLzxIr3;2(d4|C}xu0}9mgcNa zpI$|pUB3`6{}CtjsM)yA4DkTfK^^t^9aRra=RjcnQn~f~(j2AF-osNzDRvKL_b=5$ z&yM<>L%b#VqPf<>b`TlLOWUijxm*4JcD&MIB2DLICc&s5d#S(Q7uaFDfjX>rL!mT; zDle*Y&uuSf?mZuUl#||DCB+_^qy^9T&04l3_|S;`7K1m)&+ceV3KGTxbGrQOj{%-{M8VPN+(6|Q=2FE|R6A6d~ z(SuTOgok^DwRy=?8T8Gz^oR`2Y|!+Nwp(+ z@oGEcnhU^9r+#ZF9`9F+?5z9`7Q6`30RRIXEuIk9IT|n>20lRH_(Z%r#sf%RN#+5x zl-Z^zX{7nf>}&*jT||SD;4q*5#R%N{wK*I~NGJxC>3prqDTfYr%CP^BrK^mJvg@J` zLpYQI0uCwN-Q6A1Ez(_rGy+3+H%LfHcSwVjgwoyJpi+|a4Zh!93)X_g59Xe8YoERM zQ7r+`1ESS2p5xaJywmI1V896%qZC^x?;{Hqqd*D>U8j%_5ieR(oJOcYAoCGG#=@au zL1pcxLqQ>E7B?1M@3QjG#kQlOs3{@Y^o)VO(=)<8FF)yZkA5%S?mMAU7@V zFv-HM=%E^KEMueHZ}#o3VD!XZ7^7JjJQMznGq}+S-0I~2BWw8DrF!&aCD)yE%KK=T z5_UK{_J}Mw<8MbIL84IcT}XS#a(>MEUT3Pv2KFduEBY9T01o@)?h2n-z~-|wUE0N# z_9&9jAM!VR=5Id+>#ikXG?e^Q?F+$df#3*PiOaBnzyMeq9W@}PH-vpgoUOZPjfreJ z)dWlxm`;s}WE8jnU?GaQQpM9%1r7h=qr{Wc4JiH=gd%2%6@#nA1R!@H>wgu>Vl&UK ztJNh3hI$-rCLPoW2@*8Aj%$D*9FNjJUow3uk2}n*kb6D5{&uJF6M3#_>%1)3PR#M< z_j~y6AMYyfExW4ci>L2?Lfd&Rv;IZRuCCbjrj$onSY25KxyL!JY^szdqv+>x%HB7Y zDXNK&)PHS9{?weDdtUc3oeO&y{bfmYde)dOA}^b^=af~ijAppL? zMDzbA^f3=8G^lciBYF4@jreHNN3nrQ%kghCyT@KUSI1aM8vT1ALuM@&xh|j3$vM6S z7UssUhbYjab8TReX?k*)B9#F^MnfPD3f}@7&hJbLWU+!!r9~=aWO3Hi3UaW8I5Zz5 z7e-_#y{QooN~}i#&>4aj#`%Y$KtmZH#nwL&N|_^nVSE|5fhq(OotX~u9DVKO5Xzmz zW*0xwruHkxbLH>1%Vr|yzh|S|(eHQ~o&eK50Bm7A{iJ=uS%+M70|2E~gvyiaXZe5S z!OdC%yHXA3MS%uRm+!|ciK#%O!n)jZR(66|EpPIJa;1lMuidwnNU*n+{@LGH)qH9O z)o1IALg##33XRLm5QeLVOA9Ku_V`~9q8rTko_qSl=D8fw`!&NJ&K_r&QJipDkLXxX zRNzy16$odYBj1zX308D$Bk;_4aJ%_>U$E!=$rSXBn=SG+H1KvkI(*25^H$Iikaa3N zuHnK%j0h1iqDgGfJJ!cYAN|*Vo7c|<9U`L3v5RRASh0uVFh%lgxp$h#j zFQ$fB@e-oum%;UgFyDo6vM?CbjYtXxr8}EXD%(t{is8~B8G|tTgVpVU`u;-vPV-=} zc$Ng}V#nt1Ua)I-K3WI?C=Xg3`Ai=rKFtIXk|l4HKo?jk+f*daB5|mG7l+`t5v$`u z9Z$&^bg(|77rhPXw)?SW_hQQlJ7!YyoOdO1;;S_Cjgs1uJEaDD*^N*5&&{Oiss|5~ zn%24!M`faDRU5YkuoZ)qtvBV8da#8mjrxL8XB+|4jIRvDG4kN%}G;kW~6Wq6eYnPja_&(;3k_dp&0jI;GI(+q4I7gmU#`R zp;sziPBK`o2LJ^y=TVEnrRCjl-6eR{MAHur(X$%=^O>cj4^e)~xT^moNfhTHVl86p zJ>7ccS5$_98f)D)$vZc$%2ncM?q?(K4OJyd8xD|0E}ylP`-xW^E10PBPV_cM%XrKe)%!Ttz{_XV%+_((>r(Cg81#{XU!Ugb~RQE zuk&VVnF}1$^1>b{;3WreBGXEM4C^^h+S-ie1qSORlg3KYyjI{IrA8!ffOiF&&4Q= zgXjZ$23naiATnt*c$Bl43?@q9auD2Nt(H%8)}I4k5d4bR&nVjFu^B0}Knah+3+4<` z4N)4=Z(*!A6G=A~;NhN`Ho=(cezTHUn;t-~PBeW=4B7IU2A(8pT;tyFjB zP_$f7of8oCoK#&hO+I-OieYUpBQS4X8r-Ib7&)6KFk@rJ-h472B3ARUwt9TvZTiX4 zQX7rCS-e5=vTg{=N%xz~i`35O97rgQU{=#sSM|#Wu?MNkQq57Uyr`@8eB0UUn>{OL z7mnYOxQS>?FmKput;wMlefZ3b|85uIf+$>Gt4kILpG#njV4}_HbVT&x@1p+Ln!sOPG4 zJG1(l8gH_av`r21wbXwn;AKlp<7KAtJA6^Bn=_=rIPRz%mO1ULVbL?Yu~@NKTC7}L z9C=-@h#miPsnN8`VED^X*2u?Ih<16}R;-aae0AUY9BEezTBf>J3Eq3HSm=8nTO}SE z2<_^h`KOd?SY4JrNs7+^R3wWh8&fFVf2}ZHNgHWA!1-|nPzoI=090RlKGqIbF0R~u zRjBkJ{@qL5IO@St+|~;c=!)GUGE$4vEF%S8BepzWI3p`c^C>V=h@wYtUxZ1owa2{s zVl9(<=i|HP@cQu5@RqV1f$M9V3jngtSbJHMJOx&5Fq42lYgJwL?HQ0h59`~Mt>_(! zDtut#8&##qIewevK8tX?HwGVptcpURUHZDEtATDXIwvAXjp z((~)FiG`H9oSCHFLZ!%ck|!M{3P3ipVJW1T&nqAQ!b9X7(h>E5&w6+(8F}@%4V!}> znky?)OR5Z2t8XEIeXQdpK`A2mwUS)V*0bsw6fQFC#D$|zeQLikk}D-ygsTfqhgFb& zl91A-phY$*;A**yGAIZ9Hf9)J@qTz2m;)M}i~0sPh%X?>h?IAh_p?Z&)gx#fXGLn! zsLEFNv-R@bbW0)|;;qL~^dtZI?qtYx6b{OBcou#qJn?`lGDDjB&0O=Jd%p5}49|T& z(gp&XWaf&!Q2ZiVPHXi9FT)FU&AEMBp3|4V0Y8GZE%Lt!rbE0 zBW(1j1OcC?0IxwD0Hb{g96j({jf?6R0rDU}1*W-F4vKhUe5B*9J!<;EHyqX+ z`Kq7q#6Y1G)VLXi8=*>6!L1IfgdCF7LrZ}hFQPL8A?EDk-LbBq>$ZxA3{ejE9!&Kz z-8&@<^)%|m_FG={wFIy#zndq098VRJt--6pSd(DkvRcdJMiK!?%7LO_Bh$xRYaFBJ z3S02EU5)t|fGlC5_5immq=Ei3$$YI$4|hAq0d}AibMOFl-F`jSdnD>&O;w&rQ#WeM zwdWIZFk!pk`B@u>61ZzAI!s6+40};q=FAI-0RX7wQh>5nCvt)MLGm&+^^Qf0@qTMD zx_+ryX!oEtRR84s#WHWzZ_WHdOw-7{Dwx&??9=igHUH{z5`YXPSR_v|V^`z^sGu@6 zHE3q2ov5ge8)>L6b^T@>R~2TRoAi*^9OE!r8?t9WAKBh?vXxHhIyc1+#00&K-nAR6 zR^OkFLvF}~J0ss4$1LLTX)fh!gQWjOIZ4+BI}cnEM|3+B8maAm%fC;@`Fdk3@fSC~pdOr#nccgNG_Tv+h>znFptit-ODBiZ(iV z%dT*jpAskS<9fbkR`1$u<7w(e!hReu_ZG3qOuD@5OquP1UFlev3F>ss)qr!#ije?p zQ11J0$K6|lVFb?Ws+Q6EpXyxd05YaW^$Oca#P^H$?0TM)i_?7=3#O{U2chW8>0;~M zz<~)$U25VfFW4*Ntp%%VrI?}Kp@UOW9EKo`PyP(yw~ulrc=TtTFC2+F)cr9o)AqQ% z)d(X;KJOm(C41dl#!KrIE$W#okdcckQ>rxjK~rd!2)<3D{|)XJs{HLGRY%+f`B-2R zNlfLIn)Ndd1%+Z*Q#yUSl_$thn9xI(#}#q!1ObXt&9oTx{2vJ1YiTR zz5UL&MQra}WD|PPNs1!gEw2fFqq+13?j*M+Hz#T;`u;=YE$PfNY+upnOUVXmOheAT zglxB0kTAka7~i11RpNw5n?ZD$PW8KPHFA3e_uwRi5cbv3Vq^Y#>Hb>e9$F;hij2>J z1@Eb-*KM*CIQwhUA3l0~(VnB_SjZ2PKKY)E&Y*s3VELZwCwLfg{AMo8)RLL#)9TUC zL*sSEb(DXM*=r`R2s9hsm_^@yfGZpUcB_W>zC2|@Wx82S<<1|z-ToUT03d;f6%Jq^ zAixE1*jiI5ct6s)`47IIYEh<{N9jnh zBGTiHYd$A_%Fjbm>V5WI2Se_wHQ)W;Hx^1G&={NjWnu}^zR+kSIW$*Y5d>}|LP$Dl z8dosYXSN<`Wj?V!K)m}T#)mKwAp%74^}U$|J`4KH^RdDc;0AW`pXVn`+Wm`ZUc)I<=022f$};QpE<*zU#C#CTYlJsLt})*S zo?%%}KRB#|iMqi}d2r>jaF+BFNu}^V$kc}%_vHtEDcl(Yn~a&r>*MY>lzJYB#%u8N3cQ0`3?gIW+(g>(ip#T zu4500vKzk`ME}R?`xM~0VL%N4eC_~1iUt~5%b3AmI3x;3%C|7gV_ibPiWJx(vIF|h z39KpBfe>+HuNde6E;1@ou()dqYcC#~Gy-KnPmDfi7uR=fwlK}nDFh~3E)AtVN&Jfb zSGYjpZXqjETA#!31;v(O^vIlY%d=V+!)8Z~U)gvmve(B14QoDE3k!~s z6%Q|egy3Oh63MjLrmFvHt-=i%P3kAdV>-jvts)PTba8hg9cE<-76LChMl5>fV?C7A z_ef3cBoYd}KQ)}iO|O^z35gb+h-Mqa@E39kaHz4xH>6+lzqw>@fx-QzhqAR?nr{dM zACsFEA`k558zp}Z4y#+c{+eS{Tu7}-);vQ$_SRqaV#X4d1FMfZrbZV$*fPv~fyrY5 z?36Z=#sC=*bgYVnq@}D9!Yv@Qf>B^O9BZV)c{7SBiGc+fmBM;SBN7z3OA5k7mWK9y z4x)Y@{Sk@1P-%#34FMUHL{J9iu#g~dr+~)b)hn%dk%SG1CG=Wa1w6gER-veLmg=V; z!~j0%Kdn4v*L9w2IqsQUtX2!5Pz4Pyun zDJ3j#845>&I1z9I>xANN5oaQYUT#n#xL77jsC}D9_nZA5)T+}`Y)FzK&SrObCoy@6 zGqpbwS*y3}s6_Jn{R+5(9QO0=y<}41XYCQjL`7z4idZC2(e)fv@6SJGuR<3MjEv)5 z>onB6nA_i{*qgX4+6@26!X0rg?6t2GkM8=_EQ%kPH~LxuonQ}^;e!g|wrbJs2;>d%*7A9AZJ?wETSAQuBl=rL$nT-3jPv{*)_-Kz;Xd3}?(P^kaVr%CHC3oj`}f zC0VQ2YlquLc2F{GJ}Bi)kdYHpLQ_ZIu>ULM?+KuB?u*H(HpdtMDqfJycl^I?1nA)pjL&~ROK1<+iJE+YX;1VU^3GeTT&xxn~fdTi0 zMSey=y6VI}ADaTj^WdbO{o=qXD&7fm2j{zDbgupDRQ%G zx{c8`srtS)f4KCp!zDI4js?4Oc}7O`0`ZB~MxWkX*H9D*D@`9KZf`Qxb@6{@2N&^Yg z?<)_$`tKslW=y7Sn8$PHQ%OyIzxewgExTt}$fZQ4goP4%6lIRkb zQ`2E)I9KF7SG0dB#wvfzr~WB+w<$IH>%z)$rDuXckGA88cHmBM zIIOxZ_jCUj`0vjsxSRzmf!IV=Lujpr9M{`|$w3r{9vBTNZjCekOHNsM8l5bgW-JzVO@h2&BK5a22b@nfHDr%N^kdgDYG?w>s)Y+(ICR1+`p~&@62F~9P-IA>~ zx!4+ocPMCRCG+Nph~y}f^`Y?^ay0}BxH4)N0W7V_l<)g!%qx?JwBpTXj$bkel%hn) z6yi^aKMG1?&_mJOxQ zg(rrjb+VL&B+^crgdxW_2@OSDd2q;4$%siv_(Yjr1}R&B96_RV#8jI*O?V1b?edoA zKoW6d)|g@hon`E(+^Z$k?-u;x*=d5G54^qzXF_?~=kC%XZx3OzwtlT0JQu#NH(`ge ztEq>&LJKVvN&v_!Ryt-9T%8z)gHM9o1JEfKqU7YvFJ_Pdh59Ke^; zVb!stA`K??doGI|npE`$k6BIn$JSYC1INS*h;e_Rh*yC_1qUnUgRlKEvN{y;qVrVH zvd{WNIhhr{yrc_I)c(k7eyY$A@U*MGtE26k9TB)(6 zz8G-_s~%aNB7q&V8Nfv-jaQaYbu>F1oE_gI-A%H7fp6@JReMnSD^5IfAmfus91WMA z|Hn{Nl>0$;#yzl7OCml7(3lhnFQ#=pR+&8c`7<5vnI>x?o#UqRt3@rxOpzR zGvsz0xc8$5OcXQzCiJ{no>H>1-$@Uj_WHf8)H2F+yQqbmA*)%8Q>IuYE6#}}i$T@G zfK^&4hhvDV>4t807*N_3rC<`88m>EbPUcH6vP9;R{S4uurf=q?S)2jlD!l<+)5RY# z7-p!fbarjijJx~0UN>Lib_FHh5BkF5`=!+4jeVpcYpM#Lw&6ZSpZrytRJBHbfiG2t zF~ZWzMTvuF^G-(o{=WX~wr*45$bwQzIm*{JJSe2)HYrCx84+)~P<9K2t2S|vZ!Ke)l7=Q1Z-Au;Wg;TWSMP zXw%;`Y7a4Rg7;?H42Y64jzdW3-%?~uSJUOE;NB@@=bJVSIt7)W+P>3s7$;}OyBWJk zC?fc=h}b;Tv@M}qZ&;33+4a}scaHO_PiBY!ea`Y^Ydo0zZ5g0i>Q6Nth&&<0vz_`| zJ*shr$}PozZ3YHMp&sCFKb?)CkIMsG(NKU1te0FHt8W^sL;{ww&8H+#nhGX%wHTF% zJi@zZF8hJPg#S0vqS$J5cl+AJZ|IeK6y-}HaQvo7Wyj*u=jl}g9f%6n4g;GJdNdUs zdAl+@b^CsYCj?dAlT#;*#w2|84fUoO+VcOQ#L^WR}982#i4XS3I3o+WU6 z=qd=%g4OXNL@&3n#HNUdKV`xOkm_Nna?Z;Ao;vTp?!hYo;>R8A-@Ty}a8)|s=mCSP zovsaFxAriP=7~dTqsOx_2UP&i8euIG7b$sm=v`a%w_t`^R1NH`N}krzJ25{HkM(O-yULjCt5vQs-m(yn%?=1Y_@Bb%1wVgvI-0=5z=8-a0dYdf5>?dH_%F$ zE9)h-UuzIeJNfRu;L%!4XvV)y1HFi+sn)29O-ou19cgcSqhXIrWSZMA8tg%M=iY9@ z>_3VZ>0PxWAIVG6+-$FTjr5DGnjH2Cbm<8tNd ziu1N2pTfVb)1@m9!1R}r)DS{a0_ipYSe9h+3yZd|Ld`fNqc4Ku$tJ#Z@1L=q;kIz% zvqw@{gr-_I=V1kkVTdEOn4tG(AR+mUV^x;^X^x**QV30KOQ(vSvNg=<4<2}h_;HkZ zCVEKwdmI6+bou8hBFqbEEt*4NWM3h@?Hs{74Hu5~4>^m5U86K|;_c6j;!PjxS*p+$ zmzUqXLSEsjq?}9o(X#vPpoAsa;^q66VJxb$z&p%Py1wH$DX?q=9UaSCp2R<9%)uXI z?j4l=bnIW{Ep8(&gq%G@F_&b~6s7j(M`>BfbeXlMEY6_b-gbGcwN|gWz$C78idxH0 z+amn)kWw(XLOta+&5*!PnQ#Q)y|hsC!QgVCG5*&*n9!|2KI48h?SxoprcC{YXP|rT9znaKmU*5x3CM9n%;=$x4>t zNQ;xmVe?gG?rPhT&`hOKeI;zQc<}mujOk|4V9tJaM6`0%Xi(&csqMZ|$LH2T!|C#N z#=h>foK5}?uTyxV0L(y!|61iM%C``aKg!2<{ zEzo9Sl7~Rk#Lyj}jsgJz#H3C?GV|hW>WPuq5IYm3K@ywM&;kYw1%v<&+u=-28Kedz ztC+w*>^^p&Pa@h&95qS3Z!`c0oNi7FJqkn+KW%h%3?pFtV5!3Ixfm3?*i2jNf`n@q zjX;ifq?hl%wrJpp_;XL&Z!@XRbvlXf&lvQzrzC5V&}`{JrNpZI$IiY!mP}=$F#Tgx zu#IcOxeM)&o2b=6MqUp|Q^YWiRNagSc9e$GuJ=@0M>dInDHFqkr`@ddvNBR_i|%e` zDlX1i6J#H5n!W$ILf-?(ckgB%tN?f`tADQ0G{4itpO7*GfHDnU=TWna)Jdt7yqE+B zXBnpFH$tizs~{_|^O*X_Zo*SJBsj=&tg$~FU2qBCH{Zlv`@;>ON&zG$DFEe1BOry( z^-dBzjEMFu2~lN=N_h+S(^lx{1~~(+g>^WScm^3!00JV=z5W%Ai3Gxhnl6J2;ekkv zyth}4a%!^Xn>Zg}E#r3BU|i#PA=rM>jRZNsH4>c{4LW0@3A z_UJ@TQ9njIwO6|m_X9=4w(mSGg5r?UK1SAtyv7NcOqtshI z@*cOpB9tPbD^)+mquH$xOS1im#lNStIKcO7;j@Wv)e>vR35iReUvDAGD$nM*Q{2-yJaolWT1w5*w?Kq?r*t4C+WaN`IbP{kQ!E-jv0d#`{DPw>!EOF`A zFAna-Pm1&bw1k*>TQrV!+cVP6s2gN<`Y*Ij)At+3(zWn)@MD^#7T@cl^?xI9wlPGN zC6e7prPAN?TUL;73a64k$kh3%$vZ6jJ6RxB*ak86Zs4@VN${-)tEl6$$fG3AjXgsq zr#9QNo@++(i2j{Q7;g^lg=;#O#3EUO63NZSY6fMU+HCnEcCU_>;nMOcnWCkRu4RE+ z(S-075$)c+8G~_bco0a${WxJ=wI1&NQ?R3Jn$_y^1Nf6uc^D3%dawZq(){ZQSC#LF zpKB$B<8nA}3ZkdH#&!Fto{svydty9j`WLUYXV8v>vl@#fPJUmji*Lo!5_=BC+{Rb_ zCh?dse)o~w%zN7_6ZP_GzSZ(fef;0o3T*@CZFiGRcLN)yRSGh9QtfYgkq7j3@aBS; z3~hDW?gAHwFpCpKeL;(zoSvGOZFszq`drqkwYJh}TE*2RIs={T*A-Tyt~7ix9^^>L z0Mhlg_lU29z=XuN5bm}5s}E~;qA=Lu)3*m>aFiH;fP}pDj5Q!u>_bdYUKj@k4&`%g z9F?HVxwozZ()i#0lUOns67!|*NT>0sjedRgoS6fChK5e(H#BOK=C*ve z7Svg~B@4cz!}pk@C!rOmA(BB66lYobXL51Eo3<3MKMDH^v?_%$^ZfrSMY5SpU-&SwQb19=efff2Nnb>m8r(PR zEQ$S5*LXH)$;nh|pd%o7H>Nc}i4&&~Ij4GpR=VT;Rnc0yVGlp7L~-On>q}8?LVv;w zR<65=Nv6AZYCQ3XK^}@~LXVkgx~(cZI4EfNPG5Qr7nr@j_?}_u)%uxbv5!2qqt!^0 zk%)nICsQSJ_Yp!i8wn4k-Qe-jT7X^L`NK|Ocf1c`D0bjN;H5mCpbT&V0jK{thy_yD z!WvPF`fejN*;>jPPf^g5j1=3k-X!w7<5GkkK^L9%s0-h8PLA zU6i)vd_*t(%P${S(p+^OXJIoBwg6X}6&qHPvf@%i#8xy~vJ^OYavTZi5&J1X<3RF- z{`8Z{AI18=<`K9pampv{WBb0qzwT++1BAaFwO)!?E3)sn6)8TFq)x6Ds2R&8sAg<| ztZy7yoz)7%rBxB~9C=&h469@NQ#3NpsdX&VC@xjF8j_ik)FZUr^Orcsp9ej; z{Q+@}5A`AF{9j8YzjZOQRuaBsK?lXBiI=#{2P&dZbx=Z5;$(^L`A%Yo_#-@aGG#ls zd$%m8Ek1$%79QA9=#-i1pNZfRZJ9F7uF*RvE>n!QEGJzI;X+bS0yrlh=(aGTh4#n~ z<(nT*7;mrlXRMB|$qybYg;u-fV3&f$0MFNAQ-(|Dr2`D3Uv*Cx#t{Gy%XG@eM(UQ} zzegl)X^QMg&6IT(VEP1LC0alOEdlZ8R5Lm_pWA6c*+ z`J#JB=}+w19+}r}{8&sB`$AbsfE{(bL>f(_p4AtO^6B?+v#bK-@5ZH8{O$LrsLpqa zA`z&Zs&m^FAU8`zpB%ppe_dF<-Xm}8U7N3Z{Kzdj`%x!nv7bX1DvKyEF{-xt9Sjxo zS2<<8U0~`pTf?OPS;6t}`ZA}OHLn1_{8ah5phJ42-SUP8*vDlS;lhuxYX( zcbvH79$6}T+a=Q0gu-?D}klgMSB-4LU*;W2ZiG+?@-`FQv0 z&7n?zQ9o7&t)i8AT2tiWg%9cJa8i}%2k(uw+Ej9|yh{3>4ks&=Vo??NHuAHKM3paV zSM~M}IFz4J>O9=x-Euj-vVbXE2rdqmSC=GqcHj$Z0Wu+J9~dte&t`k-TIHo>Wy->k z^pV6ukZ7XBo*_u;nRpZvaOKsg6Rx{<(hB*Gwx`qVVXOS25Ff$TE!Hi6o=2sa?>p9~ z5G^LRDYhYnEvJC;3N^QsEIHrBzCe%puPxS}UQDaxyVD;}OZ67eEH{|EQ{uGdGzN#j zLyrUR`*#BID5?H06WnEP91`7TixMo$KE=GdiVSmY$%6ZjU8KQwESK??IGoinG%WoJ z2S#_+f}=E%n>7y6i9gnKDTle9`8e7gsQYxdxm#Sr&VN4!DO$k}?c5on4z_&U01Aa& z32K;;``OKrJ%)=ku_gpnZv2&y1lU~R58ZQos>VJ9eZmCQJvTD?{dca?9MLoOsA=L(*2}qfh@m7(eEbCxrlH6= z3OG1qdeYIv#-GQ9!V_f;^p7)wh8FNQueIC>2TR$W0(1_=t=5|KQQ~Z66#G|oz&Xj4 zJz;a+{{;NQnlbYvQu!BqN_pw@v{Wz;D$A>ugg%xvFPk+(X0Tr`jT(OO){%PSX!Jwx zHHFqyzsfv-_7k})x;QBAWG6oBL^*;;2j(=je?d98hkci(Y#4bJa`50Z0iA|!(B2uu%%M>(>z)|v% zqU=dM5P1k11vR|U67Hnp0uyffJw8Q}fP198d$>5(U$3FL)w1sbGj5;zJ}F?HxU>p| z=hMxwGM14ZS35xd8yz?}!{0{-z^ok;t#wB}Dp)yZE-tIU;IFLw2e#Tc50B$fgf2nX#SkzEE z&Wj$!Bxe78i)oC;*v)11N(tR&^xK`EzQy9>+GegDC#A9yeFPT%nLsV-ZTptvVsqoN zZ2R%7UeJ2o-s}|NkE59d=OafaR+kxBkBD}k4e_ccRwkEL!X7FMR93EF zw_ULQt~><2lj-xfl`qAqkPx64=o6p%zv7H43_yFjkw*nXmZ1ne&^}{hP;WPjF&Z)r z*q9dqf*INv5iEo6%qk|a*RF`F#a3$7b7$nV8phbUPvPGB`f z<2++kz~`*N3b8CJXEuC+Cia5t`^J!jBn8?dDKRl+Z1Lq$Lxf@p7IK(L06BuogtS0B zQms{S zKOFBZeQ{NxM_25Z|6@F6J*W(JMXPe>jR$a9r$or-CmC#vQ>vvALfF#rmsfk=oCJ5{ zA##atY#ajOl=^J!zh{vyxFGj9+*zwt2F0Prq=xzSJb~wm+#=SB~&)?>yaP4B3a_ zDm#oNOwZU^M9qKATXhqqJQH;O&NoS?dp~Jym#?LCmap5DgWPIf*LfRgw>dhb9FpR_ zGr+>{4BQkTQ6;eH+(Wineo?}K?{LZ%b*Ky?yIF~1pU|)$1R1r4mYBD+@tFO);q^5 z|JyX##p;KWr%Zq&re@X}Fed;^3jL>ud}WfQaU#sTANrqM{(pY z2;WfnAl9f6U!ZR#ie-?bz=U83wKiKfGyqBY{o25v*Kc27IBwn8KFh52+Z(=Pd*uG~ zK6z#aNiQr#7Li4lwFU{>ohU1S$lKeVb50`J%t?pK$>rM$D?O^(QJNo@OVmS^+OC)Y9Bgs?9vplcx76DZ1%!B$G1luXA}N~xoK=#=$bRbo$@n=Fq5(7eSeo#es9RtVaH{goJ_>$QoZbl!%W8NCCTd!zWT@eu~GVXGg9j$(tFrPf7;N(QQ z*YT7IzW@|jD~%H;0F9gsQk(|>pU{yp!1Ref?SJN9s{F!78E)G&E4=13Qnq6s znT;FcyDkP7%vh;f=;tap-U?b7nlWd{GIyZY`bIZHW=q*eI{XgJ8kx5}UR&tvJOswV z9?u@P;j%bD6^)2R$|Gm z>^>kod*jif*z)5X=6|>P``)FjmmFLDTd{Bjd}e@JBGIHF?M462X_0$=t z*nG0ptKy@qhGuQ)12`CY+coW;!3G8d!vU()?L1i=3Y*?tV_i%!4zh^=s5+bKTVu#~ zL=5v9vJGXD-P5tn0r9JMGbN^p6@n2l%_~|aZz(4CZf_(0SbxMJvqjLHRW48-_}5z= zZh$pn3>V>w0j&RZPkXfxrPk35rK^CNnn3|z3dxd@JSO2o2(c`N3PRL-+RNGBm6Ny2 zbhyxk=RTC=96TrYd~+S^gFk8&eC-6+`d{z*E7*w`I6fy>9TT#=?+oLz<_oZ!VsnuB z&LM5y$mqV%NT|!2euPf+<1E`W3+6q`TV_Wv;3jOH^RBTQf&9Hl@a%cUyPl}8Yaixd zOPw8=8T*w%32*)utQzvqhgm7DEWC>*c<`V%87e0n@zSZg`=-D6k!$by@iV@&Nyhvz(sH!p_=H+vZreb{3_?=xJ(zSMFJ5 zWMOA!Vm@~(*U<&pCuT4EB)&O8cS8tB~?sGFHHXIR7X=u<(D;6vi zgcJ-u&0#PG2F8-ixK!V8-p91)?3IRHeJ_r}mR9u2K(TcBc|3HlSJCXAXukA>YAGsc z@>AGr+G|_qmLSb>z{3cBYOQc2-V%c&C@O#S=n9 zC#t1W@+IPXsH7oBo!4Q7d<=5r#eD9P*b<6H`!wNBtenF!_MRS(L~S3uN)kAAD=OPZ z35fj^)oF5dq)BeCXC@$N6EBGEua7;Av*J`I!oSvn0nU9a@Ks(btV1U)+#KOH(z-zUw|8pJ*H7evl> zB=-DV*d%V3eNJ7z_cH4Cun8-uyW3tg-WCv3^$e%ch-DygZkFno8zPyC8b8n#FJlO_ z#5-{4WU-67FFV*Q&fkh`i?y;h&!k_wB6_MR`z*qG90W1cf>H)75g`2l=-2{v7 zdkSWH!#?pT#?_y~9;US(V_x6+d)!pt;uxdv;=hEHk=Z$Wg$-;;kK2q&fZ0mc2i8^d zaKoP)zo#f>`^wh?1)bs|MV&|-iaKh2)wEQ^PMcKv{&pT$0z0(^dR<3zSf;H%MkW8Y zXy8TnX*5W+31^4NTD_!of?x48k1oUcPiV)us(xwk})7tatgUF zQXa{1j&n}%Zt&*el)F=-Z0d5)NoOT?C&g!`ww$@tfMIR9#e?}A)?%iZ=An~0!a62; z_F+}vl+Pope)KNPXJx~$dUh4oIwI7fJ;TPP@KGNVt6^T&?P!D3x_r6S%}3)zW^8E= zj%S{v>YeTzDW5!c&9(3_00?C4bOr7ff&>eJE7|F2y2YPWJL{PvyMqmpx!a)QT?XAo<;`c#BhiRq2&my>km-g zjw3}|;tZl9n28RQO8Yt(snF14<2Z^Nf?{vG>Wm?W8}o#4>Dmiz zX;g4>`);Ug>l-XW*KM1CmB3kQXGYLQ4I59u+D; z!%fYq-Owsan`vXLPL@qXK%Oo#`MfNr)cV9x7#&~#*QfNF_bt1d6>37EF5d6>&3D{a z?|yguP!|!f@W`Aqvq*|lSUgfYOZOPJiM3kH=&Edi=Ij#`XUyxG(_K*mxW+y#yH6 z|2f~|hQ!Htqylu|P}3}UCII=O+wS#9H<@Yvi~Kan%(6bB^>^?W(8Ai%ng`rt6NQ!p zRv1oyI*nE(lO#3WjWsb4#x0M|Q|m6@;Jzt~mXzn2M3!#FVMa=;p8go(s?~P6nK$*W zpQy;xI#N!G@776!KI7BYOcuZ6G)=@(&bK#%82PCVO(UoLDmHlZU)T*A(RoT8Ap|em zgtJp$8qzXyCDQL?Wj9m*_@FR5yO=nUpq_y=I=bJ|>Y|@->+0HMw(Ha8sGS{>lw74n zyERzshzR1%172;sQ0<&jEUeSCpqF%19q<)}!S4KFPvcf8K3N)XJrPa)&rQgd3{L4! zHiGq@o}yO~0R3Sf0Rv-aWzX3ESh~ufHru8fJh*Ft;>C*=E5+U2-K{tjC=lG;-QC@# zxVscDMT-_M67q%T{W1eHnaPjb*KT&Nm2-}kaj_&ODGrr%jb3Dx9VxYt;e%amwR|W_ zs*F=kAMuMF0b7IVP%IHyMx7>YMn;|Q#QZ2x;Bt*xZRK)Dl;7Rtj%VT0N|{!jO^?~8 zPak)sYK~}!Zp+||mUS_t9H|~EPd5JJqP>$~39zKr zF>Fi8GFauD)oaToe)U=5ZWtx4vgmf6Wb7}7erLeXzMnmjU3R{vWHV>4eGOniQq4H6 z)9no&w>mwY5peF#+af%1LVSWjK`vHg`%h;aVE|ljR-6UDfW_2lWYYa68W{_r0~|x> zdN91ZA{Gu;WBpS80f?8Ld3>O$8d?4?H{1jpQt(V{Kw)5iNfj0Q-kfzGT8iC(Y6XuPbnT|!dZydcC9C%I$@IWF&SfXa$6h@bH5n(`#Ae*u?;_?bEcA9UQ z!1V*a*SfKa<^Cz#G2LMChNMa8{;#o|qgten>k9FqR@2oqI=iJN(!-dx;337sx;W2ez z(1UsEm}I}klP!#R=@0xSrW{UTH&*8r|xGa%81J;-AZcTaXr;CUHt81ZgsIl zaQPCj7DDTz9+Y9@@>AgAuXxV6*xC>542jInC$t)ikgDe$`;CjrnWeg1o`V_jy^FmG zicpd-cv+d^MqG)OGFk|)JLB5+qi5;!~e!Y{{YAy_G+(o^iY{E-~rUNQ%&;Zz-b_$KftsM z1ON=L(Dc&e`2>r@U{@#umcRFY{#oO|m?^QEEXMgB@<`I`F9q2+hcdNliYHrYaE!6a zC=g;#ktckO#KWSt!{u`iGN#7m*Bw*s|5Z{!R}d-RUq4}(CV97I<9y*9nSLt0D6|7B zy%u#>zQZ@FAF({IfyZO26ubzVNxS7~6#KBY9nKbj9G*~aBgU`#$L>qH+aM9w*gGd@ zg5NML_7@zfNa;y5664JA!q{#Tq&DujQ%3B#z8*!o3sNji=qinBnGy!F$8P8eEki#5 zLALpbOgmqP)4kkcyDr^(!DKto#t2vlEFdJt)XmWqpDeDZ%T;_8I2}q3#ABY)wPW*+ zbU}$wSC3USYP-6OS@FW7#E&KtK5d!Art6iJSUVxYkHBuDS96%q9bviG$(8>1H()@N z-y9n)g?^!{LZl5lL#cD_sK;TD&m+%jWVGxg?)1WN@3cqHb8D?Nom-@gQ*duv?#Sa2 z3Vq_5wmaZb^p{`_;mz~v(WZyn5z;m2VUMi4$bc;C`U>4?L7shjwz43{7hOx!H1u2% z5w_`BPH75@!9VsBn`E%uHX5B80fPWelwbrH(|qTCr(j@O95Y}eF(C0a8HE~v1tX7w zLx)DamKin@$Dh?|tb=52ZC-HpmW8%K__&s{K4{_#WWxVtAsoRVAt>`_cqrh%8YPxJ zQrQ$HZTyRB!=x%Er<3P;;k>r66FYU_k99R_tMjUPc;3v8s->*1uSXZ>VVTr;nH8Lq z-1cj$A2~y==)R{kqJ8!JvwxGUVng-~hjOY2ooe_P{lP}*X*J)EHnS@#`C%4~k~rm3 zN3S7EhuAl7hn`A%j3vBLbtz0#ZLKfU{PL#H@_0Hq(XUFQqvtqKI3wV3$5%9FDYrJX z&`Lq~Zmq#VBB#Y~X=9~MYs2H{WlA_>{~zH&{5J;I68ougLmww zoEcN`R3Q}!QYheHx8IG74u%N@ClvuL9A1(DIW{aBPYg944dnibfpkccI?rungM%<| zT7D2z>1=uc-M)*QBXQ+6oMazSkf7lLKu^L25Z<_&ChoOa^A-KT)(e(}3F95sBbh6o zNJKea*|jo+bwG;4DUYZ!`06#ytT^2C8XLjTGM0@SR@f3h2=s>lmz`G$xs+Jl`nbY; zapZ2{5VzfNlIV!MX$J2Ng0KflT{oEb$>h4Gr}z(oK#g4_cVTn=%MV1A4~<3Q0i|I{ zEgNzNl+sHhVI}>(ApltfkwWc(D|#4XHyFSix`?YX=vW9V2(bP!iTod00Q`iS{;h z*($sn)k`*3cBakcQRh-hh?HLavWS$Bl&hcNp2Ba+J0#4n{-|w;gj`ggt;E3_BD-E6 zK{fXP^JG#oRWi8DGM5loZQ`sQgs2hx$=wcZO7IpHN;c|H|I8y25IITE(ZY_Z;3(cj zBb=-b$K%AoAZ2!L(bf5$@#0cS3-SjV&|gdaA#)gDK2}qP4s4!szR`M5fIe0~JOvg2 zD@dHNJv>oZ?{I&+KW6@K6X%V4`>D2;)YsU%KQ0uG=k0h=aKvHE)-s{mF7qAxjRlva zl--?B5Pv3LL-S(JK$hRVV4)?1x0`t7CTGVhES#jYn|CD)lPkdM*Y6$hN@wd0WZON) z>`5f&<(;09TO4|g_?__9j%XBtG|7+`Q5C_C(e}rfyS$i@8V4|?3`uj>)+~?0wlFeQ zeGZ1S|L3Wkj@xtsqi6rpsH%JUr9SBMKvV%t(|I>BQh#)W;{h?!cbhXG=FCS{2(LhB zU4d?ZAAi-5L)p{cLc$q{K-^;aS>D&1+!zRjwgd35!i?_HK=khaQ*LB{5w?jz9+m$i zy)lDEPctO8vj~h1fN4H9lOek@PN-%UZSN8rm>PuTrIL@!Fa{3QvV{Z{&?@*YnWL!Dl|{0{<1N#OOxuk6y>`HW-~xUen50K$F>-6jBknJ)?erzI2l6#} z{Tp>_i`SLjYi-gr;rQogsbMkeK+Ea*=Uhc^V3F@D#^fnNKhE=6#%7{^4O6h(r-h?~ zxKhqY49J4eRh#Mi_?igZ&kiNcPIxw5qjf{OhYPF_Ww|4RBR?&n85b3+cF!}@@yy!> ztq#_Z_3WA3mEF%_797k6P=1ByzAoR*KFD(>0007zheA3GgL5HEeHG2~r^#(6PxB7% zSf2dBX~Yo7hU4okmn8Zpuv3Db|MqJVc-iERRgR$TMA8``(r=&C( z){httnr=G#s8V&}jXJJKysZ{;Z3YY-`5&yCt{#XbiQN>)GL*~98Bw?qand)5)zYw* zteFeyU7&-=eyDmHaMn`$)lnQo*Z<$eloG#4VJjO1Oaf88WpCN(p&7x6QW7z;2;%Al zcuckd3Oru@#n0@A0ZhF`AnxQWR=c6iwWKnn+Wnu5p#~2X<{!lDm&~eSg4(ak9?xAa z7Q~X8f3~!ja8oDoAWE4zY_s$4O^}a=52=I=IG6W zne>%V;Csb}PXB<3fv*K<gPF>)hWT%#U_Twp9YD|964$#tAFku4kNGuqwECW6vn7Gz8h_T*jt9`t1J1) z2nci4ebi}_A_yDMiiVxVEuIH`vI{jZr031gn0nL_J!8`G-+ArTcd=mM_>QV`+P)hlCY!&$HBL>aMo~k?5V>m1D(-RAT1U#PwKW%7g-tDW}xL51sgHpp#N5FaBeH~=U!ZV zvl|&bI$u9G%5wicQRq_SMyq-8tXvwH!kIK^#y4)lIbM3y^gLWp{qcea~a) z^aor1{;g4V2OtcySiT`P{|j~PH|XVi{3w;F-IOt3kZC>?U0Nnl=C@?iDN=pTdMdCM zBlX;LYda7TC(|@-swxzJW;%iLI=^e0uL@(zr*NuubFrQHS_1jg+wx@H)|hwS1-Z1W zg+OEpBEgkz3Q$Ta%X!#2HkA~ZNQ`~+t|3VmY^P?WZoI=9!rwAvF+ELq@k2IyF?u>i zy-jVEhj!DfEij?Dc;70smhYx%ac?#sv2aBQ1jK(55B{`@YkrEChUHR>Y1UyTD8Z^* zt8N9ZO;s9mrR+b;-v5gh3n(6zVrD89Gako)yH&SZp7sBRa?~jug3Xcek$tR_k&FMB z>-uJ+lh!DM_4^|aPRK0S2*%6+@#mVZ;%r9B`oUZ`Tf*w!BSd?gNI8vf-~tr@jwI0N z;mmg@qb8!G#z96+FwY3GywUdOZvFzI3b}laPjLsYDL&=HaHNV4#{&lPu_G8Ig7{+m3i5f4i{B1s+HzHF^3cwFjgdRa&4c>)r)920 zMdRnN3)E!)aiFESYtUKxbMpytkM#*6CCcDX1fa`ecE$KxdmoWeI4EWno>F))`9qsT zDo`~Us3*(;2)Ha4Z!o$3QvELr;o8J#oYA=UM?gWiP)~rSv?m{54TRj6$za`n090-V zC0j7F9tX&g{)nh6qm6FPN7M7s7K14@wu+qDAav-|RiU?X9Q#I(3O$#GfgJ~*LL|aR z^{&OLdEL^`Qa>*gHbg&KD(6@i%X&bFNcK0mIk3Wuk5DYRzL`_P<+D*w7)(Q-L-C>5 z6LN5bP36LmK@zSWEUyTh+JyI%xfK}<)O()fz4A>gBN-ZTs<_dn^I;aL_pR%;7piop z7IwdLKTPtY8g+`#At3`WpNN{HSr>%HOSp&2t!^P6EBer4@&WP$xx4knM^$=oSo~-X z0GLvTk0^;?sdd28%hb~((l7z|L`BrkImE|G>d;)1{kiFgf9A^}F*8qN|8A?Gi8EMW z*1KSRi2FRtgPkH;EgDt9V!+o5ByrBkHc$c9uVbhfkV@WQ3lW=c25qNE{0aYKXY8~d zVcx(PW*bb+>L&P3E}15vmeoE|VsdczN38_Pq}$I<_hDUdnPSPHOGhN?QfLK!B|;sB z;hOAIHD8g3SA9KA|L+QR7o9_>zE+yuUZ2H7=nm{1o0uY-&X6;7R$BDH zM*H3lzB}i3XE)s5TB@oO{{Py_p!Z2eZr|@?sn(gLyrKXY@iY>rK?yv10kX=>2IPpS zxBJK?XgS3cDo()l8`>x$MKc{ntj+vx?hU~4p3 zRYW~F(@b8oLJbtI&2WaYWCB}KD72wB^bWbf#bkvvDtJi|#m3ddUDLHa2MwGQh!Tws zN6V4VJU`dNtZj*83bS2RB|@<$UJf zHuInyUgTUB9(NiN@eN8};%4}tI3kuSvBMQ)ht#Pj3)`WTsR@K};^gfZR4-C{s-?=4 z@BWz%X{PkK?BY7%aeKT^6Uq=~Gmq55_Wngg!dQBd@EsPrfSm@_?}k~jx#7cwQCUyy z-y@-$BMUc<$aD|CEd`T*r}o&DLClq`uQ$n)>KlTcU+01$dYiBfBC zFw_5DU?C|81Uz=du6YA&pRpaz2T0SYc@md|S_g#DnWkoNB9X3b!W%Dy00SzJ)IWiw zvWSjF%;A4TOE1FHtR_{6p`@7%2s?MeG;tHjL@3WJV09udUC=%YIwnN;LZ=&V(n83h zmWzJS`v@@waK9fa-AJ6J^H_}qr~y#pLcfh^q;Ab=M?Nz(w_QYB*7lDya|M$ed>M2B zM&<4E#YoY6O<+Hs>b zmuc039q!GeUCbqi)9?2EjVH1Xb@Wx=Ze$KvF{x*pE>@RSR0ZgNf>JH-np0b_Vg=mh ztq{LbV~$>zuhx87_@MI|T46yVyN`{EV9R&vTOew=>&ad^!Qc%j3m^OnU)ob4VebeI zr=!_2)k`ya{*STK#Pat*-mWJ79nfLPcY@F(OXrhYbX`b~Lc(R0t6=mp$@AxE36rXD|W zl{}P9pUQ5NVQ!hriC{Kn@-Lw|l3~qU-yiq$OlVnidg zj+V?VFN7`+gq^~FAN>wNo=qs)ofHj&0!@J8$G~o+a7TPWMVKgYFv8(Gm~iC5MOVI$ zimm8ue?i}{Or8J4!Gsb45aFd$L$%2=n28dEjT?l;2l8)u^JN)J3x~wsTzeOQj09!M zbQA`B0R4B>W|+><=-7sZ)=<=D&tnzAwPP-qk z9b_~#r_Ix=zi8;uhN#%3{27}itYB4BLWa@jxYSfh|5H9@ccT`)FWEAZjo0GfWpQaw z`lbxn)8=Hm5> zF8_@B_(L2aXEgvAYK?q&3QH-C4*RR07caw+8lb^nVG^RFOjx3tbMlW^gYZ){Dyu+# zwtiP5W%f_FT6W})UgBv;1bm_?^4AioCjB7LXiR#8L=S(lV)>jHAZSl={}({g+{FkL zRzdX!4@-he(Xw9d5zFqxb~vk=|E#Y3Hdb>Lf3U@-R&HMo9o^71$7X*<+e+e}J#Syb zm@TS&pFk zA1ic)W^&koCg52gt&ut_nZq6ILgU#RDM*|mG%FW>XOL4|fza(dL2^qB@%MWDu5|)# zQrX;oH<;b#idy$_!<@FLqC2VgYIO%N`7iMP;Ep|pp3@o>=mJ$_hyH>6p$ZNF7>#}a zOuDG)nzVHlTgZ~JidX6_ZBRitxughEKvF0@UizcD1(ix}c&RRZh>EazLNG?bR1rU5 zO4F3BB7firyZCX&as&fAJzC!QT3OrL%vmQD2GN?3NL=4SL?(3Hf!}2|d zpr!Yr)tqbAC*boZNB)h?*-!$6Fu* z%1@u;8*?VGu2;paPEe*%Z5*a?Y;>pNsHiC?P74YO7bg5`4GJZ3VzvGkkH_**z-HB74S^P5*wF!YMcCS~>o39pxBg@Y4;f9v#oRIUzCIc0 zSJl2*L4?cg_tk8JA3Kej75$HEtoX*=4HjOeaTT@Wxq5XbS{tfz-SR&|{gr$<0D6#c zO~T<@LT!c9JJ1Vx-6e|Mn(RGi8Dyzvr!o8i0wxh!i3Q0engb|DWG^e`e|U#XU={yD zr86=ykrZ~F)A>}kl*HlA!eIE3@NU3MTw$Sn|5|2hP_>8!Y;%*PM2?1+V*e^fJ^Su~; z?6%3@UDW?8u)bic=S1E)Q@|P9c}=~d=~0Z8ab>F#ze#YAOPO7 zok>p`h{70Tx&eJWoo;Q9(nA_JBHofT*e)OzV?Uq>Eah8&MDB%vuLQYYgB}Fr%DWO- z=M_q^Zfy9Pdzda4OkAD_oLVfjOoX#WmS2~mx1l^$c_Fc0BbvOYX%N&cNNWUpaOXFmO?}*B8>B6>!i%DS&A))9)!n^Tg9aQvh(m@LTPo~%KI|(|C%^)(*OL~ND z@B#;Rkw#7<_fOSLw?hMZDm?`_%@XZk(e!!*^uE z-jzKU+Q|8fuR>^=8RgB{Lnm18-8ut@oGC{fiW0ME@3ONQi+m4E^xM8dT#egDX&5-; zc-JLAwX5;1#%Hh0@PMaj+=Y+rVL9*Qe0JtezUwxer1cVnYn9~oJ)I1@ot{5pI{4Zy zCf@q&WN`F0)|q8kW~#tXpV@qFEiwH2?r~5=yb_DRs$ZC1i5{m1$DKkO9<6r0daq^g zinqME(!s6*6sF?*C9PDIwqiwRq4rYmHxtJ6^IPq(16W4V|7pi8w@wNGLKl7kI29%) z)y0dy$^ca2(6`&n>7p7mNT0h*u40#y8hYJ($m%9mS$-ACV#+l#G7!jIwJPi|)?66N z(Pmz^w5b?>m?6~?S4Ct|RoIY;SU-9BMR-H|lg1cjf-E%qtbTAO9uS4q7ZFbLK z|E=XF#a^f{8C8J^PVYQV0hD2CA_(RU0xL2}dIiw1o3EX&oUfxZ7-Ep3Yk)PyT0EwB zCM~10?O3}kLuV1i`AJ-pplNv7)$_q?M7t{MBRNH9@XNdJ`p$fU%b#Vx4fORm+_rFc z>!Hd$7iQ$O4a9eTt|eIecMeA|WH{uxm2tT&dG_EBs7KVg_k9Ij6BL80iy^dn{&|cl7`g;SA0mwa zSR`&igzhs+lBXTBbe=EUtgZSYNNq~98IfD-rut&Tc^=fC(4M665tIQENf)YunbFKP zX)ZF6f<~`-P)k7*#ytcg3`mh<1ok;t%Dm3w&Z|=2JdQxA1$?AvdnZr_G03;(U8r0-w&s%EQ0u zRL=bD-hXS`n(0Lh<`zI4i0Qu)w+;DyKitBtC}@Tc4zKGX+sZWQD&ssiABzx_p zA8T#fhy*Ys!Lp_lA}RfaSQLrU%8W*fz@UIZr+l_a8Y~-{DPxF^@MtK!>epUz)qA~* z2KJ~Q{JUaf#bQrQb6)^b56R&H#KKg`ZqXWqwrHOzOnzx-K80}nOd9$7IjVqv%beWq z#Du{9#GIbN{~mLYp2zVc9&**h@29LUx0Te4sT%44JO;z&ts>vXdPm^#Tla#v))KeKV|!` zka1*?W3;-+@WV1pSk#YCd*+v!va>J^^ge96H=WnagX_sqlV7e<-PQyQryeHJA=jYl zm}kjYw8+{?Dni>?k1OS{&;w-!tGm^BkJ`EU&vHkdRA?0DL0&N8)Si2Cdh5y_T74m7 zA0XpBF%|#<1M7H1Di1GCh5fN#MDPbO**`#}8-Cw@3@nY5>{ERDL@LhiCe8Ii4F$`S z)1uX*$Olpe2Q^7X6j2OuBFHJz2b;&gGqwDT6~KWrqeqPu4Y22Au$51SwXn3X##`fV zR7VtM+ZAJ^N3mW@(=CV-6G1?N1;Rwe!m#j#!m9(bSe$rK8dI|;ia$1zqP63nSw_>Z z1tD6;ODF#;r!1qR5H@C$fnU^yBVkS_783?&xL&K^XW4M z>2fLKpwj{)3i-m}BPYJ-A58VW%Pg;*)YQ2XGGI)g|MZEGVfkw^dSTkC4WA$yRv&2_j}msy%n-Y0{jC}^wMXyy>3oGkbd}N4iq>P*ZTit9&$C>bk89Q_ z+0FCJ&6n4^xRr{W%TXqQm+Sw*njw&X>N8>82T3PZuPsmm091(U?!fqld7gc@dgr(O z!2*fb3P!%G=j+MOHh!B&wctK*R5IikAAoG`=_TpPpIY(A>DxI70KKGGvJZhmL#@kz z0d(JS-YSQA07~^YML$n*5cB_vV#*$WvB#-EVQw0v8E2ti(78|!jjSYGwPH%6|gg5_=V)tm|;UEVcD zev*J~5A}9)Tr?m4EQ8}93Q1cBD~+7g_j#ho1(t@2VESN&G3s;UHxs6JU4dwb zP8zWY!ie$)ejk=-lN$KA49fat^bzHGY2x96Q^s73ryZuF`4@ovUjH0uJ%{1a_h~f- z%cekBKLSEF$+#~hG*MU-u*0^#4K+Nb@rJAjqrzIuTu<4v>}Gsq7}ZhOT#8BM8q0nu zw0I6U(~DZ6#6aP-5DlYZ7aj~FQjW0IAF9SdTp&O<6=r2NjjbkBV##jO9YS`zxjd@X zp5lf5^HritH2uNO%v6sxZuAe+$lAWnR!5qnX3Yjg9^{UO&DJ*>>O@qf|Nh1ZLOHEi zlpG#5+B}y}pKtvg!8=+-TaM5h)kxWN5@9YW>A`tVJ&s@(|Psno95uZIwp|-Bzt%P9eJ$22t+A|n+y|N zZ%S>;0OVW?)mLayOhfTszlU)=gzt@3Cl_P}2mMxVNcri^P+IwJn)vw}pg!<3kvy-i zQ5*`=7cwe&bc$&Dk`>d~bXT(>oCA$1S?mCc!|3^O0#c5(ha^~0YB!E8)a(EU>B$5l z04$Imz#9%vG~XF*637OJLR^voGc*`)ZEXBYoHi&N2oOscGpIQs{SSH9)$a`9Yq_H0RZwoE~2yRGb+YFdN9 zQA5aG?*vRhSToY)e}CKrSvLV7ikC5kw>y-*f_+mbYc|LCa1jHhieuQ?0fV?8$|;#( z69BJCHYq0OpRpf<@$?SBK!ihb04DPUeEz{8Iu7M9e*+v*RR{vUw6*(3WmqubF%HQe zq)#zwv9f^$*HlEJ4ASZpC}-pR@Gy92+XNsyb zmT%6;IjtJGD^cQ#U2znv%m30BptQjr5rBp1@Ux1~)=%>gS^~yva}z0|}E$ zPm#;Wu;IE@suvS;`g6#SZ_M9SB(L48Ua|dRYMV2k2@9UN}JIKrhNRg=l19g!+L}7Qm@NrLBn) z{b3^_v6}50g>wZW&G&BwI)Hk1z<{xJb9emm7p+YmF40YLLBDq4oa6T4vmI+?1`;Ng zFRnFK&S~5#k^%T<4a@91dn6F8BzgGhh@60!nbhjXQsZ+Miuznbt31a?emoUrFD@w+ znd6GJW+0WYohYzqfdQx)gt4aDpZUJ&2=ZtYBnASK-2+n zzVF)N`2Kn=q(rmsF#q4~Co~4NJ$DMj50n7$e&QyA*tf*Flfzxj89+$Eb^9p7t#@K` zzgi}%voH4)GyEA&*5h|IYgP0vO|!PQxSxFe;>5H4aWQPu_-FW{75eBH*Ew{oqlJ7b z_o|X-|A9}raWNhJSUl={yN4qaN<&gAWUJhRN@P=WpW}Auy2d#Y9a(QaMlXxjs<1vwCX5xHY#y6$mCnSkR_zdB17aw{^Dh$&S?^=ShR*$3Z|fdEo;@X} zfFmt*PQ9Pq)wZYon_i!~Q-?JGHOciQtj06ZNA3kVbf)1kB;>3yCIfQX#y>(}>v&{j z7}n`4EiO7J)!M9;1Za0n*cT{&pdBJVuNZbN2AMW;*Y;kmor*8bNX_28l@2E$yuW&@ zK1!Vb$p5!nh==c}Rl~MwUGqN%%TI87F@)uEDs*Snkt>5@vE?JuePJ#4GlI(6>Wgqi zFv1|?-GynaDCJnLWs!S2O3LTM_SUBt?X96&=aYI1eI^O^E1NZH?alIN_kUOr{i}Ld zJTd@`l2KaDX}%6sS#}X-%c(!qP|!^LB=j7Q;xe?$ve}=b8hXYZA%l_rm;SFYOd6MU zRSy~#jP-H-gyv_&Lp}vl@zXD~HJ#H@l{my&5942u18Ik#-Q`Ljbd8qmLDcGKgc7>xxK4k4n#e>2cN2=7#H#ZF$__6;Tt z4NbTiNjfz&tJV$Q zh=fX*8d+~ebLPICVUL~MQmg&mb|GFV^8ro$Ph{#=4Gl&B7hH0mzFxNQuuxYz4mhvD z-)^|`q71SPNyv0CyMRa;jh!}KEag*qS!kF?+74u!6HgnPMHd4YI8xK=r86JW^I28N zQkckXaOFlw#_xYl4RUnkBCIdZXA!gzG%)ElHMKJ-a0|C3a>_R(x@JUb;hYpI3#l>U ze0Uz_kI}Ah6`-KBU0aMZn18WdEb)Ga39K^>*FM6KC2ZKr%GKYT{mUrqSA!HXm{^EJ z)#1DIK zlwpIA?-yNjs%1?IN^Ux<`mPELrsoWYr99LPF8=B@_0aXM?b5z=<`zeLf38T0X;CAvJt2MXi^0V3E1I05>HTb2&3ox{yF0f4eQ` zW9jHC&`Q@xye8>m9nZMf@(Qc7E#h$V9^ zPuo;^Kz1O{|C>M0DPO7{S3^5(YCl5Z6KIH>%hH??GM*Jl8GLkPXLTzUUdMG#83T+X zSv4|2M+eF2Ykih&{RAHe$gSm~LshI8#!=uUVJrx_mBS|*uMsimJwMZ zI~A70uv4h!ed>)etg60mLx{keQ4U7+?nGC2UNLC<3TK;u7F`rwRV~3JOH@Xsd_{=12&rW0gCC=umVY-KPC*>d8b$IjhPs6ztn?J_AY@vR-*6^8H6={NLspC3=q1w8;~6%4up0 zjim*L;WHoZLB~O&GzTsv#{|1ve{&?}a#v9sBTjqRhp2@!&XMV2X>>(emd1k9jq06< z8a<<9VWkh7dkkdEUWT@gdIbqn3HR3c9J&6OT_xgeb&S+1#voa2qlLNH@OpBvd??_F z(u}{=mwc8q`_{iu(zv@!WrWi1ob7f)6j44;YJ;LTODNl~_nP`~?|-NBL`E#R@MRrH%`^~qPbV%r2Q zBv2HcB=)y(TsX6Zcp$+~aW#}ol!hXgFWiLeRwy~n0h)U>-|@~cA`su}q!nOk-zcfB zpxk_60+w%+z=+jKrq|A0BbsB97O=tO7rJI z`H%7ghr~pGAPhaszXQQYVTmXw$#_ZV5GY*R7Q+

Il<2lEs&3LXhTypAVX@}o47 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 z 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

t2o;P#hKJ?9`qLLk`k8J9sq?&cbEKo-OS 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≷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

nFIt*GFMkJ*6Rm1!{}9iLrpPG*Vp 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

  • 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

    SQd5vh?O{1;XT`e>khSRRZVEeZ&;h+4Nqo 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 z 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 eH=U5Uaz@;@7?&7U06+|ZQ(yYu`tASubN?R|b async (req, res, next) => { - try { - - if(!client){ - res.status(409) - console.log(client) - res.send({ error: 'Error de client.' }) - }else{ - req.clientWs = client; - next() - } - - - } catch (e) { - console.log(e) - res.status(409) - res.send({ error: 'Error de client' }) - } - -} -module.exports = { middlewareClient } \ No newline at end of file diff --git a/middleware/db.js b/middleware/db.js deleted file mode 100644 index e69de29..0000000 diff --git a/package.json b/package.json index 3247115..1c01113 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp", + "name": "@bot-whatsapp/root", "version": "1.0.0", "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", @@ -20,16 +20,9 @@ "test": "npm run test.unit && npm run test.e2e", "cli": "node ./packages/cli/bin/cli.js" }, - "husky": { - "hooks": { - "pre-commit": "npm run format:check && npm run lint:fix", - "pre-push": "npm run test" - } - }, "workspaces": [ - "packages/cli", - "packages/io", - "packages/providers" + "packages/*", + "docs" ], "keywords": [ "whatsapp", @@ -78,7 +71,6 @@ "detect-package-manager": "^2.0.1", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", - "husky": "^8.0.2", "kleur": "^4.1.5", "pm2": "^5.2.0", "prettier": "^2.7.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6c0a809..43b416e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,5 +1,5 @@ { - "name": "cli", + "name": "@bot-whatsapp/cli", "version": "0.0.1", "description": "", "main": "index.js", diff --git a/packages/core/package.json b/packages/core/package.json index 77e12a7..997cf69 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,5 +1,5 @@ { - "name": "bot-core", + "name": "@bot-whatsapp/core", "version": "0.0.1", "description": "", "main": "index.js", diff --git a/packages/io/package.json b/packages/io/package.json index f4f865a..0dd5b26 100644 --- a/packages/io/package.json +++ b/packages/io/package.json @@ -1,5 +1,5 @@ { - "name": "io", + "name": "@bot-whatsapp/io", "version": "0.0.1", "description": "", "main": "index.js", diff --git a/packages/provider/package.json b/packages/provider/package.json new file mode 100644 index 0000000..c7b3201 --- /dev/null +++ b/packages/provider/package.json @@ -0,0 +1,11 @@ +{ + "name": "@bot-whatsapp/provider", + "version": "0.0.1", + "description": "", + "main": "index.js", + "private": true, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": {} +} diff --git a/routes/api.js b/routes/api.js deleted file mode 100644 index e723e56..0000000 --- a/routes/api.js +++ /dev/null @@ -1,7 +0,0 @@ -const express = require('express') -const router = express.Router(); -const { sendMessagePost } = require('../controllers/web')| - -router.post('/send', sendMessagePost) - -module.exports = router \ No newline at end of file diff --git a/routes/web.js b/routes/web.js deleted file mode 100644 index 32df0e5..0000000 --- a/routes/web.js +++ /dev/null @@ -1,7 +0,0 @@ -const express = require('express'); -const router = express.Router() -const { getQr } = require('../controllers/web') - -router.use('/qr', getQr) - -module.exports = router \ No newline at end of file diff --git a/sql-bot.sql b/sql-bot.sql deleted file mode 100644 index 0bbda74..0000000 --- a/sql-bot.sql +++ /dev/null @@ -1,79 +0,0 @@ --- MySQL dump 10.13 Distrib 8.0.27, for Win64 (x86_64) --- --- Host: 127.0.0.1 Database: db_test --- ------------------------------------------------------ --- Server version 5.7.33 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!50503 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `initial` --- - -DROP TABLE IF EXISTS `initial`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `initial` ( - `option_key` varchar(500) DEFAULT NULL, - `keywords` varchar(45) DEFAULT NULL, - `id` int(11) NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `initial` --- - -LOCK TABLES `initial` WRITE; -/*!40000 ALTER TABLE `initial` DISABLE KEYS */; -INSERT INTO `initial` VALUES ('STEP_1','hola, hola!,ola,inicio,welcome',2),('STEP_2','cursos,info,curso',3),('STEP_2_1','angular',4),('STEP_2_2','node',5),('STEP_2_3','ngrx',6),('STEP_2_4','aws',7),('STEP_3','asesor',8),('STEP_4','muchas gracias,gracias,vale gracias',9); -/*!40000 ALTER TABLE `initial` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `response` --- - -DROP TABLE IF EXISTS `response`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `response` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `option_key` varchar(45) DEFAULT NULL, - `replyMessage` varchar(45) DEFAULT NULL, - `trigger` varchar(45) DEFAULT NULL, - `media` varchar(200) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `response` --- - -LOCK TABLES `response` WRITE; -/*!40000 ALTER TABLE `response` DISABLE KEYS */; -INSERT INTO `response` VALUES (1,'STEP_1','Hola soy el bot escribe curso',NULL,NULL),(2,'STEP_2','Te envio esto',NULL,'https://s2.q4cdn.com/175719177/files/doc_presentations/Placeholder-PDF.pdf'); -/*!40000 ALTER TABLE `response` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2022-01-18 20:52:34 From 39e2356feb3da07931328afb734b392409b720a0 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 9 Nov 2022 12:28:20 +0100 Subject: [PATCH 039/459] extends conditional class --- __tests__/basic.e2e.test.js | 94 +++++++-------------- package.json | 1 + packages/core/classes/bot.class.js | 9 +- packages/core/index.js | 15 +++- packages/database/classes/database.class.js | 9 ++ packages/database/index.js | 12 +++ packages/database/package.json | 11 +++ packages/database/rollup-cli.config.js | 10 +++ packages/index.js | 5 +- packages/io/index.js | 12 ++- packages/provider/adapters/mock.js | 5 ++ packages/provider/adapters/twilio.js | 1 + packages/provider/classes/provider.class.js | 4 + packages/provider/index.js | 22 ++++- packages/provider/package.json | 2 +- 15 files changed, 137 insertions(+), 75 deletions(-) create mode 100644 packages/database/classes/database.class.js create mode 100644 packages/database/index.js create mode 100644 packages/database/package.json create mode 100644 packages/database/rollup-cli.config.js create mode 100644 packages/provider/adapters/mock.js create mode 100644 packages/provider/adapters/twilio.js diff --git a/__tests__/basic.e2e.test.js b/__tests__/basic.e2e.test.js index b95cfac..9ba4406 100644 --- a/__tests__/basic.e2e.test.js +++ b/__tests__/basic.e2e.test.js @@ -1,77 +1,43 @@ const { test } = require('uvu') const assert = require('uvu/assert') -/** - * require('@bot-whatsapp') - */ -const { inout, provider, bot } = require('../lib/index.cjs') -/** - * MockDB - */ -class DatabaseClass { - constructor() {} +// const { inout, provider, database, botcore } = require('../lib/index.cjs') +const { inout, provider, database, botcore } = require('../packages/index') - saveLog = (ctx) => { - return ctx - } +const adapterDB = database.create({ + engine: 'json', // 'mysql / pg / mongo / json (json-default)', + credentials: {}, +}) + +const adapterProvider = provider.create({ + vendor: 'web', //'twilio / web / meta', + credentials: {}, +}) + +const makeFlow = () => { + const flowA = inout + .addKeyword('hola') + .addAnswer('Bienvenido a tu tienda 🥲') + .addAnswer('escribe *catalogo* o *ofertas*') + .toJson() + + return [...flowA] } -const adapterDB = new DatabaseClass() +const adapterFlow = inout.create(makeFlow()) -const adapterFlow = new inout.instance( - (() => { - const flowA = inout - .addKeyword('hola') - .addAnswer('Bienvenido a tu tienda 🥲') - .addAnswer('escribe *catalogo* o *ofertas*') - .toJson() - - const flowB = inout - .addKeyword(['catalogo', 'ofertas']) - .addAnswer('Este es nuestro CATALOGO mas reciente!', { - buttons: [{ body: 'Xiaomi' }, { body: 'Samsung' }], - }) - .toJson() - - const flowC = inout - .addKeyword('Xiaomi') - .addAnswer('Estos son nuestro productos XIAOMI ....', { - media: 'https://....', - }) - .addAnswer('Si quieres mas info escrbie *info*') - .toJson() - - const flowD = inout - .addKeyword('chao!') - .addAnswer('bye!') - .addAnswer('Recuerda que tengo esta promo', { - media: 'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif', - }) - .toJson() - - const flowE = inout - .addKeyword('Modelo C', { sensitive: false }) - .addAnswer('100USD', { media: 'http//:...' }) - .toJson() - - return [...flowA, ...flowB, ...flowC, ...flowC, ...flowD, ...flowE] - })() -) - -const adapterProvider = new provider.instance() - -test(`[Flow Basico]: BotClass`, () => { +test(`[BotClass]: recibe los mensajes entrantes del provider`, () => { let messages = [] - const flows = adapterFlow - const databases = adapterDB - const providers = adapterProvider + const bot = botcore.create({ + flow: adapterFlow, + database: adapterDB, + provider: adapterProvider, + }) - const botBasic = new bot.instance(flows, databases, providers) - - botBasic.on('message', (ctx) => messages.push(ctx.body)) - botBasic.emit('message', { body: 'hola' }) - botBasic.emit('message', { body: 'otro' }) + bot.on('message', (ctx) => messages.push(ctx.body)) + bot.emit('message', { body: 'hola' }) + bot.emit('message', { body: 'otro' }) assert.is(messages.join(','), ['hola', 'otro'].join(',')) }) diff --git a/package.json b/package.json index 1c01113..3e5b888 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", "core:rollup": "rollup ./packages/core/index.js --config ./packages/core/rollup-cli.config.js", "provider:rollup": "rollup ./packages/provider/index.js --config ./packages/provider/rollup-cli.config.js", + "database:rollup": "rollup ./packages/database/index.js --config ./packages/database/rollup-cli.config.js", "all:rollup": "rollup ./packages/index.js --config ./packages/rollup-cli.config.js", "format:check": "prettier --check ./packages", "format:write": "prettier --write ./packages", diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index cee96b1..418548b 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -1,19 +1,18 @@ -const { EventEmitter } = require('node:events') - /** * Clase principal del BOT */ -class BotClass extends EventEmitter { +class BotClass { flowClass databaseClass providerClass constructor(_flow, _database, _provider) { - super() this.flowClass = _flow this.databaseClass = _database this.providerClass = _provider - this.on('message', (ctxMessage) => this.handleOnMessage(ctxMessage)) + this.providerClass.on('message', (ctxMessage) => + this.handleOnMessage(ctxMessage) + ) } handleOnMessage = (ctxMessage) => { diff --git a/packages/core/index.js b/packages/core/index.js index 80a28cc..ebc1812 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -1,2 +1,15 @@ const BotClass = require('./classes/bot.class') -module.exports = { instance: BotClass } + +/** + * Crear instancia de clase + * @param {*} args + * @returns + */ +const create = ({ flow, database, provider }) => { + return Object.setPrototypeOf( + new BotClass(flow, database, provider), + provider + ) +} + +module.exports = { create } diff --git a/packages/database/classes/database.class.js b/packages/database/classes/database.class.js new file mode 100644 index 0000000..86278c7 --- /dev/null +++ b/packages/database/classes/database.class.js @@ -0,0 +1,9 @@ +class DatabaseClass { + constructor() {} + + saveLog = (ctx) => { + return ctx + } +} + +module.exports = DatabaseClass diff --git a/packages/database/index.js b/packages/database/index.js new file mode 100644 index 0000000..58e5e52 --- /dev/null +++ b/packages/database/index.js @@ -0,0 +1,12 @@ +const DatabaseClass = require('./classes/database.class') + +/** + * Crear instancia de clase + * @param {*} args + * @returns + */ +const create = (args) => { + return new DatabaseClass(args) +} + +module.exports = { create } diff --git a/packages/database/package.json b/packages/database/package.json new file mode 100644 index 0000000..dccbb0e --- /dev/null +++ b/packages/database/package.json @@ -0,0 +1,11 @@ +{ + "name": "@bot-whatsapp/database", + "version": "0.0.1", + "description": "Esto es el conector a mysql, pg, mongo", + "main": "index.js", + "private": true, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": {} +} diff --git a/packages/database/rollup-cli.config.js b/packages/database/rollup-cli.config.js new file mode 100644 index 0000000..a4aea1b --- /dev/null +++ b/packages/database/rollup-cli.config.js @@ -0,0 +1,10 @@ +const commonjs = require('@rollup/plugin-commonjs') + +module.exports = { + input: 'index.js', + output: { + file: 'lib/database/bundle.database.cjs', + format: 'cjs', + }, + plugins: [commonjs()], +} diff --git a/packages/index.js b/packages/index.js index bcd72f3..821912c 100644 --- a/packages/index.js +++ b/packages/index.js @@ -1,5 +1,6 @@ const inout = require('./io') const provider = require('./provider') -const bot = require('./core') +const botcore = require('./core') +const database = require('./database') -module.exports = { inout, provider, bot } +module.exports = { inout, provider, botcore, database } diff --git a/packages/io/index.js b/packages/io/index.js index 0dd0d22..c47f212 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -1,3 +1,13 @@ const { addKeyword, addAnswer } = require('./methods') const FlowClass = require('./classes/flow.class') -module.exports = { addKeyword, addAnswer, instance: FlowClass } + +/** + * Crear instancia de clase + * @param {*} args + * @returns + */ +const create = (args) => { + return new FlowClass(args) +} + +module.exports = { addKeyword, addAnswer, create } diff --git a/packages/provider/adapters/mock.js b/packages/provider/adapters/mock.js new file mode 100644 index 0000000..5ab4b6a --- /dev/null +++ b/packages/provider/adapters/mock.js @@ -0,0 +1,5 @@ +const { EventEmitter } = require('node:events') + +class MockProvider extends EventEmitter {} + +module.exports = MockProvider diff --git a/packages/provider/adapters/twilio.js b/packages/provider/adapters/twilio.js new file mode 100644 index 0000000..ed01a5a --- /dev/null +++ b/packages/provider/adapters/twilio.js @@ -0,0 +1 @@ +class TwilioProvider {} diff --git a/packages/provider/classes/provider.class.js b/packages/provider/classes/provider.class.js index 5f58b79..e8765da 100644 --- a/packages/provider/classes/provider.class.js +++ b/packages/provider/classes/provider.class.js @@ -1,4 +1,8 @@ class ProviderClass { + /** + * events: message | auth | auth_error | ... + * + */ constructor() {} sendMessage = (message) => { diff --git a/packages/provider/index.js b/packages/provider/index.js index e32e127..11807a9 100644 --- a/packages/provider/index.js +++ b/packages/provider/index.js @@ -1,2 +1,22 @@ const ProviderClass = require('./classes/provider.class') -module.exports = { instance: ProviderClass } +const TwilioProvider = require('./adapters/twilio') +const MockProvider = require('./adapters/mock') + +const prepareVendor = ({ vendor, credentials }) => { + if (vendor === 'twilio') return new TwilioProvider(credentials) + // if (vendor === 'meta') return new TwilioProvider(credentials) + // if (vendor === 'wev') return new TwilioProvider(credentials) + return new MockProvider() +} + +/** + * Crear instancia de clase + * @param {*} args + * @returns + */ +const create = (args) => { + const vendor = prepareVendor(args) + return Object.setPrototypeOf(new ProviderClass(), vendor) +} + +module.exports = { create } diff --git a/packages/provider/package.json b/packages/provider/package.json index c7b3201..180bdf2 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,7 +1,7 @@ { "name": "@bot-whatsapp/provider", "version": "0.0.1", - "description": "", + "description": "Esto es el conector a Twilio, Meta, etc...", "main": "index.js", "private": true, "keywords": [], From 83df9672479e320f929a96b429c3e6dbdbbef749 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 9 Nov 2022 12:42:01 +0100 Subject: [PATCH 040/459] adapter provider --- __tests__/basic.e2e.test.js | 19 +++++++++++++++---- packages/core/classes/bot.class.js | 3 ++- packages/database/adapters/mock.js | 11 +++++++++++ packages/database/classes/database.class.js | 6 +++++- packages/database/index.js | 11 ++++++++++- 5 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 packages/database/adapters/mock.js diff --git a/__tests__/basic.e2e.test.js b/__tests__/basic.e2e.test.js index 9ba4406..cc15291 100644 --- a/__tests__/basic.e2e.test.js +++ b/__tests__/basic.e2e.test.js @@ -35,11 +35,22 @@ test(`[BotClass]: recibe los mensajes entrantes del provider`, () => { provider: adapterProvider, }) - bot.on('message', (ctx) => messages.push(ctx.body)) - bot.emit('message', { body: 'hola' }) - bot.emit('message', { body: 'otro' }) + bot.on('message', (ctx) => messages.push(ctx)) + bot.emit('message', 'hola') + bot.emit('message', 'otro') - assert.is(messages.join(','), ['hola', 'otro'].join(',')) + const getHistoryFromDB = adapterDB.engineDB.listHistory + + assert.is(messages.join(), ['hola', 'otro'].join()) + assert.is( + getHistoryFromDB.join(), + [ + 'hola', + 'Bienvenido a tu tienda 🥲', + 'escribe *catalogo* o *ofertas*', + 'otro', + ].join() + ) }) test.run() diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index 418548b..2c0b6a7 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -17,13 +17,14 @@ class BotClass { handleOnMessage = (ctxMessage) => { this.databaseClass.saveLog(ctxMessage) - this.continue(ctxMessage.body) + this.continue(ctxMessage) } continue = (message, ref = false) => { const responde = this.flowClass.find(message, ref) if (responde) { this.providerClass.sendMessage(responde.answer) + this.databaseClass.saveLog(responde.answer) this.continue(null, responde.ref) } } diff --git a/packages/database/adapters/mock.js b/packages/database/adapters/mock.js new file mode 100644 index 0000000..b3f0f6a --- /dev/null +++ b/packages/database/adapters/mock.js @@ -0,0 +1,11 @@ +class MockDatabase { + listHistory = [] + + constructor() {} + + save = (ctx) => { + this.listHistory.push(ctx) + } +} + +module.exports = MockDatabase diff --git a/packages/database/classes/database.class.js b/packages/database/classes/database.class.js index 86278c7..46c3bee 100644 --- a/packages/database/classes/database.class.js +++ b/packages/database/classes/database.class.js @@ -1,7 +1,11 @@ class DatabaseClass { - constructor() {} + engineDB + constructor(_engineDB) { + this.engineDB = _engineDB + } saveLog = (ctx) => { + this.engineDB.save(ctx) return ctx } } diff --git a/packages/database/index.js b/packages/database/index.js index 58e5e52..bd77d32 100644 --- a/packages/database/index.js +++ b/packages/database/index.js @@ -1,4 +1,12 @@ const DatabaseClass = require('./classes/database.class') +const MockDatabase = require('./adapters/mock') + +const prepareEngine = ({ engine, credentials }) => { + // if (engine === 'mysql') return new TwilioProvider(credentials) + // if (engine === 'meta') return new TwilioProvider(credentials) + // if (engine === 'wev') return new TwilioProvider(credentials) + return new MockDatabase() +} /** * Crear instancia de clase @@ -6,7 +14,8 @@ const DatabaseClass = require('./classes/database.class') * @returns */ const create = (args) => { - return new DatabaseClass(args) + const engine = prepareEngine(args) + return new DatabaseClass(engine) } module.exports = { create } From 9de4777cdb00f32588ea6eddc79206a3d8ee5258 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 9 Nov 2022 12:52:45 +0100 Subject: [PATCH 041/459] pass test --- __tests__/basic-seller.e2e.test.js | 36 +++++++++++++++++++++++++++ packages/core/tests/bot.class.test.js | 32 ------------------------ 2 files changed, 36 insertions(+), 32 deletions(-) create mode 100644 __tests__/basic-seller.e2e.test.js delete mode 100644 packages/core/tests/bot.class.test.js diff --git a/__tests__/basic-seller.e2e.test.js b/__tests__/basic-seller.e2e.test.js new file mode 100644 index 0000000..49cd341 --- /dev/null +++ b/__tests__/basic-seller.e2e.test.js @@ -0,0 +1,36 @@ +const { test } = require('uvu') +const assert = require('uvu/assert') + +const { inout, provider, database, botcore } = require('../packages/index') + +const adapterDB = database.create({ + engine: 'mock', + credentials: {}, +}) + +const adapterProvider = provider.create({ + vendor: 'mock', + credentials: {}, +}) + +const makeFlow = () => { + const flowA = inout + .addKeyword('hola') + .addAnswer('Bienvenido a tu tienda 🥲') + .addAnswer('escribe *catalogo* o *ofertas*') + .toJson() + + return [...flowA] +} + +const adapterFlow = inout.create(makeFlow()) + +test(`[Bot Vendedor]: recibe los mensajes entrantes del provider`, () => { + const bot = botcore.create({ + flow: adapterFlow, + database: adapterDB, + provider: adapterProvider, + }) +}) + +test.run() diff --git a/packages/core/tests/bot.class.test.js b/packages/core/tests/bot.class.test.js deleted file mode 100644 index 352dc24..0000000 --- a/packages/core/tests/bot.class.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') -const BotClass = require('../classes/bot.class') - -class MockDB { - saveLog = () => {} -} - -class MockProvider { - sendMessage = () => {} -} - -class MockFlow { - find = () => {} -} - -test(`BotClass emit ping`, () => { - let messages = [] - - const botBasic = new BotClass( - new MockFlow(), - new MockDB(), - new MockProvider() - ) - - botBasic.on('message', (ctx) => messages.push(ctx)) - botBasic.emit('message', 'ping') - - assert.is(messages.join(''), 'ping') -}) - -test.run() From ceb6faa5af1b6724e4e7cf01284cad31c80e29d5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 9 Nov 2022 13:23:07 +0100 Subject: [PATCH 042/459] fix --- __mocks__/mobile.mock.js | 7 ++ __tests__/basic-seller.e2e.test.js | 53 ++++++++---- __tests__/basic.e2e.test.js | 90 ++++++++++----------- packages/core/classes/bot.class.js | 4 +- packages/core/index.js | 2 +- packages/database/classes/database.class.js | 8 ++ packages/database/index.js | 2 +- packages/io/index.js | 2 +- packages/provider/index.js | 2 +- 9 files changed, 102 insertions(+), 68 deletions(-) create mode 100644 __mocks__/mobile.mock.js diff --git a/__mocks__/mobile.mock.js b/__mocks__/mobile.mock.js new file mode 100644 index 0000000..607bf3e --- /dev/null +++ b/__mocks__/mobile.mock.js @@ -0,0 +1,7 @@ +const MOCK_MOBILE_WS = { + username: 'Leifer', + phone: '0000000', + message: 'ey!', +} + +module.exports = { MOCK_MOBILE_WS } diff --git a/__tests__/basic-seller.e2e.test.js b/__tests__/basic-seller.e2e.test.js index 49cd341..1f6cbde 100644 --- a/__tests__/basic-seller.e2e.test.js +++ b/__tests__/basic-seller.e2e.test.js @@ -1,36 +1,57 @@ const { test } = require('uvu') const assert = require('uvu/assert') +const { MOCK_MOBILE_WS } = require('../__mocks__/mobile.mock') +// const { inout, provider, database, botcore } = require('../lib/index.cjs') const { inout, provider, database, botcore } = require('../packages/index') -const adapterDB = database.create({ - engine: 'mock', - credentials: {}, -}) - -const adapterProvider = provider.create({ - vendor: 'mock', - credentials: {}, -}) - const makeFlow = () => { const flowA = inout - .addKeyword('hola') - .addAnswer('Bienvenido a tu tienda 🥲') - .addAnswer('escribe *catalogo* o *ofertas*') + .addKeyword(['hola', 'ole']) + .addAnswer('Bienvenido a github.com/leifermendez') + .addAnswer('Soy Leifer y tu ?', { + capture: true, + }) + .addAnswer('Un gusto saludarte') .toJson() return [...flowA] } -const adapterFlow = inout.create(makeFlow()) +test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { + let messagesIn = [] + let messagesOut = [] -test(`[Bot Vendedor]: recibe los mensajes entrantes del provider`, () => { - const bot = botcore.create({ + const adapterFlow = await inout.create(makeFlow()) + + const adapterProvider = await provider.create({ + vendor: 'mock', + credentials: {}, + }) + const adapterDB = await database.create({ + engine: 'mock', + credentials: {}, + }) + + const bot = await botcore.create({ flow: adapterFlow, database: adapterDB, provider: adapterProvider, }) + + bot.on('message', (ctx) => messagesIn.push(ctx.message)) + + bot.emit('message', { ...MOCK_MOBILE_WS, message: 'hola' }) + assert.is(messagesIn.join(), ['hola'].join()) + await delay(1500) + bot.emit('message', { ...MOCK_MOBILE_WS, message: 'Pedro!' }) + assert.is(messagesIn.join(), ['hola', 'Pedro!'].join()) + messagesOut = adapterDB.history + assert.is(messagesOut.join(), ['Pedro!'].join()) }) +function delay(miliseconds) { + return new Promise((res) => setTimeout(res, miliseconds)) +} + test.run() diff --git a/__tests__/basic.e2e.test.js b/__tests__/basic.e2e.test.js index cc15291..52e333a 100644 --- a/__tests__/basic.e2e.test.js +++ b/__tests__/basic.e2e.test.js @@ -1,56 +1,54 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') +// const { test } = require('uvu') +// const assert = require('uvu/assert') -// const { inout, provider, database, botcore } = require('../lib/index.cjs') -const { inout, provider, database, botcore } = require('../packages/index') +// // const { inout, provider, database, botcore } = require('../lib/index.cjs') +// const { inout, provider, database, botcore } = require('../packages/index') -const adapterDB = database.create({ - engine: 'json', // 'mysql / pg / mongo / json (json-default)', - credentials: {}, -}) +// const makeFlow = () => { +// const flowA = inout +// .addKeyword('hola') +// .addAnswer('Bienvenido a tu tienda 🥲') +// .addAnswer('escribe *catalogo* o *ofertas*') +// .toJson() -const adapterProvider = provider.create({ - vendor: 'web', //'twilio / web / meta', - credentials: {}, -}) +// return [...flowA] +// } -const makeFlow = () => { - const flowA = inout - .addKeyword('hola') - .addAnswer('Bienvenido a tu tienda 🥲') - .addAnswer('escribe *catalogo* o *ofertas*') - .toJson() +// test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { +// const adapterFlow = await inout.create(makeFlow()) +// const adapterProvider = await provider.create({ +// vendor: 'mock', +// credentials: {}, +// }) +// const adapterDB = await database.create({ +// engine: 'mock', +// credentials: {}, +// }) - return [...flowA] -} +// let messages = [] -const adapterFlow = inout.create(makeFlow()) +// const bot = await botcore.create({ +// flow: adapterFlow, +// database: adapterDB, +// provider: adapterProvider, +// }) -test(`[BotClass]: recibe los mensajes entrantes del provider`, () => { - let messages = [] +// bot.on('message', (ctx) => messages.push(ctx)) +// bot.emit('message', 'hola') +// bot.emit('message', 'otro') - const bot = botcore.create({ - flow: adapterFlow, - database: adapterDB, - provider: adapterProvider, - }) +// const getHistoryFromDB = adapterDB.engineDB.listHistory - bot.on('message', (ctx) => messages.push(ctx)) - bot.emit('message', 'hola') - bot.emit('message', 'otro') +// assert.is(messages.join(), ['hola', 'otro'].join()) +// assert.is( +// getHistoryFromDB.join(), +// [ +// 'hola', +// 'Bienvenido a tu tienda 🥲', +// 'escribe *catalogo* o *ofertas*', +// 'otro', +// ].join() +// ) +// }) - const getHistoryFromDB = adapterDB.engineDB.listHistory - - assert.is(messages.join(), ['hola', 'otro'].join()) - assert.is( - getHistoryFromDB.join(), - [ - 'hola', - 'Bienvenido a tu tienda 🥲', - 'escribe *catalogo* o *ofertas*', - 'otro', - ].join() - ) -}) - -test.run() +// test.run() diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index 2c0b6a7..7bf573d 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -10,8 +10,8 @@ class BotClass { this.databaseClass = _database this.providerClass = _provider - this.providerClass.on('message', (ctxMessage) => - this.handleOnMessage(ctxMessage) + this.providerClass.on('message', ({ message }) => + this.handleOnMessage(message) ) } diff --git a/packages/core/index.js b/packages/core/index.js index ebc1812..33d40b7 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -5,7 +5,7 @@ const BotClass = require('./classes/bot.class') * @param {*} args * @returns */ -const create = ({ flow, database, provider }) => { +const create = async ({ flow, database, provider }) => { return Object.setPrototypeOf( new BotClass(flow, database, provider), provider diff --git a/packages/database/classes/database.class.js b/packages/database/classes/database.class.js index 46c3bee..c10b98f 100644 --- a/packages/database/classes/database.class.js +++ b/packages/database/classes/database.class.js @@ -1,10 +1,18 @@ class DatabaseClass { + history = [] engineDB constructor(_engineDB) { this.engineDB = _engineDB } + /** + * Se debe guardar mensaje numero + * @param {*} ctx + * @returns + */ saveLog = (ctx) => { + this.history.pop() + this.history.push(ctx) this.engineDB.save(ctx) return ctx } diff --git a/packages/database/index.js b/packages/database/index.js index bd77d32..4397652 100644 --- a/packages/database/index.js +++ b/packages/database/index.js @@ -13,7 +13,7 @@ const prepareEngine = ({ engine, credentials }) => { * @param {*} args * @returns */ -const create = (args) => { +const create = async (args) => { const engine = prepareEngine(args) return new DatabaseClass(engine) } diff --git a/packages/io/index.js b/packages/io/index.js index c47f212..a3afc25 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -6,7 +6,7 @@ const FlowClass = require('./classes/flow.class') * @param {*} args * @returns */ -const create = (args) => { +const create = async (args) => { return new FlowClass(args) } diff --git a/packages/provider/index.js b/packages/provider/index.js index 11807a9..4f52c92 100644 --- a/packages/provider/index.js +++ b/packages/provider/index.js @@ -14,7 +14,7 @@ const prepareVendor = ({ vendor, credentials }) => { * @param {*} args * @returns */ -const create = (args) => { +const create = async (args) => { const vendor = prepareVendor(args) return Object.setPrototypeOf(new ProviderClass(), vendor) } From 8410309e38e4f9c68a53363db59215632cae11b3 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 9 Nov 2022 20:07:52 +0100 Subject: [PATCH 043/459] continue --- README.md | 2 +- __tests__/basic-seller.e2e.test.js | 6 +- __tests__/basic.e2e.test.js | 54 - package-lock.json | 3916 +------------------------ package.json | 31 +- packages/cli/TODO.md | 4 - packages/cli/bin/cli.js | 2 +- packages/cli/lib/bundle.cjs | 328 --- packages/cli/package.json | 9 +- packages/core/classes/bot.class.js | 20 +- packages/core/tests/bot.class.test.js | 22 + 11 files changed, 124 insertions(+), 4270 deletions(-) delete mode 100644 __tests__/basic.e2e.test.js delete mode 100644 packages/cli/TODO.md delete mode 100644 packages/cli/lib/bundle.cjs create mode 100644 packages/core/tests/bot.class.test.js diff --git a/README.md b/README.md index d6dea6d..3eda5e7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Estamos mejorando esto para llevarlo a un siguiente nivel! +- [ ] Evitar dependencias **Comunidad** diff --git a/__tests__/basic-seller.e2e.test.js b/__tests__/basic-seller.e2e.test.js index 1f6cbde..8a76c6a 100644 --- a/__tests__/basic-seller.e2e.test.js +++ b/__tests__/basic-seller.e2e.test.js @@ -2,7 +2,6 @@ const { test } = require('uvu') const assert = require('uvu/assert') const { MOCK_MOBILE_WS } = require('../__mocks__/mobile.mock') -// const { inout, provider, database, botcore } = require('../lib/index.cjs') const { inout, provider, database, botcore } = require('../packages/index') const makeFlow = () => { @@ -43,11 +42,12 @@ test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { bot.emit('message', { ...MOCK_MOBILE_WS, message: 'hola' }) assert.is(messagesIn.join(), ['hola'].join()) - await delay(1500) + await delay(200) bot.emit('message', { ...MOCK_MOBILE_WS, message: 'Pedro!' }) + console.log(messagesIn) assert.is(messagesIn.join(), ['hola', 'Pedro!'].join()) messagesOut = adapterDB.history - assert.is(messagesOut.join(), ['Pedro!'].join()) + // assert.is(messagesOut.join(), ['Pedro!'].join()) }) function delay(miliseconds) { diff --git a/__tests__/basic.e2e.test.js b/__tests__/basic.e2e.test.js deleted file mode 100644 index 52e333a..0000000 --- a/__tests__/basic.e2e.test.js +++ /dev/null @@ -1,54 +0,0 @@ -// const { test } = require('uvu') -// const assert = require('uvu/assert') - -// // const { inout, provider, database, botcore } = require('../lib/index.cjs') -// const { inout, provider, database, botcore } = require('../packages/index') - -// const makeFlow = () => { -// const flowA = inout -// .addKeyword('hola') -// .addAnswer('Bienvenido a tu tienda 🥲') -// .addAnswer('escribe *catalogo* o *ofertas*') -// .toJson() - -// return [...flowA] -// } - -// test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { -// const adapterFlow = await inout.create(makeFlow()) -// const adapterProvider = await provider.create({ -// vendor: 'mock', -// credentials: {}, -// }) -// const adapterDB = await database.create({ -// engine: 'mock', -// credentials: {}, -// }) - -// let messages = [] - -// const bot = await botcore.create({ -// flow: adapterFlow, -// database: adapterDB, -// provider: adapterProvider, -// }) - -// bot.on('message', (ctx) => messages.push(ctx)) -// bot.emit('message', 'hola') -// bot.emit('message', 'otro') - -// const getHistoryFromDB = adapterDB.engineDB.listHistory - -// assert.is(messages.join(), ['hola', 'otro'].join()) -// assert.is( -// getHistoryFromDB.join(), -// [ -// 'hola', -// 'Bienvenido a tu tienda 🥲', -// 'escribe *catalogo* o *ofertas*', -// 'otro', -// ].join() -// ) -// }) - -// test.run() diff --git a/package-lock.json b/package-lock.json index e1e8de9..48ae943 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,9 @@ { - "name": "bot-whatsapp", + "name": "@bot-whatsapp/root", "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { - "@babel/parser": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", - "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" - }, "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -49,62 +44,6 @@ } } }, - "@fast-csv/format": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", - "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", - "requires": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isboolean": "^3.0.3", - "lodash.isequal": "^4.5.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0" - } - }, - "@fast-csv/parse": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", - "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", - "requires": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.groupby": "^4.6.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0", - "lodash.isundefined": "^3.0.1", - "lodash.uniq": "^4.5.0" - } - }, - "@google-cloud/dialogflow": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@google-cloud/dialogflow/-/dialogflow-5.2.1.tgz", - "integrity": "sha512-znz5GBdICmAa9JvVHCHMfc1uAoV5zVcYssnyZNkUHhK0pvJXRRR1rASWKtD88mVrQnCozbLqewopSYt0qqNBqw==", - "requires": { - "google-gax": "^3.3.0" - } - }, - "@grpc/grpc-js": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.2.tgz", - "integrity": "sha512-MqqbVynbe3VUSnApFW/dpkDaa9T1ASqRnMWeSPGFO/Ro98R7XUDLacfeBa7RaSI1iFu9GYk5gBKARf0zipFe4w==", - "requires": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - } - }, - "@grpc/proto-loader": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", - "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", - "requires": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - } - }, "@humanwhocodes/config-array": { "version": "0.11.6", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", @@ -199,306 +138,6 @@ "fastq": "^1.6.0" } }, - "@opencensus/core": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", - "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", - "dev": true, - "requires": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "@opencensus/propagation-b3": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", - "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", - "dev": true, - "requires": { - "@opencensus/core": "^0.0.8", - "uuid": "^3.2.1" - }, - "dependencies": { - "@opencensus/core": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", - "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", - "dev": true, - "requires": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "@pedroslopez/moduleraid": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz", - "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==" - }, - "@pm2/agent": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz", - "integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==", - "dev": true, - "requires": { - "async": "~3.2.0", - "chalk": "~3.0.0", - "dayjs": "~1.8.24", - "debug": "~4.3.1", - "eventemitter2": "~5.0.1", - "fast-json-patch": "^3.0.0-1", - "fclone": "~1.0.11", - "nssocket": "0.6.0", - "pm2-axon": "~4.0.1", - "pm2-axon-rpc": "~0.7.0", - "proxy-agent": "~5.0.0", - "semver": "~7.2.0", - "ws": "~7.4.0" - }, - "dependencies": { - "dayjs": { - "version": "1.8.36", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz", - "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", - "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==", - "dev": true - } - } - }, - "@pm2/io": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.0.tgz", - "integrity": "sha512-3rToDVJaRoob5Lq8+7Q2TZFruoEkdORxwzFpZaqF4bmH6Bkd7kAbdPrI/z8X6k1Meq5rTtScM7MmDgppH6aLlw==", - "dev": true, - "requires": { - "@opencensus/core": "0.0.9", - "@opencensus/propagation-b3": "0.0.8", - "async": "~2.6.1", - "debug": "~4.3.1", - "eventemitter2": "^6.3.1", - "require-in-the-middle": "^5.0.0", - "semver": "6.3.0", - "shimmer": "^1.2.0", - "signal-exit": "^3.0.3", - "tslib": "1.9.3" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@pm2/js-api": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.7.tgz", - "integrity": "sha512-jiJUhbdsK+5C4zhPZNnyA3wRI01dEc6a2GhcQ9qI38DyIk+S+C8iC3fGjcjUbt/viLYKPjlAaE+hcT2/JMQPXw==", - "dev": true, - "requires": { - "async": "^2.6.3", - "axios": "^0.21.0", - "debug": "~4.3.1", - "eventemitter2": "^6.3.1", - "ws": "^7.0.0" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@pm2/pm2-version-check": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", - "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", - "dev": true, - "requires": { - "debug": "^4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, "@rollup/plugin-commonjs": { "version": "23.0.2", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", @@ -557,32 +196,6 @@ "picomatch": "^2.3.1" } }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" - }, "@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", @@ -595,105 +208,18 @@ "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, - "@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "requires": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - }, - "@types/node": { - "version": "14.18.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.32.tgz", - "integrity": "sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==" - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, "acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true }, - "adler-32": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", - "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -706,318 +232,43 @@ "uri-js": "^4.2.2" } }, - "amp": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", - "integrity": "sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==", - "dev": true - }, - "amp-message": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", - "integrity": "sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==", - "dev": true, - "requires": { - "amp": "0.3.1" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "color-convert": "^2.0.1" } }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dev": true, - "requires": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.0" - } + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, - "bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==" - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "blessed": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", - "integrity": "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bodec": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", - "integrity": "sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==", - "dev": true - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, "c8": { "version": "7.12.0", "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", @@ -1077,111 +328,28 @@ } } }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "requires": { - "lodash": "^4.17.15" - } - }, - "cfb": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", - "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", - "requires": { - "adler-32": "~1.3.0", - "crc-32": "~1.2.0" - } - }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "charm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", - "integrity": "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "cli-tableau": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", - "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", - "dev": true, - "requires": { - "chalk": "3.0.0" - } - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, - "codepage": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", - "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -1189,12 +357,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "commondir": { @@ -1203,44 +366,11 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, - "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dev": true, - "requires": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "convert-source-map": { "version": "1.9.0", @@ -1248,67 +378,6 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" - }, - "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - } - }, - "croner": { - "version": "4.1.97", - "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz", - "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==", - "dev": true - }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1331,52 +400,11 @@ } } }, - "culvert": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", - "integrity": "sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==", - "dev": true - }, - "data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "dev": true - }, - "dayjs": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", - "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "degenerator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz", - "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==", - "dev": true, - "requires": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0", - "vm2": "^3.9.8" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "dequal": { "version": "2.0.3", @@ -1384,25 +412,6 @@ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-package-manager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", - "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", - "dev": true, - "requires": { - "execa": "^5.1.1" - } - }, - "devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" - }, "diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", @@ -1418,169 +427,17 @@ "esutils": "^2.0.2" } }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "dev": true, - "requires": { - "shimmer": "^1.2.0" - } - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "dependencies": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" - } - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-string-regexp": { "version": "4.0.0", @@ -1588,25 +445,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - } - } - }, "eslint": { "version": "8.26.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", @@ -1802,23 +640,20 @@ "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true }, "espree": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -1840,7 +675,8 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true }, "estree-walker": { "version": "2.0.2", @@ -1851,155 +687,15 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "eventemitter2": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", - "integrity": "sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "exceljs": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.3.0.tgz", - "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", - "requires": { - "archiver": "^5.0.0", - "dayjs": "^1.8.34", - "fast-csv": "^4.3.1", - "jszip": "^3.5.0", - "readable-stream": "^3.6.0", - "saxes": "^5.0.1", - "tmp": "^0.2.0", - "unzipper": "^0.10.11", - "uuid": "^8.3.0" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - } - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "fast-csv": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", - "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", - "requires": { - "@fast-csv/format": "4.3.5", - "@fast-csv/parse": "4.3.6" - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-json-patch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", - "dev": true - }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2009,12 +705,8 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "fastq": { "version": "1.13.0", @@ -2025,20 +717,6 @@ "reusify": "^1.0.4" } }, - "fclone": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", - "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==", - "dev": true - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "requires": { - "pend": "~1.2.0" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2048,54 +726,6 @@ "flat-cache": "^3.0.4" } }, - "file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", - "requires": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" - } - }, - "file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -2112,21 +742,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "fluent-ffmpeg": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", - "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", - "requires": { - "async": ">=0.2.9", - "which": "^1.1.1" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, "foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -2137,41 +752,11 @@ "signal-exit": "^3.0.2" } }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "frac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", - "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "fsevents": { "version": "2.3.2", @@ -2180,166 +765,17 @@ "dev": true, "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", - "dev": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gaxios": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.0.2.tgz", - "integrity": "sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og==", - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - } - }, - "gcp-metadata": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.1.tgz", - "integrity": "sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g==", - "requires": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - } - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "git-node-fs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", - "integrity": "sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==", - "dev": true - }, - "git-sha1": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz", - "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2349,15 +785,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, "globals": { "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", @@ -2367,89 +794,17 @@ "type-fest": "^0.20.2" } }, - "google-auth-library": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", - "integrity": "sha512-y6bw1yTWMVgs1vGJwBZ3uu+uIClfgxQfsEVcTNKjQeNQOVwox69+ZUgTeTAzrh+74hBqrk1gWyb9RsQVDI7seg==", - "requires": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.0.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - } - }, - "google-gax": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.5.2.tgz", - "integrity": "sha512-AyP53w0gHcWlzxm+jSgqCR3Xu4Ld7EpSjhtNBnNhzwwWaIUyphH9kBGNIEH+i4UGkTUXOY29K/Re8EiAvkBRGw==", - "requires": { - "@grpc/grpc-js": "~1.7.0", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^8.0.2", - "is-stream-ended": "^0.1.4", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.1.2", - "protobufjs-cli": "1.0.2", - "retry-request": "^5.0.0" - } - }, - "google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "requires": { - "node-forge": "^1.3.1" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, "grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", - "requires": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "html-escaper": { "version": "2.0.2", @@ -2457,106 +812,12 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "husky": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", - "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2577,6 +838,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -2585,43 +847,9 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2631,7 +859,8 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-glob": { "version": "4.0.3", @@ -2642,12 +871,6 @@ "is-extglob": "^2.1.1" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -2663,25 +886,11 @@ "@types/estree": "*" } }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -2710,26 +919,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "js-git": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", - "integrity": "sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==", - "dev": true, - "requires": { - "bodec": "^0.1.0", - "culvert": "^0.1.2", - "git-sha1": "^0.1.2", - "pako": "^0.2.5" - }, - "dependencies": { - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", - "dev": true - } - } - }, "js-sdsl": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", @@ -2745,51 +934,6 @@ "argparse": "^2.0.1" } }, - "js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "requires": { - "xmlcreate": "^2.0.4" - } - }, - "jsdoc": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", - "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", - "requires": { - "@babel/parser": "^7.9.4", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - } - } - }, - "json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "requires": { - "bignumber.js": "^9.0.0" - } - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2802,281 +946,18 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "optional": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsqr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", - "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" - }, - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "requires": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "requires": { - "graceful-fs": "^4.1.9" - } - }, "kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true }, - "lazy": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", - "dev": true - }, - "lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "requires": { - "readable-stream": "^2.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "requires": { - "immediate": "~3.0.5" - } - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, - "lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" - }, - "lodash.isnil": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", - "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isundefined": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", - "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, "magic-string": { "version": "0.26.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", @@ -3103,393 +984,36 @@ } } }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdown-it-anchor": { - "version": "8.6.5", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz", - "integrity": "sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ==" - }, - "marked": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", - "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "dev": true - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, "mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "mysql": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", - "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", - "requires": { - "bignumber.js": "9.0.0", - "readable-stream": "2.3.7", - "safe-buffer": "5.1.2", - "sqlstring": "2.3.1" - }, - "dependencies": { - "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "dev": true - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - }, - "node-webpmux": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.3.tgz", - "integrity": "sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nssocket": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", - "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", - "dev": true, - "requires": { - "eventemitter2": "~0.4.14", - "lazy": "~1.0.11" - }, - "dependencies": { - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", - "dev": true - } - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "requires": { "wrappy": "1" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "pac-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", - "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^5.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pac-resolver": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz", - "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==", - "dev": true, - "requires": { - "degenerator": "^3.0.2", - "ip": "^1.1.5", - "netmask": "^2.0.2" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3499,20 +1023,17 @@ "callsites": "^3.0.0" } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true }, "path-key": { "version": "3.1.1", @@ -3520,252 +1041,18 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "pidusage": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.1.tgz", - "integrity": "sha512-/UlE6DQIe6yuDvm3v6756U0ErEsj60FLQTRZ4qPQF9b5yZKhf4c0llzD0tZpyE03nn8HQoLniFgKsL0ABB3nCg==", - "dev": true, - "requires": { - "safe-buffer": "^5.2.1" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } - }, - "pm2": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.2.2.tgz", - "integrity": "sha512-mASxgh/MZhtVze/wijGf+tE6JKdA3lEq64FOfXVhhArkuk9Qxl4ePw9XgFJaArOXnU3bde+KbeAJHYxppVvYBQ==", - "dev": true, - "requires": { - "@pm2/agent": "~2.0.0", - "@pm2/io": "~5.0.0", - "@pm2/js-api": "~0.6.7", - "@pm2/pm2-version-check": "^1.0.4", - "async": "~3.2.0", - "blessed": "0.1.81", - "chalk": "3.0.0", - "chokidar": "^3.5.3", - "cli-tableau": "^2.0.0", - "commander": "2.15.1", - "croner": "~4.1.92", - "dayjs": "~1.11.5", - "debug": "^4.3.1", - "enquirer": "2.3.6", - "eventemitter2": "5.0.1", - "fclone": "1.0.11", - "mkdirp": "1.0.4", - "needle": "2.4.0", - "pidusage": "~3.0", - "pm2-axon": "~4.0.1", - "pm2-axon-rpc": "~0.7.1", - "pm2-deploy": "~1.0.2", - "pm2-multimeter": "^0.1.2", - "pm2-sysmonit": "^1.2.8", - "promptly": "^2", - "semver": "^7.2", - "source-map-support": "0.5.21", - "sprintf-js": "1.1.2", - "vizion": "~2.2.1", - "yamljs": "0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pm2-axon": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz", - "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==", - "dev": true, - "requires": { - "amp": "~0.3.1", - "amp-message": "~0.1.1", - "debug": "^4.3.1", - "escape-string-regexp": "^4.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pm2-axon-rpc": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz", - "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", - "dev": true, - "requires": { - "debug": "^4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "pm2-deploy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", - "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", - "dev": true, - "requires": { - "run-series": "^1.1.8", - "tv4": "^1.3.0" - } - }, - "pm2-multimeter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", - "integrity": "sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==", - "dev": true, - "requires": { - "charm": "~0.1.1" - } - }, - "pm2-sysmonit": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz", - "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==", - "dev": true, - "optional": true, - "requires": { - "async": "^3.2.0", - "debug": "^4.3.1", - "pidusage": "^2.0.21", - "systeminformation": "^5.7", - "tx2": "~1.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "optional": true - }, - "pidusage": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", - "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.2.1" - } - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - }, "prettier": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "promptly": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", - "integrity": "sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==", - "dev": true, - "requires": { - "read": "^1.0.4" - } - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -3784,314 +1071,18 @@ } } }, - "proto3-json-serializer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz", - "integrity": "sha512-SjXwUWe/vANGs/mJJTbw5++7U67nwsymg7qsoPtw6GiXqw3kUy8ByojrlEdVE2efxAdKreX8WkDafxvYW95ZQg==", - "requires": { - "protobufjs": "^7.0.0" - } - }, - "protobufjs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", - "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "dependencies": { - "long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" - } - } - }, - "protobufjs-cli": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.0.2.tgz", - "integrity": "sha512-cz9Pq9p/Zs7okc6avH20W7QuyjTclwJPgqXG11jNaulfS3nbVisID8rC+prfgq0gbZE0w9LBFd1OKFF03kgFzg==", - "requires": { - "chalk": "^4.0.0", - "escodegen": "^1.13.0", - "espree": "^9.0.0", - "estraverse": "^5.1.0", - "glob": "^8.0.0", - "jsdoc": "^3.6.3", - "minimist": "^1.2.0", - "semver": "^7.1.2", - "tmp": "^0.2.1", - "uglify-js": "^3.7.7" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz", - "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==", - "dev": true, - "requires": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^5.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "puppeteer": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", - "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", - "requires": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" - } - } - }, - "qr-image": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", - "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==" - }, - "qrcode-terminal": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", - "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - } - }, - "readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", - "requires": { - "minimatch": "^5.1.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -4101,54 +1092,8 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-in-the-middle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", - "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "requires": { - "lodash": "^4.17.14" - } - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true }, "resolve-from": { "version": "4.0.0", @@ -4156,30 +1101,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "retry-request": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", - "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", - "requires": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4190,6 +1111,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -4212,12 +1134,6 @@ "queue-microtask": "^1.2.2" } }, - "run-series": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", - "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", - "dev": true - }, "sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -4227,86 +1143,6 @@ "mri": "^1.1.0" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4322,22 +1158,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -4350,265 +1170,47 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "dependencies": { - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - } - } - }, - "socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true - }, - "sqlstring": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", - "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==" - }, - "ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "requires": { - "frac": "~1.1.2" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stormdb": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/stormdb/-/stormdb-0.6.0.tgz", - "integrity": "sha512-B5ki9Xk8xLjWPKorWA6iE8yTFfIFspZKdjfOQc7wvsnMGtj16PWknFxo4XLSD1MDFLPsTkzwYaiubk708j/HkQ==" - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - } + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "systeminformation": { - "version": "5.12.7", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.7.tgz", - "integrity": "sha512-Kubdu6YzMWtGEsnGF5ddohvIWsxOlEkV0P/3oKTPl56ADOowDiWBR59RpIRvbijXwEQrnRKeF3MOuH7apdEc/g==", - "dev": true, - "optional": true - }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==" - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -4626,183 +1228,12 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tv4": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", - "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", - "dev": true - }, - "tx2": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", - "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", - "dev": true, - "optional": true, - "requires": { - "json-stringify-safe": "^5.0.1" - } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "requires": { - "prelude-ls": "~1.1.2" - } - }, "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "uglify-js": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", - "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==" - }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4812,21 +1243,6 @@ "punycode": "^2.1.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, "uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -4850,136 +1266,17 @@ "convert-source-map": "^1.6.0" } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "vizion": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", - "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==", - "dev": true, - "requires": { - "async": "^2.6.3", - "git-node-fs": "^1.0.0", - "ini": "^1.3.5", - "js-git": "^0.7.8" - }, - "dependencies": { - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, - "vm2": { - "version": "3.9.11", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", - "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatsapp-web.js": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", - "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", - "requires": { - "@pedroslopez/moduleraid": "^5.0.2", - "archiver": "^5.3.1", - "fluent-ffmpeg": "^2.1.2", - "fs-extra": "^10.1.0", - "jsqr": "^1.3.1", - "mime": "^3.0.0", - "node-fetch": "^2.6.5", - "node-webpmux": "^3.1.0", - "puppeteer": "^13.0.0", - "unzipper": "^0.10.11" - }, - "dependencies": { - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "optional": true - } - } - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" - }, - "word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4989,85 +1286,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true - }, - "xlsx": { - "version": "0.18.5", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", - "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", - "requires": { - "adler-32": "~1.3.0", - "cfb": "~1.2.1", - "codepage": "~1.15.0", - "crc-32": "~1.2.1", - "ssf": "~0.11.2", - "wmf": "~1.0.1", - "word": "~0.3.0" - } - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - } - } + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -5081,32 +1313,14 @@ "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true - }, - "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - } } } } diff --git a/package.json b/package.json index 3e5b888..301ee9d 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,11 @@ "cli": "node ./packages/cli/bin/cli.js" }, "workspaces": [ - "packages/*", + "packages/cli", + "packages/core", + "packages/database", + "packages/io", + "packages/provider", "docs" ], "keywords": [ @@ -47,34 +51,13 @@ "url": "https://github.com/leifermendez/bot-whatsapp" }, "license": "ISC", - "dependencies": { - "@google-cloud/dialogflow": "^5.2.0", - "cors": "^2.8.5", - "dotenv": "^16.0.1", - "exceljs": "^4.3.0", - "express": "^4.18.1", - "file-type": "^17.1.6", - "mime-db": "^1.52.0", - "moment": "^2.29.4", - "mysql": "^2.18.1", - "qr-image": "^3.2.0", - "qrcode-terminal": "^0.12.0", - "socket.io": "^4.5.1", - "stormdb": "^0.6.0", - "whatsapp-web.js": "^1.18.0", - "xlsx": "^0.18.5" - }, + "dependencies": {}, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", "c8": "^7.12.0", - "cross-env": "^7.0.3", - "cross-spawn": "^7.0.3", - "detect-package-manager": "^2.0.1", + "prettier": "^2.7.1", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", - "kleur": "^4.1.5", - "pm2": "^5.2.0", - "prettier": "^2.7.1", "prompts": "^2.4.2", "rimraf": "^3.0.2", "rollup": "^3.2.3", diff --git a/packages/cli/TODO.md b/packages/cli/TODO.md deleted file mode 100644 index 7e7bc56..0000000 --- a/packages/cli/TODO.md +++ /dev/null @@ -1,4 +0,0 @@ -- [x] Revisar version de NODE -- [x] Revisar OS -- [x] Obtener Package Manager -- [x] Revisar las libreria de WhatsappWeb para obtener version reciente diff --git a/packages/cli/bin/cli.js b/packages/cli/bin/cli.js index 83e966c..3af89c4 100644 --- a/packages/cli/bin/cli.js +++ b/packages/cli/bin/cli.js @@ -1,3 +1,3 @@ #!/usr/bin/env node -const index = require('../lib/bundle.cjs') +const index = require('../../../lib/cli/bundle.cli.cjs') index.startInteractive() diff --git a/packages/cli/lib/bundle.cjs b/packages/cli/lib/bundle.cjs deleted file mode 100644 index 95f7192..0000000 --- a/packages/cli/lib/bundle.cjs +++ /dev/null @@ -1,328 +0,0 @@ -'use strict' - -var require$$0$3 = require('prompts') -var require$$0 = require('kleur') -var require$$0$1 = require('fs') -var require$$1$1 = require('path') -var require$$1 = require('cross-spawn') -var require$$2 = require('detect-package-manager') -var require$$0$2 = require('rimraf') - -const { red: red$2 } = require$$0 -const spawn = require$$1 -const { detect } = require$$2 -const PKG_OPTION = { - npm: 'install', - yarn: 'add', - pnpm: 'add', -} - -const getPkgManage = async () => { - const pkg = await detect() - return pkg -} - -const installDeps$1 = (pkgManager, packageList) => { - const errorMessage = `Ocurrio un error instalando ${packageList}` - let childProcess = [] - - const installSingle = (pkgInstall) => () => { - new Promise((resolve) => { - try { - childProcess = spawn( - pkgManager, - [PKG_OPTION[pkgManager], pkgInstall], - { - stdio: 'inherit', - } - ) - - childProcess.on('error', (e) => { - console.error(e) - console.error(red$2(errorMessage)) - resolve() - }) - - childProcess.on('close', (code) => { - if (code === 0) { - resolve() - } else { - console.error(code) - console.error(red$2(errorMessage)) - } - }) - - resolve() - } catch (e) { - console.error(e) - console.error(red$2(errorMessage)) - } - }) - } - - if (typeof packageList === 'string') { - childProcess.push(installSingle(packageList)) - } else { - for (const pkg of packageList) { - childProcess.push(installSingle(pkg)) - } - } - - const runInstall = () => { - return Promise.all(childProcess.map((i) => i())) - } - return { runInstall } -} - -var tool = { getPkgManage, installDeps: installDeps$1 } - -const { readFileSync, existsSync } = require$$0$1 -const { join: join$2 } = require$$1$1 -const { installDeps } = tool - -const PATHS_DIR = [ - join$2(__dirname, 'pkg-to-update.json'), - join$2(__dirname, '..', 'pkg-to-update.json'), -] - -const PKG_TO_UPDATE = () => { - const PATH_INDEX = PATHS_DIR.findIndex((a) => existsSync(a)) - const data = readFileSync(PATHS_DIR[PATH_INDEX], 'utf-8') - const dataParse = JSON.parse(data) - const pkg = Object.keys(dataParse).map((n) => `${n}@${dataParse[n]}`) - return pkg -} - -const installAll$1 = async () => { - // const pkg = await getPkgManage() - installDeps('npm', PKG_TO_UPDATE()).runInstall() -} - -var install = { installAll: installAll$1 } - -const rimraf = require$$0$2 -const { yellow: yellow$2 } = require$$0 -const { join: join$1 } = require$$1$1 - -const PATH_WW = [ - join$1(process.cwd(), '.wwebjs_auth'), - join$1(process.cwd(), 'session.json'), -] - -const cleanSession$1 = () => { - const queue = [] - for (const PATH of PATH_WW) { - console.log(yellow$2(`😬 Eliminando: ${PATH}`)) - queue.push(rimraf(PATH, () => Promise.resolve())) - } - return Promise.all(queue) -} - -var clean = { cleanSession: cleanSession$1 } - -const { red: red$1, yellow: yellow$1, green, bgCyan } = require$$0 - -const checkNodeVersion$1 = () => { - console.log(bgCyan('🚀 Revisando tu Node.js')) - const version = process.version - const majorVersion = parseInt(version.replace('v', '').split('.').shift()) - if (majorVersion < 16) { - console.error( - red$1( - `🔴 Se require Node.js 16 o superior. Actualmente esta ejecutando Node.js ${version}` - ) - ) - process.exit(1) - } - console.log(green(`Node.js combatible ${version}`)) - console.log(``) -} - -const checkOs$1 = () => { - console.log(bgCyan('🙂 Revisando tu Sistema Operativo')) - const os = process.platform - if (!os.includes('win32')) { - const messages = [ - `El sistema operativo actual (${os}) posiblemente requiera`, - `una confiuración adicional referente al puppeter`, - ``, - `Recuerda pasar por el WIKI`, - `🔗 https://github.com/leifermendez/bot-whatsapp/wiki/Instalaci%C3%B3n`, - ``, - ] - - console.log(yellow$1(messages.join(' \n'))) - } - - console.log(``) -} - -var check = { checkNodeVersion: checkNodeVersion$1, checkOs: checkOs$1 } - -const { writeFile } = require$$0$1.promises -const { join } = require$$1$1 - -/** - * JSON_TEMPLATE = {[key:string]{...pros}} - */ -const JSON_TEMPLATE = { - provider: { - vendor: '', - }, - database: { - host: '', - password: '', - port: '', - username: '', - db: '', - }, - io: { - vendor: '', - }, -} - -const PATH_CONFIG = join(process.cwd(), 'config.json') - -const jsonConfig$1 = () => { - return writeFile( - PATH_CONFIG, - JSON.stringify(JSON_TEMPLATE, null, 2), - 'utf-8' - ) -} - -var configuration = { jsonConfig: jsonConfig$1 } - -const prompts = require$$0$3 -const { yellow, red } = require$$0 -const { installAll } = install -const { cleanSession } = clean -const { checkNodeVersion, checkOs } = check -const { jsonConfig } = configuration - -const startInteractive$1 = async () => { - const questions = [ - { - type: 'text', - name: 'dependencies', - message: - 'Quieres actualizar las librerias "whatsapp-web.js"? (Y/n)', - }, - { - type: 'text', - name: 'cleanTmp', - message: 'Quieres limpiar la session del bot? (Y/n)', - }, - { - type: 'multiselect', - name: 'providerWs', - message: 'Proveedor de Whatsapp', - choices: [ - { title: 'whatsapp-web.js', value: 'whatsapp-web.js' }, - { title: 'API Oficial (Meta)', value: 'meta', disabled: true }, - { title: 'Twilio', value: 'twilio', disabled: true }, - ], - max: 1, - hint: 'Espacio para selecionar', - instructions: '↑/↓', - }, - { - type: 'multiselect', - name: 'providerDb', - message: 'Cual base de datos quieres usar', - choices: [ - { title: 'JSONFile', value: 'json' }, - { title: 'MySQL', value: 'mysql', disabled: true }, - { title: 'Mongo', value: 'mongo', disabled: true }, - ], - max: 1, - hint: 'Espacio para selecionar', - instructions: '↑/↓', - }, - ] - - console.clear() - checkNodeVersion() - checkOs() - const onCancel = () => { - console.log('Proceso cancelado!') - return true - } - const response = await prompts(questions, { onCancel }) - const { - dependencies = '', - cleanTmp = '', - providerDb = [], - providerWs = [], - } = response - /** - * Question #1 - * @returns - */ - const installOrUdpateDep = async () => { - const answer = dependencies.toLowerCase() || 'n' - if (answer.includes('n')) return true - - if (answer.includes('y')) { - await installAll() - return true - } - } - - /** - * Question #2 - * @returns - */ - const cleanAllSession = async () => { - const answer = cleanTmp.toLowerCase() || 'n' - if (answer.includes('n')) return true - - if (answer.includes('y')) { - await cleanSession() - return true - } - } - - const vendorProvider = async () => { - if (!providerWs.length) { - console.log( - red( - `Debes de seleccionar una WS Provider. Tecla [Space] para seleccionar` - ) - ) - process.exit(1) - } - console.log(yellow(`'Deberia crer una carpeta en root/provider'`)) - return true - } - - const dbProvider = async () => { - const answer = providerDb - if (!providerDb.length) { - console.log( - red( - `Debes de seleccionar una DB Provider. Tecla [Space] para seleccionar` - ) - ) - process.exit(1) - } - if (answer === 'json') { - console.log('Deberia crer una carpeta en root/data') - return 1 - } - } - - await installOrUdpateDep() - await cleanAllSession() - await vendorProvider() - await dbProvider() - await jsonConfig() -} - -var interactive = { startInteractive: startInteractive$1 } - -const { startInteractive } = interactive -if (process.env.NODE_ENV === 'dev') startInteractive() -var cli = { startInteractive } - -module.exports = cli diff --git a/packages/cli/package.json b/packages/cli/package.json index 43b416e..6ed3d2b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -4,7 +4,10 @@ "description": "", "main": "index.js", "private": true, - "keywords": [], - "author": "", - "license": "ISC" + "devDependencies": { + "cross-env": "^7.0.3", + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5" + } } diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index 7bf573d..22da38a 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -1,5 +1,8 @@ /** - * Clase principal del BOT + * [ ] Escuchar eventos del provider + * [ ] Guardar historial en db + * [ ] Buscar mensaje en flow + * */ class BotClass { flowClass @@ -15,11 +18,26 @@ class BotClass { ) } + /** + * @private + * @param {*} ctxMessage + */ handleOnMessage = (ctxMessage) => { this.databaseClass.saveLog(ctxMessage) this.continue(ctxMessage) } + handleEvents = (eventName) => { + if (eventName === 'message') return + if (eventName === 'auth_success') return + if (eventName === 'auth_error') return + } + + /** + * @private + * @param {*} message + * @param {*} ref + */ continue = (message, ref = false) => { const responde = this.flowClass.find(message, ref) if (responde) { diff --git a/packages/core/tests/bot.class.test.js b/packages/core/tests/bot.class.test.js new file mode 100644 index 0000000..099c040 --- /dev/null +++ b/packages/core/tests/bot.class.test.js @@ -0,0 +1,22 @@ +const { EventEmitter } = require('node:events') +const { test } = require('uvu') +const assert = require('uvu/assert') +const { create } = require('../') + +class MockFlow {} + +class MockDB {} + +class MockProvider extends EventEmitter {} + +test(`BotClass`, async () => { + const setting = { + flow: new MockFlow(), + database: new MockDB(), + provider: new MockProvider(), + } + const bot = await create(setting) + bot.on('message', (ctx) => console.log(ctx)) +}) + +test.run() From 6afb019f9dc89b6fb7e0ce396b1cbce6510bb042 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 10 Nov 2022 20:17:07 +0100 Subject: [PATCH 044/459] web-whatsapp work --- README.md | 20 +- package-lock.json | 2686 ++++++++++++++--- package.json | 6 +- packages/core/classes/bot.class.js | 14 +- packages/core/classes/provider.class.js | 25 + packages/core/index.js | 8 +- packages/provider/adapters/mock.js | 23 +- packages/provider/adapters/twilio.js | 20 +- packages/provider/adapters/web-whatsapp.js | 71 + packages/provider/classes/provider.class.js | 13 - packages/provider/index.js | 22 - packages/provider/package.json | 6 +- .../provider/tests/provider.class.test.js | 13 + qr.svg | 1 + 14 files changed, 2374 insertions(+), 554 deletions(-) create mode 100644 packages/core/classes/provider.class.js create mode 100644 packages/provider/adapters/web-whatsapp.js delete mode 100644 packages/provider/classes/provider.class.js create mode 100644 packages/provider/tests/provider.class.test.js create mode 100644 qr.svg diff --git a/README.md b/README.md index 3eda5e7..d636669 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -- [ ] Evitar dependencias - -**Comunidad** - -> Forma parte de este proyecto. - -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +- [ ] Evitar dependencias + +**Comunidad** + +> Forma parte de este proyecto. + +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) diff --git a/package-lock.json b/package-lock.json index 48ae943..04c0e7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,65 @@ { "name": "@bot-whatsapp/root", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@bcoe/v8-coverage": { + "packages": { + "": { + "name": "@bot-whatsapp/root", + "version": "1.0.0", + "license": "ISC", + "workspaces": [ + "packages/*", + "docs" + ], + "devDependencies": { + "@rollup/plugin-commonjs": "^23.0.2", + "c8": "^7.12.0", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.5.0", + "prettier": "^2.7.1", + "prompts": "^2.4.2", + "rimraf": "^3.0.2", + "rollup": "^3.2.3", + "uvu": "^0.5.6" + }, + "engines": { + "node": "16.x", + "npm": ">=6.0.0" + } + }, + "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@eslint/eslintrc": { + "node_modules/@bot-whatsapp/cli": { + "resolved": "packages/cli", + "link": true + }, + "node_modules/@bot-whatsapp/core": { + "resolved": "packages/core", + "link": true + }, + "node_modules/@bot-whatsapp/database": { + "resolved": "packages/database", + "link": true + }, + "node_modules/@bot-whatsapp/io": { + "resolved": "packages/io", + "link": true + }, + "node_modules/@bot-whatsapp/provider": { + "resolved": "packages/provider", + "link": true + }, + "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, - "requires": { + "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", @@ -26,124 +70,126 @@ "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "@humanwhocodes/config-array": { + "node_modules/@humanwhocodes/config-array": { "version": "0.11.6", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", "dev": true, - "requires": { + "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": ">=10.10.0" } }, - "@humanwhocodes/module-importer": { + "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, - "@humanwhocodes/object-schema": { + "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@istanbuljs/schema": { + "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "@jridgewell/resolve-uri": { + "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, - "@jridgewell/sourcemap-codec": { + "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, - "@jridgewell/trace-mapping": { + "node_modules/@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" } }, - "@nodelib/fs.scandir": { + "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "requires": { + "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "@nodelib/fs.stat": { + "node_modules/@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8" + } }, - "@nodelib/fs.walk": { + "node_modules/@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "requires": { + "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "@rollup/plugin-commonjs": { + "node_modules/@pedroslopez/moduleraid": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz", + "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==" + }, + "node_modules/@rollup/plugin-commonjs": { "version": "23.0.2", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", "dev": true, - "requires": { + "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", @@ -151,130 +197,385 @@ "is-reference": "1.2.1", "magic-string": "^0.26.4" }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true } } }, - "@rollup/pluginutils": { + "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/pluginutils": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", "dev": true, - "requires": { + "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "@types/estree": { + "node_modules/@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, - "@types/istanbul-lib-coverage": { + "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, - "acorn": { + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "optional": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "acorn-jsx": { + "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "ajv": { + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "argparse": { + "node_modules/archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "optional": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "optional": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "balanced-match": { + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "brace-expansion": { + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "optional": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "optional": true + }, + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "c8": { + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "optional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "optional": true, + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/c8": { "version": "7.12.0", "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", "dev": true, - "requires": { + "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@istanbuljs/schema": "^0.1.3", "find-up": "^5.0.0", @@ -288,169 +589,396 @@ "yargs": "^16.2.0", "yargs-parser": "^20.2.9" }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - } + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" } }, - "callsites": { + "node_modules/c8/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "cliui": { + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "optional": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "requires": { + "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, - "color-convert": { + "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { + "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "commondir": { + "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, - "concat-map": { + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "optional": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "convert-source-map": { + "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "cross-spawn": { + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "optional": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "optional": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "optional": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "deep-is": { + "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "dequal": { + "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "diff": { + "node_modules/detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.981744", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", + "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" + }, + "node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "doctrine": { + "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "requires": { + "dependencies": { "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "emoji-regex": { + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "optional": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "escalade": { + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "eslint": { + "node_modules/eslint": { "version": "8.26.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", "dev": true, - "requires": { + "dependencies": { "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -491,816 +1019,1922 @@ "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - } + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "eslint-config-prettier": { + "node_modules/eslint-config-prettier": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } }, - "eslint-scope": { + "node_modules/eslint-scope": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, - "requires": { + "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "eslint-utils": { + "node_modules/eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "requires": { + "dependencies": { "eslint-visitor-keys": "^2.0.0" }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "eslint-visitor-keys": { + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } }, - "espree": { + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/espree": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, - "requires": { + "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "esquery": { + "node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "esrecurse": { + "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" } }, - "estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "estree-walker": { + "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "esutils": { + "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "fast-deep-equal": { + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "fast-levenshtein": { + "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "fastq": { + "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, - "requires": { + "dependencies": { "reusify": "^1.0.4" } }, - "file-entry-cache": { + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "requires": { + "dependencies": { "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "flat-cache": { + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "requires": { + "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "flatted": { + "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "foreground-child": { + "node_modules/fluent-ffmpeg": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", + "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", + "dependencies": { + "async": ">=0.2.9", + "which": "^1.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, - "requires": { + "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" } }, - "fs.realpath": { + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "get-caller-file": { + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "glob": { + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "globals": { + "node_modules/globals": { "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, - "requires": { + "dependencies": { "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "grapheme-splitter": { + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "optional": true + }, + "node_modules/grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "has-flag": { + "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "html-escaper": { + "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "ignore": { + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, - "import-fresh": { + "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "requires": { + "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-glob": { + "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-path-inside": { + "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-reference": { + "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, - "requires": { + "dependencies": { "@types/estree": "*" } }, - "isexe": { + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "optional": true + }, + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "istanbul-lib-coverage": { + "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "istanbul-lib-report": { + "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, - "requires": { + "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" } }, - "istanbul-reports": { + "node_modules/istanbul-reports": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, - "requires": { + "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "js-sdsl": { + "node_modules/js-sdsl": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", "dev": true }, - "js-yaml": { + "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "requires": { + "dependencies": { "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "json-schema-traverse": { + "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "json-stable-stringify-without-jsonify": { + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "kleur": { + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsqr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", + "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" + }, + "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "lodash.merge": { + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "optional": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "optional": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "optional": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "optional": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "optional": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "optional": true + }, + "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "magic-string": { + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "optional": true + }, + "node_modules/magic-string": { "version": "0.26.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, - "requires": { + "dependencies": { "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" } }, - "make-dir": { + "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "requires": { + "dependencies": { "semver": "^6.0.0" }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "minimatch": { + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "mri": { + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "natural-compare": { + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "once": { + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-webpmux": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.3.tgz", + "integrity": "sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "parent-module": { + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "requires": { + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "picomatch": { + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "prettier": { + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prettier": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } }, - "prompts": { + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "requires": { + "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" }, - "dependencies": { - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "punycode": { + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "queue-microtask": { + "node_modules/puppeteer": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", + "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", + "hasInstallScript": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.981744", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.5.0" + }, + "engines": { + "node": ">=10.18.1" + } + }, + "node_modules/qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==" + }, + "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "regexpp": { + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", + "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", + "optional": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "reusify": { + "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "rollup": { + "node_modules/rollup": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", "dev": true, - "requires": { + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { "fsevents": "~2.3.2" } }, - "run-parallel": { + "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { "queue-microtask": "^1.2.2" } }, - "sade": { + "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", "dev": true, - "requires": { + "dependencies": { "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" } }, - "shebang-command": { + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "optional": true + }, + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "sisteransi": { + "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "sourcemap-codec": { + "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "string-width": { + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { + "dependencies": { "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-json-comments": { + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "test-exclude": { + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "requires": { + "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "text-table": { + "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "type-fest": { + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "uri-js": { + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "optional": true, + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "uvu": { + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "dev": true, - "requires": { + "dependencies": { "dequal": "^2.0.0", "diff": "^5.0.0", "kleur": "^4.0.3", "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" } }, - "v8-to-istanbul": { + "node_modules/v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" } }, - "word-wrap": { + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatsapp-web.js": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", + "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", + "dependencies": { + "@pedroslopez/moduleraid": "^5.0.2", + "fluent-ffmpeg": "^2.1.2", + "jsqr": "^1.3.1", + "mime": "^3.0.0", + "node-fetch": "^2.6.5", + "node-webpmux": "^3.1.0", + "puppeteer": "^13.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "optionalDependencies": { + "archiver": "^5.3.1", + "fs-extra": "^10.1.0", + "unzipper": "^0.10.11" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "y18n": { + "node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yargs": { + "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "requires": { + "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -1308,19 +2942,87 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yocto-queue": { + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "optional": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "packages/cli": { + "version": "0.0.1", + "devDependencies": { + "cross-env": "^7.0.3", + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5" + } + }, + "packages/core": { + "version": "0.0.1", + "license": "ISC", + "devDependencies": {} + }, + "packages/database": { + "version": "0.0.1", + "license": "ISC", + "devDependencies": {} + }, + "packages/io": { + "version": "0.0.1", + "license": "ISC", + "devDependencies": {} + }, + "packages/provider": { + "version": "0.0.1", + "license": "ISC", + "dependencies": { + "qr-image": "^3.2.0", + "whatsapp-web.js": "^1.18.2" + }, + "devDependencies": {} } } } diff --git a/package.json b/package.json index 301ee9d..daf705b 100644 --- a/package.json +++ b/package.json @@ -22,11 +22,7 @@ "cli": "node ./packages/cli/bin/cli.js" }, "workspaces": [ - "packages/cli", - "packages/core", - "packages/database", - "packages/io", - "packages/provider", + "packages/*", "docs" ], "keywords": [ diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index 22da38a..1614d8a 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -1,5 +1,5 @@ /** - * [ ] Escuchar eventos del provider + * [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos * [ ] Guardar historial en db * [ ] Buscar mensaje en flow * @@ -13,8 +13,16 @@ class BotClass { this.databaseClass = _database this.providerClass = _provider - this.providerClass.on('message', ({ message }) => - this.handleOnMessage(message) + this.providerClass.on('require_action', (a) => console.log('here??', a)) + this.providerClass.on('ready', (a) => console.log('ready??', a)) + this.providerClass.on('auth_failure', (a) => + console.log('auth_failure??', a) + ) + this.providerClass.on('authenticated', (a) => + console.log('authenticated??', a) + ) + this.providerClass.on('message', (message) => + console.log('message?', message) ) } diff --git a/packages/core/classes/provider.class.js b/packages/core/classes/provider.class.js new file mode 100644 index 0000000..4879831 --- /dev/null +++ b/packages/core/classes/provider.class.js @@ -0,0 +1,25 @@ +const { EventEmitter } = require('node:events') +/** + * Esta clase debe siempre proporcionar los siguietes metodos + * sendMessage = Para enviar un mensaje + * + * @important + * Esta clase extiende de la clase del provider OJO + * Eventos + * - message + * - ready + * - error + * - require_action + */ +class ProviderClass extends EventEmitter { + /** + * events: message | auth | auth_error | ... + * + */ + + sendMessage = async (userId, message) => { + return message + } +} + +module.exports = ProviderClass diff --git a/packages/core/index.js b/packages/core/index.js index 33d40b7..28598d4 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -1,4 +1,5 @@ const BotClass = require('./classes/bot.class') +const ProviderClass = require('./classes/provider.class') /** * Crear instancia de clase @@ -6,10 +7,7 @@ const BotClass = require('./classes/bot.class') * @returns */ const create = async ({ flow, database, provider }) => { - return Object.setPrototypeOf( - new BotClass(flow, database, provider), - provider - ) + new BotClass(flow, database, provider) } -module.exports = { create } +module.exports = { create, ProviderClass } diff --git a/packages/provider/adapters/mock.js b/packages/provider/adapters/mock.js index 5ab4b6a..01c4821 100644 --- a/packages/provider/adapters/mock.js +++ b/packages/provider/adapters/mock.js @@ -1,5 +1,24 @@ -const { EventEmitter } = require('node:events') +const ProviderClass = require('../../core/classes/provider.class') -class MockProvider extends EventEmitter {} +class MockSetting { + enviar = async (number, msg) => { + return Promise.resolve('1') + } +} + +const mock = new MockSetting() + +class MockProvider extends ProviderClass { + vendor + constructor() { + super() + this.vendor = mock + } + + sendMessage = async (userId, message) => { + const status = await this.vendor.enviar(userId, message) + return { userId, message, status } + } +} module.exports = MockProvider diff --git a/packages/provider/adapters/twilio.js b/packages/provider/adapters/twilio.js index ed01a5a..dc937c8 100644 --- a/packages/provider/adapters/twilio.js +++ b/packages/provider/adapters/twilio.js @@ -1 +1,19 @@ -class TwilioProvider {} +const twilio = require('twilio') +const ProviderClass = require('../classes/provider.class') + +const TwilioVendor = new twilio(accountSid, authToken) + +class TwilioProvider extends ProviderClass { + constructor() { + super(TwilioVendor) + } + + sendMessage = (message) => + this.vendor.messages.create({ + body: message, + to: '+12345678901', // Text this number + from: '+12345678901', // From a valid Twilio number + }) +} + +module.exports = TwilioProvider diff --git a/packages/provider/adapters/web-whatsapp.js b/packages/provider/adapters/web-whatsapp.js new file mode 100644 index 0000000..981ff5e --- /dev/null +++ b/packages/provider/adapters/web-whatsapp.js @@ -0,0 +1,71 @@ +const { createWriteStream } = require('fs') +const qr = require('qr-image') +const { Client, LocalAuth } = require('whatsapp-web.js') + +//TODO: Acoplamiento OJO +const { ProviderClass } = require('../../index').botcore + +const WebWhatsappVendor = new Client({ + authStrategy: new LocalAuth(), +}) + +/** + * TODO esto se debe mover a un utils.js + * @param {*} number + * @returns + */ +const cleanNumber = (number) => { + number = number.replace('@c.us', '') + number = `${number}@c.us` + return number +} + +const generateImage = (base64) => { + let qr_svg = qr.image(base64, { type: 'svg', margin: 4 }) + qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`)) + console.log(`⚡ Recuerda que el QR se actualiza cada minuto ⚡'`) + console.log(`⚡ Actualiza F5 el navegador para mantener el mejor QR⚡`) +} + +////////////////////////////////////////////////////// + +class WebWhatsappProvider extends ProviderClass { + vendor + constructor(_vendor) { + super() + this.vendor = _vendor + + this.vendor.on('qr', (qr) => { + this.emit('require_action', { + eventName: 'require_action', + instructions: `Debes escanear el QR Code para iniciar session reivsa qr.svg`, + }) + generateImage(qr) + }) + this.vendor.on('ready', (ready) => + this.emit('ready', { eventName: 'ready', ...ready }) + ) + this.vendor.on('auth_failure', (error) => + this.emit('error', { eventName: 'error', ...error }) + ) + this.vendor.on('authenticated', (authenticated) => + this.emit('ready', { eventName: 'authenticated', ...authenticated }) + ) + + this.vendor.on('message', (message) => + this.emit('message', { eventName: 'message', ...message }) + ) + + this.vendor.initialize() + } + + sendMessage = async (userId, message) => { + const number = cleanNumber(userId) + return this.vendor.sendMessage(number, message) + } +} + +/** + * Injectamos! + */ +module.exports = new WebWhatsappProvider(WebWhatsappVendor) diff --git a/packages/provider/classes/provider.class.js b/packages/provider/classes/provider.class.js deleted file mode 100644 index e8765da..0000000 --- a/packages/provider/classes/provider.class.js +++ /dev/null @@ -1,13 +0,0 @@ -class ProviderClass { - /** - * events: message | auth | auth_error | ... - * - */ - constructor() {} - - sendMessage = (message) => { - return message - } -} - -module.exports = ProviderClass diff --git a/packages/provider/index.js b/packages/provider/index.js index 4f52c92..e69de29 100644 --- a/packages/provider/index.js +++ b/packages/provider/index.js @@ -1,22 +0,0 @@ -const ProviderClass = require('./classes/provider.class') -const TwilioProvider = require('./adapters/twilio') -const MockProvider = require('./adapters/mock') - -const prepareVendor = ({ vendor, credentials }) => { - if (vendor === 'twilio') return new TwilioProvider(credentials) - // if (vendor === 'meta') return new TwilioProvider(credentials) - // if (vendor === 'wev') return new TwilioProvider(credentials) - return new MockProvider() -} - -/** - * Crear instancia de clase - * @param {*} args - * @returns - */ -const create = async (args) => { - const vendor = prepareVendor(args) - return Object.setPrototypeOf(new ProviderClass(), vendor) -} - -module.exports = { create } diff --git a/packages/provider/package.json b/packages/provider/package.json index 180bdf2..bda1303 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -7,5 +7,9 @@ "keywords": [], "author": "", "license": "ISC", - "devDependencies": {} + "devDependencies": {}, + "dependencies": { + "qr-image": "^3.2.0", + "whatsapp-web.js": "^1.18.2" + } } diff --git a/packages/provider/tests/provider.class.test.js b/packages/provider/tests/provider.class.test.js new file mode 100644 index 0000000..7d7dc69 --- /dev/null +++ b/packages/provider/tests/provider.class.test.js @@ -0,0 +1,13 @@ +const { test } = require('uvu') +const assert = require('uvu/assert') +const MockProvider = require('../adapters/mock') + +test(`ProviderClass`, async () => { + const provider = new MockProvider() + const msg = await provider.sendMessage('123456789', 'hola') + console.log(msg) + assert.is(msg.userId, '123456789') + assert.is(msg.message, 'hola') +}) + +test.run() diff --git a/qr.svg b/qr.svg new file mode 100644 index 0000000..331cb90 --- /dev/null +++ b/qr.svg @@ -0,0 +1 @@ + \ No newline at end of file From 4216cdd1e52690ba320e72741fe71370957893da Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 10 Nov 2022 20:17:38 +0100 Subject: [PATCH 045/459] . --- .gitignore | 3 ++- qr.svg | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 qr.svg diff --git a/.gitignore b/.gitignore index 079bd6a..8d37436 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ coverage/ lib tmp/ .fleet/ -example-app/ \ No newline at end of file +example-app/ +qr.svg \ No newline at end of file diff --git a/qr.svg b/qr.svg deleted file mode 100644 index 331cb90..0000000 --- a/qr.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 228530a454b2e6c7ad8d98eb542d2acd940354f2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 10 Nov 2022 21:16:22 +0100 Subject: [PATCH 046/459] continue --- package-lock.json | 3028 ----------------- package.json | 24 +- packages/cli/node_modules/.bin/cross-env | 15 + .../cli/node_modules/.bin/cross-env-shell | 15 + .../cli/node_modules/.bin/cross-env-shell.cmd | 7 + packages/cli/node_modules/.bin/cross-env.cmd | 7 + packages/provider/adapters/mock.js | 24 - packages/provider/adapters/mock/index.js | 29 + .../adapters/{twilio.js => twilio/index.js} | 0 packages/provider/adapters/web-whatsapp.js | 71 - .../provider/adapters/web-whatsapp/index.js | 62 + .../provider/adapters/web-whatsapp/utils.js | 17 + packages/provider/package.json | 4 +- yarn.lock | 1724 ++++++++++ 14 files changed, 1891 insertions(+), 3136 deletions(-) delete mode 100644 package-lock.json create mode 100644 packages/cli/node_modules/.bin/cross-env create mode 100644 packages/cli/node_modules/.bin/cross-env-shell create mode 100644 packages/cli/node_modules/.bin/cross-env-shell.cmd create mode 100644 packages/cli/node_modules/.bin/cross-env.cmd delete mode 100644 packages/provider/adapters/mock.js create mode 100644 packages/provider/adapters/mock/index.js rename packages/provider/adapters/{twilio.js => twilio/index.js} (100%) delete mode 100644 packages/provider/adapters/web-whatsapp.js create mode 100644 packages/provider/adapters/web-whatsapp/index.js create mode 100644 packages/provider/adapters/web-whatsapp/utils.js create mode 100644 yarn.lock diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 04c0e7a..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3028 +0,0 @@ -{ - "name": "@bot-whatsapp/root", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@bot-whatsapp/root", - "version": "1.0.0", - "license": "ISC", - "workspaces": [ - "packages/*", - "docs" - ], - "devDependencies": { - "@rollup/plugin-commonjs": "^23.0.2", - "c8": "^7.12.0", - "eslint": "^8.26.0", - "eslint-config-prettier": "^8.5.0", - "prettier": "^2.7.1", - "prompts": "^2.4.2", - "rimraf": "^3.0.2", - "rollup": "^3.2.3", - "uvu": "^0.5.6" - }, - "engines": { - "node": "16.x", - "npm": ">=6.0.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@bot-whatsapp/cli": { - "resolved": "packages/cli", - "link": true - }, - "node_modules/@bot-whatsapp/core": { - "resolved": "packages/core", - "link": true - }, - "node_modules/@bot-whatsapp/database": { - "resolved": "packages/database", - "link": true - }, - "node_modules/@bot-whatsapp/io": { - "resolved": "packages/io", - "link": true - }, - "node_modules/@bot-whatsapp/provider": { - "resolved": "packages/provider", - "link": true - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", - "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pedroslopez/moduleraid": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz", - "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==" - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", - "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.26.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "optional": true - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "optional": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "optional": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "optional": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "optional": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "optional": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "optional": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "optional": true, - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/c8": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", - "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/c8/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c8/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c8/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c8/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "optional": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "optional": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "optional": true - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "optional": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "optional": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-package-manager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", - "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", - "dev": true, - "dependencies": { - "execa": "^5.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==" - }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "optional": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", - "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fluent-ffmpeg": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz", - "integrity": "sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==", - "dependencies": { - "async": ">=0.2.9", - "which": "^1.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "optional": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "optional": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "optional": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsqr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", - "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "optional": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "optional": true - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "optional": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "optional": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "optional": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "optional": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "optional": true - }, - "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "optional": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "optional": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-webpmux": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.3.tgz", - "integrity": "sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", - "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", - "hasInstallScript": true, - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/qr-image": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", - "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", - "optional": true, - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "optional": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.3.tgz", - "integrity": "sha512-qfadtkY5kl0F5e4dXVdj2D+GtOdifasXHFMiL1SMf9ADQDv5Eti6xReef9FKj+iQPR2pvtqWna57s/PjARY4fg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "optional": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "optional": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "optional": true, - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/unzipper/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "node_modules/unzipper/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatsapp-web.js": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz", - "integrity": "sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA==", - "dependencies": { - "@pedroslopez/moduleraid": "^5.0.2", - "fluent-ffmpeg": "^2.1.2", - "jsqr": "^1.3.1", - "mime": "^3.0.0", - "node-fetch": "^2.6.5", - "node-webpmux": "^3.1.0", - "puppeteer": "^13.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "optionalDependencies": { - "archiver": "^5.3.1", - "fs-extra": "^10.1.0", - "unzipper": "^0.10.11" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "optional": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "packages/cli": { - "version": "0.0.1", - "devDependencies": { - "cross-env": "^7.0.3", - "cross-spawn": "^7.0.3", - "detect-package-manager": "^2.0.1", - "kleur": "^4.1.5" - } - }, - "packages/core": { - "version": "0.0.1", - "license": "ISC", - "devDependencies": {} - }, - "packages/database": { - "version": "0.0.1", - "license": "ISC", - "devDependencies": {} - }, - "packages/io": { - "version": "0.0.1", - "license": "ISC", - "devDependencies": {} - }, - "packages/provider": { - "version": "0.0.1", - "license": "ISC", - "dependencies": { - "qr-image": "^3.2.0", - "whatsapp-web.js": "^1.18.2" - }, - "devDependencies": {} - } - } -} diff --git a/package.json b/package.json index daf705b..f49c488 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,9 @@ { "name": "@bot-whatsapp/root", - "version": "1.0.0", + "version": "0.0.1", "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", + "private": true, "scripts": { "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js", "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", @@ -19,7 +20,8 @@ "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit", "test": "npm run test.unit && npm run test.e2e", - "cli": "node ./packages/cli/bin/cli.js" + "cli": "node ./packages/cli/bin/cli.js", + "dev": "node ./example-app/app.js" }, "workspaces": [ "packages/*", @@ -42,25 +44,25 @@ "url": "https://github.com/aurik3" } ], - "repository": { - "type": "git", - "url": "https://github.com/leifermendez/bot-whatsapp" - }, + "repository": "https://github.com/leifermendez/bot-whatsapp", "license": "ISC", - "dependencies": {}, + "dependencies": { + "whatsapp-web.js": "^1.18.2" + }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", "c8": "^7.12.0", - "prettier": "^2.7.1", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", + "prettier": "^2.7.1", "prompts": "^2.4.2", "rimraf": "^3.0.2", "rollup": "^3.2.3", "uvu": "^0.5.6" }, + "packageManager": "yarn@3.2.0", "engines": { - "node": "16.x", - "npm": ">=6.0.0" - } + "node": ">=16" + }, + "author": "Leifer Mendez " } diff --git a/packages/cli/node_modules/.bin/cross-env b/packages/cli/node_modules/.bin/cross-env new file mode 100644 index 0000000..2dfe676 --- /dev/null +++ b/packages/cli/node_modules/.bin/cross-env @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../../../../node_modules/cross-env/src/bin/cross-env.js" "$@" + ret=$? +else + node "$basedir/../../../../node_modules/cross-env/src/bin/cross-env.js" "$@" + ret=$? +fi +exit $ret diff --git a/packages/cli/node_modules/.bin/cross-env-shell b/packages/cli/node_modules/.bin/cross-env-shell new file mode 100644 index 0000000..43d4fc7 --- /dev/null +++ b/packages/cli/node_modules/.bin/cross-env-shell @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../../../../node_modules/cross-env/src/bin/cross-env-shell.js" "$@" + ret=$? +else + node "$basedir/../../../../node_modules/cross-env/src/bin/cross-env-shell.js" "$@" + ret=$? +fi +exit $ret diff --git a/packages/cli/node_modules/.bin/cross-env-shell.cmd b/packages/cli/node_modules/.bin/cross-env-shell.cmd new file mode 100644 index 0000000..02eab1a --- /dev/null +++ b/packages/cli/node_modules/.bin/cross-env-shell.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env-shell.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env-shell.js" %* +) \ No newline at end of file diff --git a/packages/cli/node_modules/.bin/cross-env.cmd b/packages/cli/node_modules/.bin/cross-env.cmd new file mode 100644 index 0000000..df3e019 --- /dev/null +++ b/packages/cli/node_modules/.bin/cross-env.cmd @@ -0,0 +1,7 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env.js" %* +) ELSE ( + @SETLOCAL + @SET PATHEXT=%PATHEXT:;.JS;=;% + node "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env.js" %* +) \ No newline at end of file diff --git a/packages/provider/adapters/mock.js b/packages/provider/adapters/mock.js deleted file mode 100644 index 01c4821..0000000 --- a/packages/provider/adapters/mock.js +++ /dev/null @@ -1,24 +0,0 @@ -const ProviderClass = require('../../core/classes/provider.class') - -class MockSetting { - enviar = async (number, msg) => { - return Promise.resolve('1') - } -} - -const mock = new MockSetting() - -class MockProvider extends ProviderClass { - vendor - constructor() { - super() - this.vendor = mock - } - - sendMessage = async (userId, message) => { - const status = await this.vendor.enviar(userId, message) - return { userId, message, status } - } -} - -module.exports = MockProvider diff --git a/packages/provider/adapters/mock/index.js b/packages/provider/adapters/mock/index.js new file mode 100644 index 0000000..f801ac7 --- /dev/null +++ b/packages/provider/adapters/mock/index.js @@ -0,0 +1,29 @@ +const { ProviderClass } = require('@bot-whatsapp/core') + +class MockProvider extends ProviderClass { + constructor() { + super() + this.init() + } + + delaySendMessage = (miliseconds, eventName) => + new Promise((res) => + setTimeout(() => { + const payload = { data: eventName } + this.emit(eventName, payload) + res + }, miliseconds) + ) + + sendMessage = async (userId, message) => { + return Promise.resolve({ userId, message }) + } + + init = () => + Promise.all([ + this.delaySendMessage(500, 'ready'), + this.delaySendMessage(1500, 'message'), + ]) +} + +module.exports = new MockProvider() diff --git a/packages/provider/adapters/twilio.js b/packages/provider/adapters/twilio/index.js similarity index 100% rename from packages/provider/adapters/twilio.js rename to packages/provider/adapters/twilio/index.js diff --git a/packages/provider/adapters/web-whatsapp.js b/packages/provider/adapters/web-whatsapp.js deleted file mode 100644 index 981ff5e..0000000 --- a/packages/provider/adapters/web-whatsapp.js +++ /dev/null @@ -1,71 +0,0 @@ -const { createWriteStream } = require('fs') -const qr = require('qr-image') -const { Client, LocalAuth } = require('whatsapp-web.js') - -//TODO: Acoplamiento OJO -const { ProviderClass } = require('../../index').botcore - -const WebWhatsappVendor = new Client({ - authStrategy: new LocalAuth(), -}) - -/** - * TODO esto se debe mover a un utils.js - * @param {*} number - * @returns - */ -const cleanNumber = (number) => { - number = number.replace('@c.us', '') - number = `${number}@c.us` - return number -} - -const generateImage = (base64) => { - let qr_svg = qr.image(base64, { type: 'svg', margin: 4 }) - qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`)) - console.log(`⚡ Recuerda que el QR se actualiza cada minuto ⚡'`) - console.log(`⚡ Actualiza F5 el navegador para mantener el mejor QR⚡`) -} - -////////////////////////////////////////////////////// - -class WebWhatsappProvider extends ProviderClass { - vendor - constructor(_vendor) { - super() - this.vendor = _vendor - - this.vendor.on('qr', (qr) => { - this.emit('require_action', { - eventName: 'require_action', - instructions: `Debes escanear el QR Code para iniciar session reivsa qr.svg`, - }) - generateImage(qr) - }) - this.vendor.on('ready', (ready) => - this.emit('ready', { eventName: 'ready', ...ready }) - ) - this.vendor.on('auth_failure', (error) => - this.emit('error', { eventName: 'error', ...error }) - ) - this.vendor.on('authenticated', (authenticated) => - this.emit('ready', { eventName: 'authenticated', ...authenticated }) - ) - - this.vendor.on('message', (message) => - this.emit('message', { eventName: 'message', ...message }) - ) - - this.vendor.initialize() - } - - sendMessage = async (userId, message) => { - const number = cleanNumber(userId) - return this.vendor.sendMessage(number, message) - } -} - -/** - * Injectamos! - */ -module.exports = new WebWhatsappProvider(WebWhatsappVendor) diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/adapters/web-whatsapp/index.js new file mode 100644 index 0000000..34142ad --- /dev/null +++ b/packages/provider/adapters/web-whatsapp/index.js @@ -0,0 +1,62 @@ +const { Client, LocalAuth } = require('whatsapp-web.js') +const { ProviderClass } = require('@bot-whatsapp/core') + +const { cleanNumber, generateImage } = require('./utils') + +const WebWhatsappVendor = new Client({ + authStrategy: new LocalAuth(), +}) + +class WebWhatsappProvider extends ProviderClass { + vendor + constructor(_vendor) { + super() + this.vendor = _vendor + + for (const { event, func } of this.busEvents()) { + this.vendor.on(event, func) + } + + this.vendor.initialize() + } + + /** + * Mapeamos los eventos nativos de whatsapp-web.js a los que la clase Provider espera + * para tener un standar de eventos + * @returns + */ + busEvents = () => [ + { + event: 'qr', + func: (qr) => { + this.emit('require_action', { + instructions: `Debes escanear el QR Code para iniciar session reivsa qr.svg`, + }) + generateImage(qr) + }, + }, + { + event: 'ready', + func: () => this.emit('ready', true), + }, + { + event: 'auth_failure', + func: (payload) => this.emit('error', payload), + }, + { + event: 'authenticated', + func: () => this.emit('ready', true), + }, + { + event: 'message', + func: (payload) => this.emit('message', payload), + }, + ] + + sendMessage = async (userId, message) => { + const number = cleanNumber(userId) + return this.vendor.sendMessage(number, message) + } +} + +module.exports = new WebWhatsappProvider(WebWhatsappVendor) diff --git a/packages/provider/adapters/web-whatsapp/utils.js b/packages/provider/adapters/web-whatsapp/utils.js new file mode 100644 index 0000000..2a62b96 --- /dev/null +++ b/packages/provider/adapters/web-whatsapp/utils.js @@ -0,0 +1,17 @@ +const { createWriteStream } = require('fs') +const qr = require('qr-image') + +const cleanNumber = (number) => { + number = number.replace('@c.us', '') + number = `${number}@c.us` + return number +} + +const generateImage = (base64) => { + let qr_svg = qr.image(base64, { type: 'svg', margin: 4 }) + qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`)) + console.log(`⚡ Recuerda que el QR se actualiza cada minuto ⚡'`) + console.log(`⚡ Actualiza F5 el navegador para mantener el mejor QR⚡`) +} + +module.exports = { cleanNumber, generateImage } diff --git a/packages/provider/package.json b/packages/provider/package.json index bda1303..f242007 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -9,7 +9,7 @@ "license": "ISC", "devDependencies": {}, "dependencies": { - "qr-image": "^3.2.0", - "whatsapp-web.js": "^1.18.2" + "@bot-whatsapp/core": "*", + "qr-image": "^3.2.0" } } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..4cb6a81 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1724 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@eslint/eslintrc@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.11.6": + version "0.11.7" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" + integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.12": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pedroslopez/moduleraid@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz#8e5544de683a2edf50c8550af29d9e485fee114f" + integrity sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ== + +"@rollup/plugin-commonjs@^23.0.2": + version "23.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz#3a3a5b7b1b1cb29037eb4992edcaae997d7ebd92" + integrity sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + commondir "^1.0.1" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.26.4" + +"@rollup/pluginutils@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/node@*": + version "18.11.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" + integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== + +"@types/yauzl@^2.9.1": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + dependencies: + "@types/node" "*" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" + integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== + dependencies: + archiver-utils "^2.1.0" + async "^3.2.3" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.0.0" + tar-stream "^2.2.0" + zip-stream "^4.1.0" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +async@>=0.2.9, async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big-integer@^1.6.17: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +binary@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-indexof-polyfill@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== + +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== + +c8@^7.12.0: + version "7.12.0" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.12.0.tgz#402db1c1af4af5249153535d1c84ad70c5c96b14" + integrity sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@istanbuljs/schema" "^0.1.3" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.1.4" + rimraf "^3.0.2" + test-exclude "^6.0.0" + v8-to-istanbul "^9.0.0" + yargs "^16.2.0" + yargs-parser "^20.2.9" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== + dependencies: + traverse ">=0.3.0 <0.4" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compress-commons@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^4.0.2" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-fetch@3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +detect-package-manager@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" + integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== + dependencies: + execa "^5.1.1" + +devtools-protocol@0.0.981744: + version "0.0.981744" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" + integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== + dependencies: + readable-stream "^2.0.2" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.26.0: + version "8.27.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.27.0.tgz#d547e2f7239994ad1faa4bb5d84e5d809db7cf64" + integrity sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ== + dependencies: + "@eslint/eslintrc" "^1.3.3" + "@humanwhocodes/config-array" "^0.11.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.15.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +fluent-ffmpeg@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" + integrity sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q== + dependencies: + async ">=0.2.9" + which "^1.1.1" + +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +https-proxy-agent@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-reference@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-reports@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +js-sdsl@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" + integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsqr@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsqr/-/jsqr-1.4.0.tgz#8efb8d0a7cc6863cb6d95116b9069123ce9eb2d1" + integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@^4.0.3, kleur@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +listenercount@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" + integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +magic-string@^0.26.4: + version "0.26.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +"mkdirp@>=0.5 0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-fetch@2.6.7, node-fetch@^2.6.5: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-webpmux@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/node-webpmux/-/node-webpmux-3.1.3.tgz#1111d74b0f588e3908ba16e579cdff0436a06c13" + integrity sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proxy-from-env@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +puppeteer@^13.0.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-13.7.0.tgz#18e16f83e397cf02f7a0804c67c1603d381cfb0b" + integrity sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA== + dependencies: + cross-fetch "3.1.5" + debug "4.3.4" + devtools-protocol "0.0.981744" + extract-zip "2.0.1" + https-proxy-agent "5.0.1" + pkg-dir "4.2.0" + progress "2.0.3" + proxy-from-env "1.1.0" + rimraf "3.0.2" + tar-fs "2.1.1" + unbzip2-stream "1.4.3" + ws "8.5.0" + +qr-image@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/qr-image/-/qr-image-3.2.0.tgz#9fa8295beae50c4a149cf9f909a1db464a8672e8" + integrity sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-glob@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" + integrity sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA== + dependencies: + minimatch "^5.1.0" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@3.0.2, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.2.5.tgz#9452168ac083218c8212bf53d2448bdc6b8b0de7" + integrity sha512-/Ha7HhVVofduy+RKWOQJrxe4Qb3xyZo+chcpYiD8SoQa4AG7llhupUtyfKSSrdBM2mWJjhM8wZwmbY23NmlIYw== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +setimmediate@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tar-fs@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4, tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +unbzip2-stream@1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unzipper@^0.10.11: + version "0.10.11" + resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" + integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== + dependencies: + big-integer "^1.6.17" + binary "~0.3.0" + bluebird "~3.4.1" + buffer-indexof-polyfill "~1.0.0" + duplexer2 "~0.1.4" + fstream "^1.0.12" + graceful-fs "^4.2.2" + listenercount "~1.0.1" + readable-stream "~2.3.6" + setimmediate "~1.0.4" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uvu@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + +v8-to-istanbul@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatsapp-web.js@^1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz#ffd1a7c8dfb4b01ea15ef54afbbad8e29e5339f6" + integrity sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA== + dependencies: + "@pedroslopez/moduleraid" "^5.0.2" + fluent-ffmpeg "^2.1.2" + jsqr "^1.3.1" + mime "^3.0.0" + node-fetch "^2.6.5" + node-webpmux "^3.1.0" + puppeteer "^13.0.0" + optionalDependencies: + archiver "^5.3.1" + fs-extra "^10.1.0" + unzipper "^0.10.11" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^1.1.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zip-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" + integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^4.1.0" + readable-stream "^3.6.0" From 1954a5a90a4a9e6d30179871ec40251d4142438a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 10 Nov 2022 22:59:08 +0100 Subject: [PATCH 047/459] issue --- .gitignore | 1 + packages/COMMON_MISTAKE.md | 9 ++++ packages/cli/node_modules/.bin/cross-env | 15 ------ .../cli/node_modules/.bin/cross-env-shell | 15 ------ .../cli/node_modules/.bin/cross-env-shell.cmd | 7 --- packages/cli/node_modules/.bin/cross-env.cmd | 7 --- packages/core/LIST_EVENTS.md | 32 ++++++++++++ packages/core/classes/bot.class.js | 49 ++++++++++++------- packages/core/package.json | 4 +- packages/core/utils/interactive.js | 10 ++++ packages/database/adapters/mock.js | 1 + .../provider/adapters/web-whatsapp/index.js | 6 ++- .../provider/adapters/web-whatsapp/utils.js | 2 - 13 files changed, 93 insertions(+), 65 deletions(-) create mode 100644 packages/COMMON_MISTAKE.md delete mode 100644 packages/cli/node_modules/.bin/cross-env delete mode 100644 packages/cli/node_modules/.bin/cross-env-shell delete mode 100644 packages/cli/node_modules/.bin/cross-env-shell.cmd delete mode 100644 packages/cli/node_modules/.bin/cross-env.cmd create mode 100644 packages/core/LIST_EVENTS.md create mode 100644 packages/core/utils/interactive.js diff --git a/.gitignore b/.gitignore index 8d37436..c264642 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /node_modules +/packages/*/node_modules session.json chats/* !chats/.gitkeep diff --git a/packages/COMMON_MISTAKE.md b/packages/COMMON_MISTAKE.md new file mode 100644 index 0000000..77d9ee2 --- /dev/null +++ b/packages/COMMON_MISTAKE.md @@ -0,0 +1,9 @@ +``` + throw new Error('Evaluation failed: ' + helper_js_1.helper.getExceptionMessage(exceptionDetails)); +``` + +Problema sucede cuando usas la misma sesion luego de reiniciar el bot más de 3 veces lo mejor es seguir los pasos + +- Eliminar **.wwebjs_auth** +- Eliminar **node_modules** +- **yarn** diff --git a/packages/cli/node_modules/.bin/cross-env b/packages/cli/node_modules/.bin/cross-env deleted file mode 100644 index 2dfe676..0000000 --- a/packages/cli/node_modules/.bin/cross-env +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../../../../node_modules/cross-env/src/bin/cross-env.js" "$@" - ret=$? -else - node "$basedir/../../../../node_modules/cross-env/src/bin/cross-env.js" "$@" - ret=$? -fi -exit $ret diff --git a/packages/cli/node_modules/.bin/cross-env-shell b/packages/cli/node_modules/.bin/cross-env-shell deleted file mode 100644 index 43d4fc7..0000000 --- a/packages/cli/node_modules/.bin/cross-env-shell +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../../../../node_modules/cross-env/src/bin/cross-env-shell.js" "$@" - ret=$? -else - node "$basedir/../../../../node_modules/cross-env/src/bin/cross-env-shell.js" "$@" - ret=$? -fi -exit $ret diff --git a/packages/cli/node_modules/.bin/cross-env-shell.cmd b/packages/cli/node_modules/.bin/cross-env-shell.cmd deleted file mode 100644 index 02eab1a..0000000 --- a/packages/cli/node_modules/.bin/cross-env-shell.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env-shell.js" %* -) ELSE ( - @SETLOCAL - @SET PATHEXT=%PATHEXT:;.JS;=;% - node "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env-shell.js" %* -) \ No newline at end of file diff --git a/packages/cli/node_modules/.bin/cross-env.cmd b/packages/cli/node_modules/.bin/cross-env.cmd deleted file mode 100644 index df3e019..0000000 --- a/packages/cli/node_modules/.bin/cross-env.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env.js" %* -) ELSE ( - @SETLOCAL - @SET PATHEXT=%PATHEXT:;.JS;=;% - node "%~dp0\..\..\..\..\node_modules\cross-env\src\bin\cross-env.js" %* -) \ No newline at end of file diff --git a/packages/core/LIST_EVENTS.md b/packages/core/LIST_EVENTS.md new file mode 100644 index 0000000..7a25d0f --- /dev/null +++ b/packages/core/LIST_EVENTS.md @@ -0,0 +1,32 @@ +- **require_action**: Indica que accion se necesita por parte del usuario y debe contener `instructions` obligatorio + +```json +{ + "instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`, + ... otros argumentos +} +``` + +- **ready**: Indica que todo los procesos para usar el provider han pasado correctamente. Ejemplo validacion de token credenciales etc + +retorna: `true` + +- **auth_failure**: Indica que un problema ocurrio en el inicio del provider `instructions` obligatorio + +```json +{ + "instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`, + ... otros argumentos +} +``` + +- **message**: Indica que mensaje a entrado se debe contemplar la siguiente estructura + +```json +{ + "from": 'Numero de telefono o id que identifique al usuario', + "body": 'Mensaje en string que esta entrando', + "hasMedia": 'boolean true o false indicando is tiene un archivo multimedia', + ... otros argumentos +} +``` diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index 1614d8a..bf0882b 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -1,3 +1,5 @@ +const { printer } = require('../utils/interactive') + /** * [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos * [ ] Guardar historial en db @@ -13,32 +15,45 @@ class BotClass { this.databaseClass = _database this.providerClass = _provider - this.providerClass.on('require_action', (a) => console.log('here??', a)) - this.providerClass.on('ready', (a) => console.log('ready??', a)) - this.providerClass.on('auth_failure', (a) => - console.log('auth_failure??', a) - ) - this.providerClass.on('authenticated', (a) => - console.log('authenticated??', a) - ) + for (const { event, func } of this.listenerBusEvents()) { + this.providerClass.on(event, func) + } + this.providerClass.on('message', (message) => console.log('message?', message) ) } + listenerBusEvents = () => [ + { + event: 'require_action', + func: ({ instructions }) => + printer(instructions, '⚡⚡ ACCION REQUERIDA ⚡⚡'), + }, + { + event: 'ready', + func: () => printer('Provider conectado y listo'), + }, + { + event: 'auth_failure', + func: ({ instructions }) => + printer(instructions, '⚡⚡ ERROR AUTH ⚡⚡'), + }, + + { + event: 'message', + func: (msg) => this.handleMsg(msg), + }, + ] + /** * @private * @param {*} ctxMessage */ - handleOnMessage = (ctxMessage) => { - this.databaseClass.saveLog(ctxMessage) - this.continue(ctxMessage) - } - - handleEvents = (eventName) => { - if (eventName === 'message') return - if (eventName === 'auth_success') return - if (eventName === 'auth_error') return + handleMsg = ({ body }) => { + this.databaseClass.saveLog(body) + const a = this.flowClass.find(body) + console.log(a) } /** diff --git a/packages/core/package.json b/packages/core/package.json index 997cf69..d07219c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -17,5 +17,7 @@ "keywords": [], "author": "", "license": "ISC", - "devDependencies": {} + "devDependencies": { + "kleur": "^4.1.5" + } } diff --git a/packages/core/utils/interactive.js b/packages/core/utils/interactive.js new file mode 100644 index 0000000..d626025 --- /dev/null +++ b/packages/core/utils/interactive.js @@ -0,0 +1,10 @@ +const { yellow, red, bgRed } = require('kleur') + +const printer = (message, title) => { + console.clear() + if (title) console.log(bgRed(`${title}`)) + console.log(yellow(Array.isArray(message) ? message.join('\n') : message)) + console.log(``) +} + +module.exports = { printer } diff --git a/packages/database/adapters/mock.js b/packages/database/adapters/mock.js index b3f0f6a..5400ed3 100644 --- a/packages/database/adapters/mock.js +++ b/packages/database/adapters/mock.js @@ -4,6 +4,7 @@ class MockDatabase { constructor() {} save = (ctx) => { + console.log('Guardando DB...', ctx) this.listHistory.push(ctx) } } diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/adapters/web-whatsapp/index.js index 34142ad..3f9ab5c 100644 --- a/packages/provider/adapters/web-whatsapp/index.js +++ b/packages/provider/adapters/web-whatsapp/index.js @@ -30,7 +30,11 @@ class WebWhatsappProvider extends ProviderClass { event: 'qr', func: (qr) => { this.emit('require_action', { - instructions: `Debes escanear el QR Code para iniciar session reivsa qr.svg`, + instructions: [ + `Debes escanear el QR Code para iniciar session reivsa qr.svg`, + `Recuerda que el QR se actualiza cada minuto `, + `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, + ], }) generateImage(qr) }, diff --git a/packages/provider/adapters/web-whatsapp/utils.js b/packages/provider/adapters/web-whatsapp/utils.js index 2a62b96..7cdc020 100644 --- a/packages/provider/adapters/web-whatsapp/utils.js +++ b/packages/provider/adapters/web-whatsapp/utils.js @@ -10,8 +10,6 @@ const cleanNumber = (number) => { const generateImage = (base64) => { let qr_svg = qr.image(base64, { type: 'svg', margin: 4 }) qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`)) - console.log(`⚡ Recuerda que el QR se actualiza cada minuto ⚡'`) - console.log(`⚡ Actualiza F5 el navegador para mantener el mejor QR⚡`) } module.exports = { cleanNumber, generateImage } From a8dc44b41ec0502f7c9b7ae35e12b5d83f13d066 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 11 Nov 2022 12:12:19 +0100 Subject: [PATCH 048/459] working --- .vscode/launch.json | 17 ++++++++++++++ package.json | 1 + packages/COMMON_MISTAKE.md | 2 -- packages/core/classes/bot.class.js | 18 +++++++++------ packages/io/classes/flow.class.js | 28 ++++++++++++++++-------- packages/io/index.js | 2 +- packages/provider/adapters/mock/index.js | 12 ++++++---- 7 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8da750d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense para saber los atributos posibles. + // Mantenga el puntero para ver las descripciones de los existentes atributos. + // Para más información, visite: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Iniciar el programa", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}\\example-app\\app.js" + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index f49c488..9b8778a 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit", "test": "npm run test.unit && npm run test.e2e", "cli": "node ./packages/cli/bin/cli.js", + "dev:debug": "node --inspect ./example-app/app.js", "dev": "node ./example-app/app.js" }, "workspaces": [ diff --git a/packages/COMMON_MISTAKE.md b/packages/COMMON_MISTAKE.md index 77d9ee2..35be423 100644 --- a/packages/COMMON_MISTAKE.md +++ b/packages/COMMON_MISTAKE.md @@ -5,5 +5,3 @@ Problema sucede cuando usas la misma sesion luego de reiniciar el bot más de 3 veces lo mejor es seguir los pasos - Eliminar **.wwebjs_auth** -- Eliminar **node_modules** -- **yarn** diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index bf0882b..b2ffef5 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -18,10 +18,6 @@ class BotClass { for (const { event, func } of this.listenerBusEvents()) { this.providerClass.on(event, func) } - - this.providerClass.on('message', (message) => - console.log('message?', message) - ) } listenerBusEvents = () => [ @@ -50,10 +46,18 @@ class BotClass { * @private * @param {*} ctxMessage */ - handleMsg = ({ body }) => { + handleMsg = ({ body, to, from }) => { this.databaseClass.saveLog(body) - const a = this.flowClass.find(body) - console.log(a) + const messageToSend = this.flowClass.find(body) || [] + if (Array.isArray(messageToSend)) this.sendFlow(messageToSend, from) + } + + sendFlow = (messageToSend, numberOrId) => { + const queue = [] + for (const message of messageToSend) { + queue.push(this.providerClass.sendMessage(numberOrId, message)) + } + return Promise.all(queue) } /** diff --git a/packages/io/classes/flow.class.js b/packages/io/classes/flow.class.js index fa0a173..b83e850 100644 --- a/packages/io/classes/flow.class.js +++ b/packages/io/classes/flow.class.js @@ -4,16 +4,26 @@ class FlowClass { this.flow = _flow } - find = (message, ref = false) => { - let keyRef = ref - let ansRef = null - if (!keyRef) { - keyRef = - this.flow.find((n) => n.keyword.includes(message))?.ref || null + find = (keyOrWord, symbol = false) => { + let messages = [] + const findIn = (keyOrWord, symbol = false, flow = this.flow) => { + if (symbol) { + const refSymbol = flow.find((c) => c.keyword === keyOrWord) + if (refSymbol && refSymbol.answer) + messages.push(refSymbol.answer) + if (refSymbol && refSymbol.ref) findIn(refSymbol.ref, true) + } else { + const refSymbolByKeyworkd = flow.find((c) => + c.keyword.includes(keyOrWord) + ) + if (refSymbolByKeyworkd && refSymbolByKeyworkd.ref) + findIn(refSymbolByKeyworkd.ref, true) + + return messages + } } - ansRef = this.flow.find((n) => n.keyword === keyRef) - if (ansRef) return ansRef - return false + findIn(keyOrWord, symbol) + return messages } } diff --git a/packages/io/index.js b/packages/io/index.js index a3afc25..c47f212 100644 --- a/packages/io/index.js +++ b/packages/io/index.js @@ -6,7 +6,7 @@ const FlowClass = require('./classes/flow.class') * @param {*} args * @returns */ -const create = async (args) => { +const create = (args) => { return new FlowClass(args) } diff --git a/packages/provider/adapters/mock/index.js b/packages/provider/adapters/mock/index.js index f801ac7..ac2ec39 100644 --- a/packages/provider/adapters/mock/index.js +++ b/packages/provider/adapters/mock/index.js @@ -6,23 +6,27 @@ class MockProvider extends ProviderClass { this.init() } - delaySendMessage = (miliseconds, eventName) => + delaySendMessage = (miliseconds, eventName, payload) => new Promise((res) => setTimeout(() => { - const payload = { data: eventName } this.emit(eventName, payload) res }, miliseconds) ) sendMessage = async (userId, message) => { + console.log(`Enviando... ${userId}, ${message}`) return Promise.resolve({ userId, message }) } init = () => Promise.all([ - this.delaySendMessage(500, 'ready'), - this.delaySendMessage(1500, 'message'), + this.delaySendMessage(500, 'ready', null), + this.delaySendMessage(1500, 'message', { + from: 'XXXXXX', + body: 'ola', + hasMedia: false, + }), ]) } From 45272fb34f1454058417232413576fc4c1b13ab0 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 11 Nov 2022 13:31:43 +0100 Subject: [PATCH 049/459] test pass --- __tests__/basic-seller.e2e.test.js | 16 +++++++--------- packages/core/index.js | 3 +-- packages/core/tests/bot.class.test.js | 3 ++- packages/provider/tests/provider.class.test.js | 4 ++-- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/__tests__/basic-seller.e2e.test.js b/__tests__/basic-seller.e2e.test.js index 8a76c6a..0a9d998 100644 --- a/__tests__/basic-seller.e2e.test.js +++ b/__tests__/basic-seller.e2e.test.js @@ -2,7 +2,8 @@ const { test } = require('uvu') const assert = require('uvu/assert') const { MOCK_MOBILE_WS } = require('../__mocks__/mobile.mock') -const { inout, provider, database, botcore } = require('../packages/index') +const { inout, database, botcore } = require('../packages/index') +const mockProvider = require('../packages/provider/adapters/mock') const makeFlow = () => { const flowA = inout @@ -21,12 +22,9 @@ test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { let messagesIn = [] let messagesOut = [] - const adapterFlow = await inout.create(makeFlow()) + const adapterFlow = inout.create(makeFlow()) - const adapterProvider = await provider.create({ - vendor: 'mock', - credentials: {}, - }) + const adapterProvider = mockProvider const adapterDB = await database.create({ engine: 'mock', credentials: {}, @@ -38,12 +36,12 @@ test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { provider: adapterProvider, }) - bot.on('message', (ctx) => messagesIn.push(ctx.message)) + adapterProvider.on('message', (ctx) => messagesIn.push(ctx.message)) - bot.emit('message', { ...MOCK_MOBILE_WS, message: 'hola' }) + adapterProvider.emit('message', { ...MOCK_MOBILE_WS, message: 'hola' }) assert.is(messagesIn.join(), ['hola'].join()) await delay(200) - bot.emit('message', { ...MOCK_MOBILE_WS, message: 'Pedro!' }) + adapterProvider.emit('message', { ...MOCK_MOBILE_WS, message: 'Pedro!' }) console.log(messagesIn) assert.is(messagesIn.join(), ['hola', 'Pedro!'].join()) messagesOut = adapterDB.history diff --git a/packages/core/index.js b/packages/core/index.js index 28598d4..2c18122 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -6,8 +6,7 @@ const ProviderClass = require('./classes/provider.class') * @param {*} args * @returns */ -const create = async ({ flow, database, provider }) => { +const create = async ({ flow, database, provider }) => new BotClass(flow, database, provider) -} module.exports = { create, ProviderClass } diff --git a/packages/core/tests/bot.class.test.js b/packages/core/tests/bot.class.test.js index 099c040..e183a11 100644 --- a/packages/core/tests/bot.class.test.js +++ b/packages/core/tests/bot.class.test.js @@ -2,6 +2,7 @@ const { EventEmitter } = require('node:events') const { test } = require('uvu') const assert = require('uvu/assert') const { create } = require('../') +const BotClass = require('../classes/bot.class') class MockFlow {} @@ -16,7 +17,7 @@ test(`BotClass`, async () => { provider: new MockProvider(), } const bot = await create(setting) - bot.on('message', (ctx) => console.log(ctx)) + assert.is(bot instanceof BotClass, true) }) test.run() diff --git a/packages/provider/tests/provider.class.test.js b/packages/provider/tests/provider.class.test.js index 7d7dc69..1232799 100644 --- a/packages/provider/tests/provider.class.test.js +++ b/packages/provider/tests/provider.class.test.js @@ -1,9 +1,9 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const MockProvider = require('../adapters/mock') +const mockProvider = require('../adapters/mock') test(`ProviderClass`, async () => { - const provider = new MockProvider() + const provider = mockProvider const msg = await provider.sendMessage('123456789', 'hola') console.log(msg) assert.is(msg.userId, '123456789') From da8defc517c01d4e081129d4e0731d54cc4fc4f2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 11 Nov 2022 15:10:34 +0100 Subject: [PATCH 050/459] test and work --- __mocks__/mobile.mock.js | 5 ++- __tests__/basic-seller.e2e.test.js | 24 +++++--------- packages/core/utils/interactive.js | 2 +- packages/database/index.js | 13 ++------ packages/index.js | 3 +- packages/provider/adapters/mock/index.js | 8 ++--- .../provider/adapters/web-whatsapp/index.js | 31 ++++++++++++------- packages/provider/index.js | 0 .../provider/tests/provider.class.test.js | 4 +-- 9 files changed, 38 insertions(+), 52 deletions(-) delete mode 100644 packages/provider/index.js diff --git a/__mocks__/mobile.mock.js b/__mocks__/mobile.mock.js index 607bf3e..7f19f74 100644 --- a/__mocks__/mobile.mock.js +++ b/__mocks__/mobile.mock.js @@ -1,7 +1,6 @@ const MOCK_MOBILE_WS = { - username: 'Leifer', - phone: '0000000', - message: 'ey!', + from: 'XXXXXX', + hasMedia: false, } module.exports = { MOCK_MOBILE_WS } diff --git a/__tests__/basic-seller.e2e.test.js b/__tests__/basic-seller.e2e.test.js index 0a9d998..2122001 100644 --- a/__tests__/basic-seller.e2e.test.js +++ b/__tests__/basic-seller.e2e.test.js @@ -1,9 +1,9 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const { MOCK_MOBILE_WS } = require('../__mocks__/mobile.mock') const { inout, database, botcore } = require('../packages/index') -const mockProvider = require('../packages/provider/adapters/mock') +const MockProvider = require('../packages/provider/adapters/mock') +const MockDB = require('../packages/database/adapters/mock') const makeFlow = () => { const flowA = inout @@ -24,28 +24,18 @@ test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { const adapterFlow = inout.create(makeFlow()) - const adapterProvider = mockProvider - const adapterDB = await database.create({ - engine: 'mock', - credentials: {}, - }) + const adapterProvider = new MockProvider() + const adapterDB = await database.create(new MockDB()) - const bot = await botcore.create({ + await botcore.create({ flow: adapterFlow, database: adapterDB, provider: adapterProvider, }) - adapterProvider.on('message', (ctx) => messagesIn.push(ctx.message)) - - adapterProvider.emit('message', { ...MOCK_MOBILE_WS, message: 'hola' }) - assert.is(messagesIn.join(), ['hola'].join()) - await delay(200) - adapterProvider.emit('message', { ...MOCK_MOBILE_WS, message: 'Pedro!' }) - console.log(messagesIn) - assert.is(messagesIn.join(), ['hola', 'Pedro!'].join()) + await delay(1000) messagesOut = adapterDB.history - // assert.is(messagesOut.join(), ['Pedro!'].join()) + assert.is(messagesOut.join(), ['hola'].join()) }) function delay(miliseconds) { diff --git a/packages/core/utils/interactive.js b/packages/core/utils/interactive.js index d626025..5ea553f 100644 --- a/packages/core/utils/interactive.js +++ b/packages/core/utils/interactive.js @@ -1,7 +1,7 @@ const { yellow, red, bgRed } = require('kleur') const printer = (message, title) => { - console.clear() + // console.clear() if (title) console.log(bgRed(`${title}`)) console.log(yellow(Array.isArray(message) ? message.join('\n') : message)) console.log(``) diff --git a/packages/database/index.js b/packages/database/index.js index 4397652..2072a97 100644 --- a/packages/database/index.js +++ b/packages/database/index.js @@ -1,21 +1,12 @@ const DatabaseClass = require('./classes/database.class') -const MockDatabase = require('./adapters/mock') - -const prepareEngine = ({ engine, credentials }) => { - // if (engine === 'mysql') return new TwilioProvider(credentials) - // if (engine === 'meta') return new TwilioProvider(credentials) - // if (engine === 'wev') return new TwilioProvider(credentials) - return new MockDatabase() -} /** * Crear instancia de clase * @param {*} args * @returns */ -const create = async (args) => { - const engine = prepareEngine(args) - return new DatabaseClass(engine) +const create = async (engineClass) => { + return new DatabaseClass(engineClass) } module.exports = { create } diff --git a/packages/index.js b/packages/index.js index 821912c..c9f828f 100644 --- a/packages/index.js +++ b/packages/index.js @@ -1,6 +1,5 @@ const inout = require('./io') -const provider = require('./provider') const botcore = require('./core') const database = require('./database') -module.exports = { inout, provider, botcore, database } +module.exports = { inout, botcore, database } diff --git a/packages/provider/adapters/mock/index.js b/packages/provider/adapters/mock/index.js index ac2ec39..87d79fd 100644 --- a/packages/provider/adapters/mock/index.js +++ b/packages/provider/adapters/mock/index.js @@ -21,13 +21,13 @@ class MockProvider extends ProviderClass { init = () => Promise.all([ - this.delaySendMessage(500, 'ready', null), - this.delaySendMessage(1500, 'message', { + this.delaySendMessage(50, 'ready', null), + this.delaySendMessage(500, 'message', { from: 'XXXXXX', - body: 'ola', + body: 'hola', hasMedia: false, }), ]) } -module.exports = new MockProvider() +module.exports = MockProvider diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/adapters/web-whatsapp/index.js index 3f9ab5c..cb7f325 100644 --- a/packages/provider/adapters/web-whatsapp/index.js +++ b/packages/provider/adapters/web-whatsapp/index.js @@ -3,21 +3,28 @@ const { ProviderClass } = require('@bot-whatsapp/core') const { cleanNumber, generateImage } = require('./utils') -const WebWhatsappVendor = new Client({ - authStrategy: new LocalAuth(), -}) - class WebWhatsappProvider extends ProviderClass { vendor constructor(_vendor) { super() - this.vendor = _vendor + this.vendor = new Client({ + authStrategy: new LocalAuth(), + }) - for (const { event, func } of this.busEvents()) { + const listEvents = this.busEvents() + + for (const { event, func } of listEvents) { this.vendor.on(event, func) } - this.vendor.initialize() + this.vendor.initialize().catch((e) => + this.emit('require_action', { + instructions: [ + `Debes eliminar la carpeta .wwebjs_auth`, + `y reiniciar nuevamente el bot `, + ], + }) + ) } /** @@ -26,6 +33,10 @@ class WebWhatsappProvider extends ProviderClass { * @returns */ busEvents = () => [ + { + event: 'auth_failure', + func: (payload) => this.emit('error', payload), + }, { event: 'qr', func: (qr) => { @@ -43,10 +54,6 @@ class WebWhatsappProvider extends ProviderClass { event: 'ready', func: () => this.emit('ready', true), }, - { - event: 'auth_failure', - func: (payload) => this.emit('error', payload), - }, { event: 'authenticated', func: () => this.emit('ready', true), @@ -63,4 +70,4 @@ class WebWhatsappProvider extends ProviderClass { } } -module.exports = new WebWhatsappProvider(WebWhatsappVendor) +module.exports = WebWhatsappProvider diff --git a/packages/provider/index.js b/packages/provider/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/provider/tests/provider.class.test.js b/packages/provider/tests/provider.class.test.js index 1232799..7d7dc69 100644 --- a/packages/provider/tests/provider.class.test.js +++ b/packages/provider/tests/provider.class.test.js @@ -1,9 +1,9 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const mockProvider = require('../adapters/mock') +const MockProvider = require('../adapters/mock') test(`ProviderClass`, async () => { - const provider = mockProvider + const provider = new MockProvider() const msg = await provider.sendMessage('123456789', 'hola') console.log(msg) assert.is(msg.userId, '123456789') From 1edd9ab371bb438987d8bab377a58bb2277842dd Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 11 Nov 2022 17:56:35 +0100 Subject: [PATCH 051/459] working ws provider --- packages/core/classes/bot.class.js | 3 ++- packages/core/tests/bot.class.test.js | 9 +++++++-- packages/core/tests/interactive.test.js | 9 +++++++++ packages/core/utils/interactive.js | 2 +- packages/index.js | 3 +-- packages/provider/adapters/web-whatsapp/index.js | 2 +- 6 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 packages/core/tests/interactive.test.js diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index b2ffef5..9bb940a 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -47,8 +47,9 @@ class BotClass { * @param {*} ctxMessage */ handleMsg = ({ body, to, from }) => { - this.databaseClass.saveLog(body) + this.databaseClass.save(body) const messageToSend = this.flowClass.find(body) || [] + console.log(messageToSend) if (Array.isArray(messageToSend)) this.sendFlow(messageToSend, from) } diff --git a/packages/core/tests/bot.class.test.js b/packages/core/tests/bot.class.test.js index e183a11..ae91476 100644 --- a/packages/core/tests/bot.class.test.js +++ b/packages/core/tests/bot.class.test.js @@ -4,9 +4,13 @@ const assert = require('uvu/assert') const { create } = require('../') const BotClass = require('../classes/bot.class') -class MockFlow {} +class MockFlow { + find = () => {} +} -class MockDB {} +class MockDB { + save = () => {} +} class MockProvider extends EventEmitter {} @@ -18,6 +22,7 @@ test(`BotClass`, async () => { } const bot = await create(setting) assert.is(bot instanceof BotClass, true) + assert.is(bot.handleMsg({ body: 'test', to: 'to', from: 'from' })) }) test.run() diff --git a/packages/core/tests/interactive.test.js b/packages/core/tests/interactive.test.js new file mode 100644 index 0000000..71f2615 --- /dev/null +++ b/packages/core/tests/interactive.test.js @@ -0,0 +1,9 @@ +const { test } = require('uvu') +const assert = require('uvu/assert') +const { printer } = require('../utils/interactive') + +test(`Interactive`, () => { + assert.equal(printer()) +}) + +test.run() diff --git a/packages/core/utils/interactive.js b/packages/core/utils/interactive.js index 5ea553f..d626025 100644 --- a/packages/core/utils/interactive.js +++ b/packages/core/utils/interactive.js @@ -1,7 +1,7 @@ const { yellow, red, bgRed } = require('kleur') const printer = (message, title) => { - // console.clear() + console.clear() if (title) console.log(bgRed(`${title}`)) console.log(yellow(Array.isArray(message) ? message.join('\n') : message)) console.log(``) diff --git a/packages/index.js b/packages/index.js index c9f828f..3957a8f 100644 --- a/packages/index.js +++ b/packages/index.js @@ -1,5 +1,4 @@ const inout = require('./io') const botcore = require('./core') -const database = require('./database') -module.exports = { inout, botcore, database } +module.exports = { inout, botcore } diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/adapters/web-whatsapp/index.js index cb7f325..090d9cd 100644 --- a/packages/provider/adapters/web-whatsapp/index.js +++ b/packages/provider/adapters/web-whatsapp/index.js @@ -5,7 +5,7 @@ const { cleanNumber, generateImage } = require('./utils') class WebWhatsappProvider extends ProviderClass { vendor - constructor(_vendor) { + constructor() { super() this.vendor = new Client({ authStrategy: new LocalAuth(), From a20b128ee882d9fd4ef3d44d864787e60c3651f6 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 11 Nov 2022 20:28:49 +0100 Subject: [PATCH 052/459] working pkgs --- package.json | 9 +- packages/cli/package.json | 5 +- packages/cli/rollup-cli.config.js | 8 +- packages/core/package.json | 3 +- packages/core/rollup-cli.config.js | 8 +- packages/database/rollup-cli.config.js | 8 +- packages/io/rollup-cli.config.js | 8 +- .../provider/adapters/web-whatsapp/index.js | 14 ++- .../provider/adapters/web-whatsapp/utils.js | 8 +- packages/provider/index.js | 11 +++ packages/provider/package.json | 6 +- packages/provider/rollup-cli.config.js | 8 +- yarn.lock | 92 +++++++++++++++++++ 13 files changed, 166 insertions(+), 22 deletions(-) create mode 100644 packages/provider/index.js diff --git a/package.json b/package.json index 9b8778a..22d78de 100644 --- a/package.json +++ b/package.json @@ -5,17 +5,17 @@ "main": "app.js", "private": true, "scripts": { - "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js", + "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js ", "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", "core:rollup": "rollup ./packages/core/index.js --config ./packages/core/rollup-cli.config.js", "provider:rollup": "rollup ./packages/provider/index.js --config ./packages/provider/rollup-cli.config.js", "database:rollup": "rollup ./packages/database/index.js --config ./packages/database/rollup-cli.config.js", - "all:rollup": "rollup ./packages/index.js --config ./packages/rollup-cli.config.js", "format:check": "prettier --check ./packages", "format:write": "prettier --write ./packages", "lint:check": "eslint ./packages", "lint:fix": "eslint --fix ./packages", - "build": "npm run all:rollup", + "build": "yarn run cli:rollup && yarn run io:rollup && yarn run core:rollup && yarn run provider:rollup && yarn run database:rollup", + "link.dist": "", "test.unit": "node ./node_modules/uvu/bin.js packages test", "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit", @@ -48,6 +48,9 @@ "repository": "https://github.com/leifermendez/bot-whatsapp", "license": "ISC", "dependencies": { + "@rollup/plugin-json": "^5.0.1", + "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-replace": "^5.0.1", "whatsapp-web.js": "^1.18.2" }, "devDependencies": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 6ed3d2b..63fbc17 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -9,5 +9,8 @@ "cross-spawn": "^7.0.3", "detect-package-manager": "^2.0.1", "kleur": "^4.1.5" - } + }, + "files": [ + "./lib/cli/bundle.cli.cjs" + ] } diff --git a/packages/cli/rollup-cli.config.js b/packages/cli/rollup-cli.config.js index 02f9e6b..818a8d1 100644 --- a/packages/cli/rollup-cli.config.js +++ b/packages/cli/rollup-cli.config.js @@ -1,10 +1,14 @@ const commonjs = require('@rollup/plugin-commonjs') +const { nodeResolve } = require('@rollup/plugin-node-resolve') +const { join } = require('path') + +const PATH = join(__dirname, 'lib', 'cli', 'bundle.cli.cjs') module.exports = { input: 'index.js', output: { - file: 'lib/cli/bundle.cli.cjs', + file: PATH, format: 'cjs', }, - plugins: [commonjs()], + plugins: [commonjs(), nodeResolve()], } diff --git a/packages/core/package.json b/packages/core/package.json index d07219c..fb1d68e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,8 +11,7 @@ "format:write": "prettier --write .", "lint:check": "eslint .", "lint:fix": "eslint --fix .", - "test:core": "node ../../node_modules/uvu/bin.js tests", - "build:core": "npm run format:write && npm run lint:fix && npm run io:rollup" + "build:core": "yarn run format:write && yarn run lint:fix && yarn run io:rollup" }, "keywords": [], "author": "", diff --git a/packages/core/rollup-cli.config.js b/packages/core/rollup-cli.config.js index 9069686..162e0cc 100644 --- a/packages/core/rollup-cli.config.js +++ b/packages/core/rollup-cli.config.js @@ -1,10 +1,14 @@ const commonjs = require('@rollup/plugin-commonjs') +const { nodeResolve } = require('@rollup/plugin-node-resolve') +const { join } = require('path') + +const PATH = join(__dirname, 'lib', 'core', 'bundle.core.cjs') module.exports = { input: 'index.js', output: { - file: 'lib/core/bundle.core.cjs', + file: PATH, format: 'cjs', }, - plugins: [commonjs()], + plugins: [commonjs(), nodeResolve()], } diff --git a/packages/database/rollup-cli.config.js b/packages/database/rollup-cli.config.js index a4aea1b..fa39873 100644 --- a/packages/database/rollup-cli.config.js +++ b/packages/database/rollup-cli.config.js @@ -1,10 +1,14 @@ const commonjs = require('@rollup/plugin-commonjs') +const { nodeResolve } = require('@rollup/plugin-node-resolve') +const { join } = require('path') + +const PATH = join(__dirname, 'lib', 'database', 'bundle.database.cjs') module.exports = { input: 'index.js', output: { - file: 'lib/database/bundle.database.cjs', + file: PATH, format: 'cjs', }, - plugins: [commonjs()], + plugins: [commonjs(), nodeResolve()], } diff --git a/packages/io/rollup-cli.config.js b/packages/io/rollup-cli.config.js index 355242c..e58aa0c 100644 --- a/packages/io/rollup-cli.config.js +++ b/packages/io/rollup-cli.config.js @@ -1,10 +1,14 @@ const commonjs = require('@rollup/plugin-commonjs') +const { nodeResolve } = require('@rollup/plugin-node-resolve') +const { join } = require('path') + +const PATH = join(__dirname, 'lib', 'io', 'bundle.io.cjs') module.exports = { input: 'index.js', output: { - file: 'lib/io/bundle.io.cjs', + file: PATH, format: 'cjs', }, - plugins: [commonjs()], + plugins: [commonjs(), nodeResolve()], } diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/adapters/web-whatsapp/index.js index 090d9cd..befab5c 100644 --- a/packages/provider/adapters/web-whatsapp/index.js +++ b/packages/provider/adapters/web-whatsapp/index.js @@ -1,7 +1,7 @@ const { Client, LocalAuth } = require('whatsapp-web.js') const { ProviderClass } = require('@bot-whatsapp/core') -const { cleanNumber, generateImage } = require('./utils') +const { cleanNumber, generateImage, isValidNumber } = require('./utils') class WebWhatsappProvider extends ProviderClass { vendor @@ -60,7 +60,17 @@ class WebWhatsappProvider extends ProviderClass { }, { event: 'message', - func: (payload) => this.emit('message', payload), + func: (payload) => { + if (payload.from === 'status@broadcast') { + return + } + + if (!isValidNumber(payload.from)) { + return + } + + this.emit('message', payload) + }, }, ] diff --git a/packages/provider/adapters/web-whatsapp/utils.js b/packages/provider/adapters/web-whatsapp/utils.js index 7cdc020..0f307a5 100644 --- a/packages/provider/adapters/web-whatsapp/utils.js +++ b/packages/provider/adapters/web-whatsapp/utils.js @@ -12,4 +12,10 @@ const generateImage = (base64) => { qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.svg`)) } -module.exports = { cleanNumber, generateImage } +const isValidNumber = (rawNumber) => { + const regexGroup = /\@g.us\b/gm + const exist = rawNumber.match(regexGroup) + return !exist +} + +module.exports = { cleanNumber, generateImage, isValidNumber } diff --git a/packages/provider/index.js b/packages/provider/index.js new file mode 100644 index 0000000..e9f2ad3 --- /dev/null +++ b/packages/provider/index.js @@ -0,0 +1,11 @@ +const MockProvider = require('./adapters/mock') +const WebWhatsappProvider = require('./adapters/web-whatsapp') +const TwilioProvider = require('./adapters/twilio') +const { ProviderClass } = require('@bot-whatsapp/core') + +module.exports = { + WebWhatsappProvider, + MockProvider, + TwilioProvider, + ProviderClass, +} diff --git a/packages/provider/package.json b/packages/provider/package.json index f242007..e3eecae 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -7,9 +7,11 @@ "keywords": [], "author": "", "license": "ISC", - "devDependencies": {}, "dependencies": { "@bot-whatsapp/core": "*", "qr-image": "^3.2.0" - } + }, + "files": [ + "./lib/provider/bundle.provider.cjs" + ] } diff --git a/packages/provider/rollup-cli.config.js b/packages/provider/rollup-cli.config.js index fa77e06..8676117 100644 --- a/packages/provider/rollup-cli.config.js +++ b/packages/provider/rollup-cli.config.js @@ -1,10 +1,12 @@ -const commonjs = require('@rollup/plugin-commonjs') +const { join } = require('path') + +const PATH = join(__dirname, 'lib', 'provider', 'bundle.provider.cjs') module.exports = { input: 'index.js', output: { - file: 'lib/provider/bundle.provider.cjs', + file: PATH, format: 'cjs', }, - plugins: [commonjs()], + plugins: [], } diff --git a/yarn.lock b/yarn.lock index 4cb6a81..2b22ca9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,6 +102,33 @@ is-reference "1.2.1" magic-string "^0.26.4" +"@rollup/plugin-json@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-5.0.1.tgz#d5cd67cc83ede42967447dfabbe1be45a091f5b7" + integrity sha512-QCwhZZLvM8nRcTHyR1vOgyTMiAnjiNj1ebD/BMRvbO1oc/z14lZH6PfxXeegee2B6mky/u9fia4fxRM4TqrUaw== + dependencies: + "@rollup/pluginutils" "^5.0.1" + +"@rollup/plugin-node-resolve@^15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz#72be449b8e06f6367168d5b3cd5e2802e0248971" + integrity sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-builtin-module "^3.2.0" + is-module "^1.0.0" + resolve "^1.22.1" + +"@rollup/plugin-replace@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz#49a57af3e6df111a9e75dea3f3572741f4c5c83e" + integrity sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag== + dependencies: + "@rollup/pluginutils" "^5.0.1" + magic-string "^0.26.4" + "@rollup/pluginutils@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" @@ -126,6 +153,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + "@types/yauzl@^2.9.1": version "2.10.0" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" @@ -286,6 +318,11 @@ buffers@~0.1.1: resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + c8@^7.12.0: version "7.12.0" resolved "https://registry.yarnpkg.com/c8/-/c8-7.12.0.tgz#402db1c1af4af5249153535d1c84ad70c5c96b14" @@ -428,6 +465,11 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + dequal@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -740,6 +782,11 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -809,6 +856,13 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -863,6 +917,20 @@ inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-builtin-module@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" + integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== + dependencies: + builtin-modules "^3.3.0" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -880,6 +948,11 @@ is-glob@^4.0.0, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -1219,6 +1292,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -1354,6 +1432,15 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -1488,6 +1575,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + tar-fs@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" From 59182f20f3531d0e77231cac19c40b9255899fa7 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 13 Nov 2022 14:08:33 +0100 Subject: [PATCH 053/459] Test (core) OK --- __mocks__/mock.provider.js | 17 ++++ package.json | 1 + packages/core/classes/bot.class.js | 4 +- packages/core/package.json | 1 + packages/core/tests/bot.class.test.js | 77 +++++++++++++++++-- ...active.test.js => interactive.test.js.bak} | 0 packages/core/utils/interactive.js | 16 ++-- 7 files changed, 103 insertions(+), 13 deletions(-) create mode 100644 __mocks__/mock.provider.js rename packages/core/tests/{interactive.test.js => interactive.test.js.bak} (100%) diff --git a/__mocks__/mock.provider.js b/__mocks__/mock.provider.js new file mode 100644 index 0000000..9dfd91c --- /dev/null +++ b/__mocks__/mock.provider.js @@ -0,0 +1,17 @@ +const { EventEmitter } = require('node:events') + +class MockProvider extends EventEmitter { + delaySendMessage = (miliseconds, eventName, payload) => + new Promise((res) => + setTimeout(() => { + this.emit(eventName, payload) + res + }, miliseconds) + ) + + sendMessage = async (userId, message) => { + return Promise.resolve({ userId, message }) + } +} + +module.exports = MockProvider diff --git a/package.json b/package.json index 22d78de..2d4cc08 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", "c8": "^7.12.0", + "cross-env": "^7.0.3", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", "prettier": "^2.7.1", diff --git a/packages/core/classes/bot.class.js b/packages/core/classes/bot.class.js index 9bb940a..d856bb0 100644 --- a/packages/core/classes/bot.class.js +++ b/packages/core/classes/bot.class.js @@ -23,8 +23,8 @@ class BotClass { listenerBusEvents = () => [ { event: 'require_action', - func: ({ instructions }) => - printer(instructions, '⚡⚡ ACCION REQUERIDA ⚡⚡'), + func: ({ instructions, title = '⚡⚡ ACCION REQUERIDA ⚡⚡' }) => + printer(instructions, title), }, { event: 'ready', diff --git a/packages/core/package.json b/packages/core/package.json index fb1d68e..019e415 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,6 +11,7 @@ "format:write": "prettier --write .", "lint:check": "eslint .", "lint:fix": "eslint --fix .", + "test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests", "build:core": "yarn run format:write && yarn run lint:fix && yarn run io:rollup" }, "keywords": [], diff --git a/packages/core/tests/bot.class.test.js b/packages/core/tests/bot.class.test.js index ae91476..6b94c6d 100644 --- a/packages/core/tests/bot.class.test.js +++ b/packages/core/tests/bot.class.test.js @@ -1,6 +1,6 @@ -const { EventEmitter } = require('node:events') const { test } = require('uvu') const assert = require('uvu/assert') +const MockProvider = require('../../../__mocks__/mock.provider') const { create } = require('../') const BotClass = require('../classes/bot.class') @@ -12,9 +12,7 @@ class MockDB { save = () => {} } -class MockProvider extends EventEmitter {} - -test(`BotClass`, async () => { +test(`[BotClass] Probando instanciamiento de clase`, async () => { const setting = { flow: new MockFlow(), database: new MockDB(), @@ -22,7 +20,76 @@ test(`BotClass`, async () => { } const bot = await create(setting) assert.is(bot instanceof BotClass, true) - assert.is(bot.handleMsg({ body: 'test', to: 'to', from: 'from' })) +}) + +test(`[BotClass] Eventos 'require_action,ready,auth_failure,message '`, async () => { + let responseEvents = {} + + const MOCK_EVENTS = { + require_action: { + instructions: 'Debes...', + }, + ready: true, + auth_failure: { + instructions: 'Error...', + }, + message: { + from: 'XXXXXX', + body: 'hola', + hasMedia: false, + }, + } + + const mockProvider = new MockProvider() + + const setting = { + flow: new MockFlow(), + database: new MockDB(), + provider: mockProvider, + } + await create(setting) + + /// Escuchamos eventos + mockProvider.on( + 'require_action', + (r) => (responseEvents['require_action'] = r) + ) + mockProvider.on('ready', (r) => (responseEvents['ready'] = r)) + mockProvider.on('auth_failure', (r) => (responseEvents['auth_failure'] = r)) + mockProvider.on('message', (r) => (responseEvents['message'] = r)) + + /// Emitimos eventos + mockProvider.delaySendMessage( + 0, + 'require_action', + MOCK_EVENTS.require_action + ) + mockProvider.delaySendMessage(0, 'ready', MOCK_EVENTS.ready) + mockProvider.delaySendMessage(0, 'auth_failure', MOCK_EVENTS.auth_failure) + mockProvider.delaySendMessage(0, 'message', MOCK_EVENTS.message) + + await delay(0) + + /// Testeamos eventos + assert.is( + JSON.stringify(responseEvents.require_action), + JSON.stringify(MOCK_EVENTS.require_action) + ) + assert.is(responseEvents.ready, MOCK_EVENTS.ready) + + assert.is( + JSON.stringify(responseEvents.auth_failure), + JSON.stringify(MOCK_EVENTS.auth_failure) + ) + + assert.is( + JSON.stringify(responseEvents.message), + JSON.stringify(MOCK_EVENTS.message) + ) }) test.run() + +function delay(ms) { + return new Promise((res) => setTimeout(res, ms)) +} diff --git a/packages/core/tests/interactive.test.js b/packages/core/tests/interactive.test.js.bak similarity index 100% rename from packages/core/tests/interactive.test.js rename to packages/core/tests/interactive.test.js.bak diff --git a/packages/core/utils/interactive.js b/packages/core/utils/interactive.js index d626025..dcbe716 100644 --- a/packages/core/utils/interactive.js +++ b/packages/core/utils/interactive.js @@ -1,10 +1,14 @@ -const { yellow, red, bgRed } = require('kleur') - +const { yellow, bgRed } = require('kleur') +const NODE_ENV = process.env.NODE_ENV || 'dev' const printer = (message, title) => { - console.clear() - if (title) console.log(bgRed(`${title}`)) - console.log(yellow(Array.isArray(message) ? message.join('\n') : message)) - console.log(``) + if (NODE_ENV !== 'test') { + console.clear() + if (title) console.log(bgRed(`${title}`)) + console.log( + yellow(Array.isArray(message) ? message.join('\n') : message) + ) + console.log(``) + } } module.exports = { printer } From 3946c88ed78d712acbb3ffb65144d67b7cc47fdf Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 13 Nov 2022 14:18:20 +0100 Subject: [PATCH 054/459] rename core to bot --- packages/{core => bot}/classes/bot.class.js | 0 .../{core => bot}/classes/provider.class.js | 0 packages/{core => bot}/index.js | 0 packages/{core => bot}/package.json | 5 ++- .../rollup-bot.config.js} | 2 +- .../{core => bot}/tests/bot.class.test.js | 4 +-- packages/{core => bot}/utils/interactive.js | 0 packages/core/LIST_EVENTS.md | 32 ------------------- packages/core/tests/interactive.test.js.bak | 9 ------ packages/provider/adapters/mock/index.js | 2 +- .../provider/adapters/web-whatsapp/index.js | 2 +- packages/provider/index.js | 2 +- packages/provider/package.json | 2 +- 13 files changed, 9 insertions(+), 51 deletions(-) rename packages/{core => bot}/classes/bot.class.js (100%) rename packages/{core => bot}/classes/provider.class.js (100%) rename packages/{core => bot}/index.js (100%) rename packages/{core => bot}/package.json (80%) rename packages/{core/rollup-cli.config.js => bot/rollup-bot.config.js} (82%) rename packages/{core => bot}/tests/bot.class.test.js (95%) rename packages/{core => bot}/utils/interactive.js (100%) delete mode 100644 packages/core/LIST_EVENTS.md delete mode 100644 packages/core/tests/interactive.test.js.bak diff --git a/packages/core/classes/bot.class.js b/packages/bot/classes/bot.class.js similarity index 100% rename from packages/core/classes/bot.class.js rename to packages/bot/classes/bot.class.js diff --git a/packages/core/classes/provider.class.js b/packages/bot/classes/provider.class.js similarity index 100% rename from packages/core/classes/provider.class.js rename to packages/bot/classes/provider.class.js diff --git a/packages/core/index.js b/packages/bot/index.js similarity index 100% rename from packages/core/index.js rename to packages/bot/index.js diff --git a/packages/core/package.json b/packages/bot/package.json similarity index 80% rename from packages/core/package.json rename to packages/bot/package.json index 019e415..53c7507 100644 --- a/packages/core/package.json +++ b/packages/bot/package.json @@ -1,5 +1,5 @@ { - "name": "@bot-whatsapp/core", + "name": "@bot-whatsapp/bot", "version": "0.0.1", "description": "", "main": "index.js", @@ -11,8 +11,7 @@ "format:write": "prettier --write .", "lint:check": "eslint .", "lint:fix": "eslint --fix .", - "test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests", - "build:core": "yarn run format:write && yarn run lint:fix && yarn run io:rollup" + "test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests" }, "keywords": [], "author": "", diff --git a/packages/core/rollup-cli.config.js b/packages/bot/rollup-bot.config.js similarity index 82% rename from packages/core/rollup-cli.config.js rename to packages/bot/rollup-bot.config.js index 162e0cc..e244f5d 100644 --- a/packages/core/rollup-cli.config.js +++ b/packages/bot/rollup-bot.config.js @@ -2,7 +2,7 @@ const commonjs = require('@rollup/plugin-commonjs') const { nodeResolve } = require('@rollup/plugin-node-resolve') const { join } = require('path') -const PATH = join(__dirname, 'lib', 'core', 'bundle.core.cjs') +const PATH = join(__dirname, 'lib', 'bot', 'bundle.bot.cjs') module.exports = { input: 'index.js', diff --git a/packages/core/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js similarity index 95% rename from packages/core/tests/bot.class.test.js rename to packages/bot/tests/bot.class.test.js index 6b94c6d..fb5ba4f 100644 --- a/packages/core/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -1,8 +1,8 @@ const { test } = require('uvu') const assert = require('uvu/assert') const MockProvider = require('../../../__mocks__/mock.provider') -const { create } = require('../') -const BotClass = require('../classes/bot.class') +const { create } = require('@bot-whatsapp/bot') +const BotClass = require('@bot-whatsapp/bot/classes/bot.class') class MockFlow { find = () => {} diff --git a/packages/core/utils/interactive.js b/packages/bot/utils/interactive.js similarity index 100% rename from packages/core/utils/interactive.js rename to packages/bot/utils/interactive.js diff --git a/packages/core/LIST_EVENTS.md b/packages/core/LIST_EVENTS.md deleted file mode 100644 index 7a25d0f..0000000 --- a/packages/core/LIST_EVENTS.md +++ /dev/null @@ -1,32 +0,0 @@ -- **require_action**: Indica que accion se necesita por parte del usuario y debe contener `instructions` obligatorio - -```json -{ - "instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`, - ... otros argumentos -} -``` - -- **ready**: Indica que todo los procesos para usar el provider han pasado correctamente. Ejemplo validacion de token credenciales etc - -retorna: `true` - -- **auth_failure**: Indica que un problema ocurrio en el inicio del provider `instructions` obligatorio - -```json -{ - "instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`, - ... otros argumentos -} -``` - -- **message**: Indica que mensaje a entrado se debe contemplar la siguiente estructura - -```json -{ - "from": 'Numero de telefono o id que identifique al usuario', - "body": 'Mensaje en string que esta entrando', - "hasMedia": 'boolean true o false indicando is tiene un archivo multimedia', - ... otros argumentos -} -``` diff --git a/packages/core/tests/interactive.test.js.bak b/packages/core/tests/interactive.test.js.bak deleted file mode 100644 index 71f2615..0000000 --- a/packages/core/tests/interactive.test.js.bak +++ /dev/null @@ -1,9 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') -const { printer } = require('../utils/interactive') - -test(`Interactive`, () => { - assert.equal(printer()) -}) - -test.run() diff --git a/packages/provider/adapters/mock/index.js b/packages/provider/adapters/mock/index.js index 87d79fd..224c63a 100644 --- a/packages/provider/adapters/mock/index.js +++ b/packages/provider/adapters/mock/index.js @@ -1,4 +1,4 @@ -const { ProviderClass } = require('@bot-whatsapp/core') +const { ProviderClass } = require('@bot-whatsapp/bot') class MockProvider extends ProviderClass { constructor() { diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/adapters/web-whatsapp/index.js index befab5c..11260fe 100644 --- a/packages/provider/adapters/web-whatsapp/index.js +++ b/packages/provider/adapters/web-whatsapp/index.js @@ -1,5 +1,5 @@ const { Client, LocalAuth } = require('whatsapp-web.js') -const { ProviderClass } = require('@bot-whatsapp/core') +const { ProviderClass } = require('@bot-whatsapp/bot') const { cleanNumber, generateImage, isValidNumber } = require('./utils') diff --git a/packages/provider/index.js b/packages/provider/index.js index e9f2ad3..3d98238 100644 --- a/packages/provider/index.js +++ b/packages/provider/index.js @@ -1,7 +1,7 @@ const MockProvider = require('./adapters/mock') const WebWhatsappProvider = require('./adapters/web-whatsapp') const TwilioProvider = require('./adapters/twilio') -const { ProviderClass } = require('@bot-whatsapp/core') +const { ProviderClass } = require('@bot-whatsapp/bot') module.exports = { WebWhatsappProvider, diff --git a/packages/provider/package.json b/packages/provider/package.json index e3eecae..4bad96f 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -8,7 +8,7 @@ "author": "", "license": "ISC", "dependencies": { - "@bot-whatsapp/core": "*", + "@bot-whatsapp/bot": "*", "qr-image": "^3.2.0" }, "files": [ From 03eed5131ad7769c0404fcb7414634334e733722 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 13 Nov 2022 14:41:25 +0100 Subject: [PATCH 055/459] move io into bot --- package.json | 2 +- packages/{io => bot}/USES_CASES.md | 0 .../bot.class.js => core/core.class.js} | 4 +-- packages/bot/index.js | 28 +++++++++++++++---- packages/{io/classes => bot/io}/flow.class.js | 0 packages/{ => bot}/io/methods/addAnswer.js | 2 +- packages/{ => bot}/io/methods/addKeyword.js | 2 +- packages/{ => bot}/io/methods/index.js | 0 packages/{ => bot}/io/methods/toJson.js | 0 packages/{ => bot}/io/rollup-cli.config.js | 0 packages/bot/package.json | 11 ++++++-- .../{classes => provider}/provider.class.js | 0 packages/bot/rollup-bot.config.js | 2 +- packages/bot/tests/bot.class.test.js | 13 ++++----- packages/{io => bot}/tests/methods.test.js | 2 +- packages/{io => bot}/utils/hash.js | 0 packages/io/index.js | 13 --------- packages/io/package.json | 11 -------- packages/io/utils/index.js | 3 -- 19 files changed, 44 insertions(+), 49 deletions(-) rename packages/{io => bot}/USES_CASES.md (100%) rename packages/bot/{classes/bot.class.js => core/core.class.js} (97%) rename packages/{io/classes => bot/io}/flow.class.js (100%) rename packages/{ => bot}/io/methods/addAnswer.js (95%) rename packages/{ => bot}/io/methods/addKeyword.js (95%) rename packages/{ => bot}/io/methods/index.js (100%) rename packages/{ => bot}/io/methods/toJson.js (100%) rename packages/{ => bot}/io/rollup-cli.config.js (100%) rename packages/bot/{classes => provider}/provider.class.js (100%) rename packages/{io => bot}/tests/methods.test.js (98%) rename packages/{io => bot}/utils/hash.js (100%) delete mode 100644 packages/io/index.js delete mode 100644 packages/io/package.json delete mode 100644 packages/io/utils/index.js diff --git a/package.json b/package.json index 2d4cc08..0f85b9a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js ", "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", - "core:rollup": "rollup ./packages/core/index.js --config ./packages/core/rollup-cli.config.js", + "bot:rollup": "rollup ./packages/bot/index.js --config ./packages/bot/rollup-bot.config.js", "provider:rollup": "rollup ./packages/provider/index.js --config ./packages/provider/rollup-cli.config.js", "database:rollup": "rollup ./packages/database/index.js --config ./packages/database/rollup-cli.config.js", "format:check": "prettier --check ./packages", diff --git a/packages/io/USES_CASES.md b/packages/bot/USES_CASES.md similarity index 100% rename from packages/io/USES_CASES.md rename to packages/bot/USES_CASES.md diff --git a/packages/bot/classes/bot.class.js b/packages/bot/core/core.class.js similarity index 97% rename from packages/bot/classes/bot.class.js rename to packages/bot/core/core.class.js index d856bb0..256aebc 100644 --- a/packages/bot/classes/bot.class.js +++ b/packages/bot/core/core.class.js @@ -6,7 +6,7 @@ const { printer } = require('../utils/interactive') * [ ] Buscar mensaje en flow * */ -class BotClass { +class CoreClass { flowClass databaseClass providerClass @@ -75,4 +75,4 @@ class BotClass { } } } -module.exports = BotClass +module.exports = CoreClass diff --git a/packages/bot/index.js b/packages/bot/index.js index 2c18122..6f14465 100644 --- a/packages/bot/index.js +++ b/packages/bot/index.js @@ -1,12 +1,30 @@ -const BotClass = require('./classes/bot.class') -const ProviderClass = require('./classes/provider.class') +const CoreClass = require('./core/core.class') +const ProviderClass = require('./provider/provider.class') +const FlowClass = require('./io/flow.class') +const { addKeyword, addAnswer } = require('./io/methods') /** * Crear instancia de clase * @param {*} args * @returns */ -const create = async ({ flow, database, provider }) => - new BotClass(flow, database, provider) +const createBot = async ({ flow, database, provider }) => + new CoreClass(flow, database, provider) -module.exports = { create, ProviderClass } +/** + * Crear instancia de clase + * @param {*} args + * @returns + */ +const createFlow = (args) => { + return new FlowClass(args) +} + +module.exports = { + createBot, + createFlow, + addKeyword, + addAnswer, + ProviderClass, + CoreClass, +} diff --git a/packages/io/classes/flow.class.js b/packages/bot/io/flow.class.js similarity index 100% rename from packages/io/classes/flow.class.js rename to packages/bot/io/flow.class.js diff --git a/packages/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js similarity index 95% rename from packages/io/methods/addAnswer.js rename to packages/bot/io/methods/addAnswer.js index d383c3c..ace843e 100644 --- a/packages/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -1,4 +1,4 @@ -const { generateRef } = require('../utils') +const { generateRef } = require('../../utils/hash') const { toJson } = require('./toJson') /** * diff --git a/packages/io/methods/addKeyword.js b/packages/bot/io/methods/addKeyword.js similarity index 95% rename from packages/io/methods/addKeyword.js rename to packages/bot/io/methods/addKeyword.js index 5eba51f..18bcaa5 100644 --- a/packages/io/methods/addKeyword.js +++ b/packages/bot/io/methods/addKeyword.js @@ -1,4 +1,4 @@ -const { generateRef } = require('../utils') +const { generateRef } = require('../../utils/hash') const { addAnswer } = require('./addAnswer') const { toJson } = require('./toJson') /** diff --git a/packages/io/methods/index.js b/packages/bot/io/methods/index.js similarity index 100% rename from packages/io/methods/index.js rename to packages/bot/io/methods/index.js diff --git a/packages/io/methods/toJson.js b/packages/bot/io/methods/toJson.js similarity index 100% rename from packages/io/methods/toJson.js rename to packages/bot/io/methods/toJson.js diff --git a/packages/io/rollup-cli.config.js b/packages/bot/io/rollup-cli.config.js similarity index 100% rename from packages/io/rollup-cli.config.js rename to packages/bot/io/rollup-cli.config.js diff --git a/packages/bot/package.json b/packages/bot/package.json index 53c7507..87071c7 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -2,11 +2,10 @@ "name": "@bot-whatsapp/bot", "version": "0.0.1", "description": "", - "main": "index.js", + "main": "./lib/bundle.bot.cjs", "private": true, "scripts": { - "core:dev": "node ./index.js", - "core:rollup": "node ../../node_modules/.bin/rollup index.js --config ./rollup-cli.config.js", + "bot:rollup": "node ../../node_modules/.bin/rollup index.js --config ./rollup-cli.config.js", "format:check": "prettier --check .", "format:write": "prettier --write .", "lint:check": "eslint .", @@ -14,6 +13,12 @@ "test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests" }, "keywords": [], + "files": [ + "./lib/bundle.bot.cjs", + "./provider/*", + "./core/*", + "./io/*" + ], "author": "", "license": "ISC", "devDependencies": { diff --git a/packages/bot/classes/provider.class.js b/packages/bot/provider/provider.class.js similarity index 100% rename from packages/bot/classes/provider.class.js rename to packages/bot/provider/provider.class.js diff --git a/packages/bot/rollup-bot.config.js b/packages/bot/rollup-bot.config.js index e244f5d..97dc00c 100644 --- a/packages/bot/rollup-bot.config.js +++ b/packages/bot/rollup-bot.config.js @@ -2,7 +2,7 @@ const commonjs = require('@rollup/plugin-commonjs') const { nodeResolve } = require('@rollup/plugin-node-resolve') const { join } = require('path') -const PATH = join(__dirname, 'lib', 'bot', 'bundle.bot.cjs') +const PATH = join(__dirname, 'lib', 'bundle.bot.cjs') module.exports = { input: 'index.js', diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index fb5ba4f..e5f512d 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -1,8 +1,7 @@ const { test } = require('uvu') const assert = require('uvu/assert') const MockProvider = require('../../../__mocks__/mock.provider') -const { create } = require('@bot-whatsapp/bot') -const BotClass = require('@bot-whatsapp/bot/classes/bot.class') +const { createBot, CoreClass } = require('@bot-whatsapp/bot') class MockFlow { find = () => {} @@ -12,17 +11,17 @@ class MockDB { save = () => {} } -test(`[BotClass] Probando instanciamiento de clase`, async () => { +test(`[CoreClass] Probando instanciamiento de clase`, async () => { const setting = { flow: new MockFlow(), database: new MockDB(), provider: new MockProvider(), } - const bot = await create(setting) - assert.is(bot instanceof BotClass, true) + const bot = await createBot(setting) + assert.is(bot instanceof CoreClass, true) }) -test(`[BotClass] Eventos 'require_action,ready,auth_failure,message '`, async () => { +test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => { let responseEvents = {} const MOCK_EVENTS = { @@ -47,7 +46,7 @@ test(`[BotClass] Eventos 'require_action,ready,auth_failure,message '`, async () database: new MockDB(), provider: mockProvider, } - await create(setting) + await createBot(setting) /// Escuchamos eventos mockProvider.on( diff --git a/packages/io/tests/methods.test.js b/packages/bot/tests/methods.test.js similarity index 98% rename from packages/io/tests/methods.test.js rename to packages/bot/tests/methods.test.js index a649d62..cfefbb2 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/bot/tests/methods.test.js @@ -1,6 +1,6 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const { addKeyword, addAnswer } = require('../methods') +const { addKeyword, addAnswer } = require('@bot-whatsapp/bot') test('Debere probar las propeidades', () => { const ARRANGE = { diff --git a/packages/io/utils/hash.js b/packages/bot/utils/hash.js similarity index 100% rename from packages/io/utils/hash.js rename to packages/bot/utils/hash.js diff --git a/packages/io/index.js b/packages/io/index.js deleted file mode 100644 index c47f212..0000000 --- a/packages/io/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { addKeyword, addAnswer } = require('./methods') -const FlowClass = require('./classes/flow.class') - -/** - * Crear instancia de clase - * @param {*} args - * @returns - */ -const create = (args) => { - return new FlowClass(args) -} - -module.exports = { addKeyword, addAnswer, create } diff --git a/packages/io/package.json b/packages/io/package.json deleted file mode 100644 index 0dd5b26..0000000 --- a/packages/io/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@bot-whatsapp/io", - "version": "0.0.1", - "description": "", - "main": "index.js", - "private": true, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": {} -} diff --git a/packages/io/utils/index.js b/packages/io/utils/index.js deleted file mode 100644 index 1461cef..0000000 --- a/packages/io/utils/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const { generateRef } = require('./hash') - -module.exports = { generateRef } From 716f0587c36fcc5a51e0dd2474b188c6e5c24411 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 13 Nov 2022 15:13:05 +0100 Subject: [PATCH 056/459] issue rollup --- package.json | 3 +- packages/bot/index.js | 4 +- packages/bot/provider/provider.class.js | 12 ++ packages/provider/index.js | 6 +- .../provider/{adapters => }/mock/index.js | 11 -- packages/provider/package.json | 10 +- packages/provider/rollup-cli.config.js | 12 -- packages/provider/rollup-provider.config.js | 21 +++ .../provider/tests/provider.class.test.js | 3 +- .../provider/{adapters => }/twilio/index.js | 0 .../{adapters => }/web-whatsapp/index.js | 0 .../{adapters => }/web-whatsapp/utils.js | 0 yarn.lock | 163 +++++++++++++++++- 13 files changed, 208 insertions(+), 37 deletions(-) rename packages/provider/{adapters => }/mock/index.js (66%) delete mode 100644 packages/provider/rollup-cli.config.js create mode 100644 packages/provider/rollup-provider.config.js rename packages/provider/{adapters => }/twilio/index.js (100%) rename packages/provider/{adapters => }/web-whatsapp/index.js (100%) rename packages/provider/{adapters => }/web-whatsapp/utils.js (100%) diff --git a/package.json b/package.json index 0f85b9a..16273ce 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js ", "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", "bot:rollup": "rollup ./packages/bot/index.js --config ./packages/bot/rollup-bot.config.js", - "provider:rollup": "rollup ./packages/provider/index.js --config ./packages/provider/rollup-cli.config.js", + "provider:rollup": "rollup ./packages/provider/index.js --config ./packages/provider/rollup-provider.config.js", "database:rollup": "rollup ./packages/database/index.js --config ./packages/database/rollup-cli.config.js", "format:check": "prettier --check ./packages", "format:write": "prettier --write ./packages", @@ -63,6 +63,7 @@ "prompts": "^2.4.2", "rimraf": "^3.0.2", "rollup": "^3.2.3", + "rollup-plugin-copy": "^3.4.0", "uvu": "^0.5.6" }, "packageManager": "yarn@3.2.0", diff --git a/packages/bot/index.js b/packages/bot/index.js index 6f14465..5c2d675 100644 --- a/packages/bot/index.js +++ b/packages/bot/index.js @@ -4,7 +4,7 @@ const FlowClass = require('./io/flow.class') const { addKeyword, addAnswer } = require('./io/methods') /** - * Crear instancia de clase + * Crear instancia de clase Bot * @param {*} args * @returns */ @@ -12,7 +12,7 @@ const createBot = async ({ flow, database, provider }) => new CoreClass(flow, database, provider) /** - * Crear instancia de clase + * Crear instancia de clase Io (Flow) * @param {*} args * @returns */ diff --git a/packages/bot/provider/provider.class.js b/packages/bot/provider/provider.class.js index 4879831..53e45da 100644 --- a/packages/bot/provider/provider.class.js +++ b/packages/bot/provider/provider.class.js @@ -11,6 +11,8 @@ const { EventEmitter } = require('node:events') * - error * - require_action */ + +const NODE_ENV = process.env.NODE_ENV || 'dev' class ProviderClass extends EventEmitter { /** * events: message | auth | auth_error | ... @@ -18,8 +20,18 @@ class ProviderClass extends EventEmitter { */ sendMessage = async (userId, message) => { + if (NODE_ENV !== 'production') + console.log('[sendMessage]', { userId, message }) return message } + + MockDelaySendMessage = (miliseconds, eventName, payload) => + new Promise((res) => + setTimeout(() => { + this.emit(eventName, payload) + res + }, miliseconds) + ) } module.exports = ProviderClass diff --git a/packages/provider/index.js b/packages/provider/index.js index 3d98238..c54c433 100644 --- a/packages/provider/index.js +++ b/packages/provider/index.js @@ -1,7 +1,7 @@ -const MockProvider = require('./adapters/mock') -const WebWhatsappProvider = require('./adapters/web-whatsapp') -const TwilioProvider = require('./adapters/twilio') const { ProviderClass } = require('@bot-whatsapp/bot') +const MockProvider = require('./mock') +const WebWhatsappProvider = require('./web-whatsapp') +const TwilioProvider = require('./twilio') module.exports = { WebWhatsappProvider, diff --git a/packages/provider/adapters/mock/index.js b/packages/provider/mock/index.js similarity index 66% rename from packages/provider/adapters/mock/index.js rename to packages/provider/mock/index.js index 224c63a..63034c0 100644 --- a/packages/provider/adapters/mock/index.js +++ b/packages/provider/mock/index.js @@ -3,7 +3,6 @@ const { ProviderClass } = require('@bot-whatsapp/bot') class MockProvider extends ProviderClass { constructor() { super() - this.init() } delaySendMessage = (miliseconds, eventName, payload) => @@ -18,16 +17,6 @@ class MockProvider extends ProviderClass { console.log(`Enviando... ${userId}, ${message}`) return Promise.resolve({ userId, message }) } - - init = () => - Promise.all([ - this.delaySendMessage(50, 'ready', null), - this.delaySendMessage(500, 'message', { - from: 'XXXXXX', - body: 'hola', - hasMedia: false, - }), - ]) } module.exports = MockProvider diff --git a/packages/provider/package.json b/packages/provider/package.json index 4bad96f..a3f5514 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -2,8 +2,11 @@ "name": "@bot-whatsapp/provider", "version": "0.0.1", "description": "Esto es el conector a Twilio, Meta, etc...", - "main": "index.js", + "main": "./lib/bundle.provider.cjs", "private": true, + "scripts": { + "test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests" + }, "keywords": [], "author": "", "license": "ISC", @@ -12,6 +15,9 @@ "qr-image": "^3.2.0" }, "files": [ - "./lib/provider/bundle.provider.cjs" + "./lib/bundle.provider.cjs", + "./mock/*", + "./twilio/*", + "./web-whatsapp/*" ] } diff --git a/packages/provider/rollup-cli.config.js b/packages/provider/rollup-cli.config.js deleted file mode 100644 index 8676117..0000000 --- a/packages/provider/rollup-cli.config.js +++ /dev/null @@ -1,12 +0,0 @@ -const { join } = require('path') - -const PATH = join(__dirname, 'lib', 'provider', 'bundle.provider.cjs') - -module.exports = { - input: 'index.js', - output: { - file: PATH, - format: 'cjs', - }, - plugins: [], -} diff --git a/packages/provider/rollup-provider.config.js b/packages/provider/rollup-provider.config.js new file mode 100644 index 0000000..014f095 --- /dev/null +++ b/packages/provider/rollup-provider.config.js @@ -0,0 +1,21 @@ +const { join } = require('path') +const commonjs = require('@rollup/plugin-commonjs') +const { nodeResolve } = require('@rollup/plugin-node-resolve') + +const PATH = join(__dirname, 'lib', 'bundle.provider.cjs') + +module.exports = { + input: 'index.js', + output: { + file: PATH, + format: 'cjs', + }, + plugins: [ + commonjs(), + nodeResolve({ + resolveOnly: (module) => { + return !module === '@bot-whatsapp/bot' + }, + }), + ], +} diff --git a/packages/provider/tests/provider.class.test.js b/packages/provider/tests/provider.class.test.js index 7d7dc69..37e8124 100644 --- a/packages/provider/tests/provider.class.test.js +++ b/packages/provider/tests/provider.class.test.js @@ -1,11 +1,10 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const MockProvider = require('../adapters/mock') +const MockProvider = require('../mock') test(`ProviderClass`, async () => { const provider = new MockProvider() const msg = await provider.sendMessage('123456789', 'hola') - console.log(msg) assert.is(msg.userId, '123456789') assert.is(msg.message, 'hola') }) diff --git a/packages/provider/adapters/twilio/index.js b/packages/provider/twilio/index.js similarity index 100% rename from packages/provider/adapters/twilio/index.js rename to packages/provider/twilio/index.js diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/web-whatsapp/index.js similarity index 100% rename from packages/provider/adapters/web-whatsapp/index.js rename to packages/provider/web-whatsapp/index.js diff --git a/packages/provider/adapters/web-whatsapp/utils.js b/packages/provider/web-whatsapp/utils.js similarity index 100% rename from packages/provider/adapters/web-whatsapp/utils.js rename to packages/provider/web-whatsapp/utils.js diff --git a/yarn.lock b/yarn.lock index 2b22ca9..f12cbbe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -72,12 +72,12 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -143,11 +143,31 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== +"@types/fs-extra@^8.0.1": + version "8.1.2" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.2.tgz#7125cc2e4bdd9bd2fc83005ffdb1d0ba00cca61f" + integrity sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + "@types/node@*": version "18.11.9" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" @@ -238,6 +258,11 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + async@>=0.2.9, async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" @@ -295,6 +320,13 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -387,6 +419,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -492,6 +529,13 @@ diff@^5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -672,6 +716,17 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.0.3: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -703,6 +758,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -762,6 +824,15 @@ fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -804,6 +875,13 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -841,6 +919,20 @@ globals@^13.15.0: dependencies: type-fest "^0.20.2" +globby@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" + integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -886,7 +978,7 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -941,7 +1033,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -953,11 +1045,21 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-plain-object@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== + is-reference@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" @@ -1024,6 +1126,13 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -1131,6 +1240,19 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -1297,6 +1419,11 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -1460,6 +1587,17 @@ rimraf@3.0.2, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup-plugin-copy@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz#f1228a3ffb66ffad8606e2f3fb7ff23141ed3286" + integrity sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ== + dependencies: + "@types/fs-extra" "^8.0.1" + colorette "^1.1.0" + fs-extra "^8.1.0" + globby "10.0.1" + is-plain-object "^3.0.0" + rollup@^3.2.3: version "3.2.5" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.2.5.tgz#9452168ac083218c8212bf53d2448bdc6b8b0de7" @@ -1523,6 +1661,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -1620,6 +1763,13 @@ through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -1650,6 +1800,11 @@ unbzip2-stream@1.4.3: buffer "^5.2.1" through "^2.3.8" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" From 878840fc0656bb39558f71ada194f0d9a597e56c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 13 Nov 2022 20:06:22 +0100 Subject: [PATCH 057/459] must split adapter --- packages/provider/index.js | 2 +- packages/provider/rollup-provider.config.js | 10 +--------- packages/provider/twilio/index.js | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/packages/provider/index.js b/packages/provider/index.js index c54c433..c4f5cb8 100644 --- a/packages/provider/index.js +++ b/packages/provider/index.js @@ -1,7 +1,7 @@ -const { ProviderClass } = require('@bot-whatsapp/bot') const MockProvider = require('./mock') const WebWhatsappProvider = require('./web-whatsapp') const TwilioProvider = require('./twilio') +const { ProviderClass } = require('@bot-whatsapp/bot') module.exports = { WebWhatsappProvider, diff --git a/packages/provider/rollup-provider.config.js b/packages/provider/rollup-provider.config.js index 014f095..7cd6346 100644 --- a/packages/provider/rollup-provider.config.js +++ b/packages/provider/rollup-provider.config.js @@ -1,6 +1,5 @@ const { join } = require('path') const commonjs = require('@rollup/plugin-commonjs') -const { nodeResolve } = require('@rollup/plugin-node-resolve') const PATH = join(__dirname, 'lib', 'bundle.provider.cjs') @@ -10,12 +9,5 @@ module.exports = { file: PATH, format: 'cjs', }, - plugins: [ - commonjs(), - nodeResolve({ - resolveOnly: (module) => { - return !module === '@bot-whatsapp/bot' - }, - }), - ], + plugins: [commonjs()], } diff --git a/packages/provider/twilio/index.js b/packages/provider/twilio/index.js index dc937c8..41795b1 100644 --- a/packages/provider/twilio/index.js +++ b/packages/provider/twilio/index.js @@ -1,5 +1,5 @@ const twilio = require('twilio') -const ProviderClass = require('../classes/provider.class') +const { ProviderClass } = require('@bot-whatsapp/bot') const TwilioVendor = new twilio(accountSid, authToken) From 9178bc083ec33a31775e55376c9b3108bf83d218 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 14 Nov 2022 19:44:58 +0100 Subject: [PATCH 058/459] fix rollup --- package.json | 10 +++--- packages/bot/index.js | 10 ++++++ packages/bot/rollup-bot.config.js | 2 +- packages/cli/rollup-cli.config.js | 2 +- packages/database/rollup-cli.config.js | 2 +- packages/provider/index.js | 11 ------- packages/provider/package.json | 7 ++--- packages/provider/rollup-provider.config.js | 34 +++++++++++++++------ 8 files changed, 45 insertions(+), 33 deletions(-) delete mode 100644 packages/provider/index.js diff --git a/package.json b/package.json index 16273ce..20f2228 100644 --- a/package.json +++ b/package.json @@ -4,17 +4,17 @@ "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "private": true, + "type": "module", "scripts": { - "cli:rollup": "rollup ./packages/cli/index.js --config ./packages/cli/rollup-cli.config.js ", - "io:rollup": "rollup ./packages/io/index.js --config ./packages/io/rollup-cli.config.js", - "bot:rollup": "rollup ./packages/bot/index.js --config ./packages/bot/rollup-bot.config.js", - "provider:rollup": "rollup ./packages/provider/index.js --config ./packages/provider/rollup-provider.config.js", + "cli:rollup": "rollup --config ./packages/cli/rollup-cli.config.js ", + "bot:rollup": "rollup --config ./packages/bot/rollup-bot.config.js", + "provider:rollup": "rollup --config ./packages/provider/rollup-provider.config.js ", "database:rollup": "rollup ./packages/database/index.js --config ./packages/database/rollup-cli.config.js", "format:check": "prettier --check ./packages", "format:write": "prettier --write ./packages", "lint:check": "eslint ./packages", "lint:fix": "eslint --fix ./packages", - "build": "yarn run cli:rollup && yarn run io:rollup && yarn run core:rollup && yarn run provider:rollup && yarn run database:rollup", + "build": "yarn run cli:rollup && yarn run bot:rollup && yarn run provider:rollup && yarn run database:rollup", "link.dist": "", "test.unit": "node ./node_modules/uvu/bin.js packages test", "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", diff --git a/packages/bot/index.js b/packages/bot/index.js index 5c2d675..0cfafe9 100644 --- a/packages/bot/index.js +++ b/packages/bot/index.js @@ -20,9 +20,19 @@ const createFlow = (args) => { return new FlowClass(args) } +/** + * Crear instancia de clase Provider + * @param {*} args + * @returns + */ +const createProvider = (args) => { + return new FlowClass(args) +} + module.exports = { createBot, createFlow, + createProvider, addKeyword, addAnswer, ProviderClass, diff --git a/packages/bot/rollup-bot.config.js b/packages/bot/rollup-bot.config.js index 97dc00c..0af60e4 100644 --- a/packages/bot/rollup-bot.config.js +++ b/packages/bot/rollup-bot.config.js @@ -5,7 +5,7 @@ const { join } = require('path') const PATH = join(__dirname, 'lib', 'bundle.bot.cjs') module.exports = { - input: 'index.js', + input: join(__dirname, 'index.js'), output: { file: PATH, format: 'cjs', diff --git a/packages/cli/rollup-cli.config.js b/packages/cli/rollup-cli.config.js index 818a8d1..047909c 100644 --- a/packages/cli/rollup-cli.config.js +++ b/packages/cli/rollup-cli.config.js @@ -5,7 +5,7 @@ const { join } = require('path') const PATH = join(__dirname, 'lib', 'cli', 'bundle.cli.cjs') module.exports = { - input: 'index.js', + input: join(__dirname, 'index.js'), output: { file: PATH, format: 'cjs', diff --git a/packages/database/rollup-cli.config.js b/packages/database/rollup-cli.config.js index fa39873..d3edda3 100644 --- a/packages/database/rollup-cli.config.js +++ b/packages/database/rollup-cli.config.js @@ -5,7 +5,7 @@ const { join } = require('path') const PATH = join(__dirname, 'lib', 'database', 'bundle.database.cjs') module.exports = { - input: 'index.js', + input: join(__dirname, 'index.js'), output: { file: PATH, format: 'cjs', diff --git a/packages/provider/index.js b/packages/provider/index.js deleted file mode 100644 index c4f5cb8..0000000 --- a/packages/provider/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const MockProvider = require('./mock') -const WebWhatsappProvider = require('./web-whatsapp') -const TwilioProvider = require('./twilio') -const { ProviderClass } = require('@bot-whatsapp/bot') - -module.exports = { - WebWhatsappProvider, - MockProvider, - TwilioProvider, - ProviderClass, -} diff --git a/packages/provider/package.json b/packages/provider/package.json index a3f5514..9e66586 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -2,7 +2,7 @@ "name": "@bot-whatsapp/provider", "version": "0.0.1", "description": "Esto es el conector a Twilio, Meta, etc...", - "main": "./lib/bundle.provider.cjs", + "main": "./lib/bundle.mock.cjs", "private": true, "scripts": { "test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests" @@ -15,9 +15,6 @@ "qr-image": "^3.2.0" }, "files": [ - "./lib/bundle.provider.cjs", - "./mock/*", - "./twilio/*", - "./web-whatsapp/*" + "./lib/*" ] } diff --git a/packages/provider/rollup-provider.config.js b/packages/provider/rollup-provider.config.js index 7cd6346..0fecae0 100644 --- a/packages/provider/rollup-provider.config.js +++ b/packages/provider/rollup-provider.config.js @@ -1,13 +1,29 @@ const { join } = require('path') const commonjs = require('@rollup/plugin-commonjs') -const PATH = join(__dirname, 'lib', 'bundle.provider.cjs') - -module.exports = { - input: 'index.js', - output: { - file: PATH, - format: 'cjs', +module.exports = [ + { + input: join(__dirname, 'web-whatsapp', 'index.js'), + output: { + file: join(__dirname, 'lib', 'bundle.web-whatsapp.cjs'), + format: 'cjs', + }, + plugins: [commonjs()], }, - plugins: [commonjs()], -} + { + input: join(__dirname, 'twilio', 'index.js'), + output: { + file: join(__dirname, 'lib', 'bundle.twilio.cjs'), + format: 'cjs', + }, + plugins: [commonjs()], + }, + { + input: join(__dirname, 'mock', 'index.js'), + output: { + file: join(__dirname, 'lib', 'bundle.mock.cjs'), + format: 'cjs', + }, + plugins: [commonjs()], + }, +] From 5797beb0ca8949ec80176ac0f5041859b21c54ec Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 14 Nov 2022 20:52:38 +0100 Subject: [PATCH 059/459] improve --- .gitignore | 1 + __tests__/basic-seller.e2e.test.js | 45 -- package.json | 4 +- packages/bot/index.js | 7 +- packages/bot/package.json | 1 + packages/bot/utils/interactive.js | 2 +- packages/cli/bin/cli.js | 2 +- packages/cli/install/index.js | 1 + packages/cli/package.json | 5 +- packages/index.js | 4 - packages/provider/web-whatsapp/index.js | 11 +- yarn.lock | 638 +----------------------- 12 files changed, 33 insertions(+), 688 deletions(-) delete mode 100644 __tests__/basic-seller.e2e.test.js delete mode 100644 packages/index.js diff --git a/.gitignore b/.gitignore index c264642..f443149 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ packages/cli/config.json config.json coverage/ *.lcov +log lib tmp/ .fleet/ diff --git a/__tests__/basic-seller.e2e.test.js b/__tests__/basic-seller.e2e.test.js deleted file mode 100644 index 2122001..0000000 --- a/__tests__/basic-seller.e2e.test.js +++ /dev/null @@ -1,45 +0,0 @@ -const { test } = require('uvu') -const assert = require('uvu/assert') - -const { inout, database, botcore } = require('../packages/index') -const MockProvider = require('../packages/provider/adapters/mock') -const MockDB = require('../packages/database/adapters/mock') - -const makeFlow = () => { - const flowA = inout - .addKeyword(['hola', 'ole']) - .addAnswer('Bienvenido a github.com/leifermendez') - .addAnswer('Soy Leifer y tu ?', { - capture: true, - }) - .addAnswer('Un gusto saludarte') - .toJson() - - return [...flowA] -} - -test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { - let messagesIn = [] - let messagesOut = [] - - const adapterFlow = inout.create(makeFlow()) - - const adapterProvider = new MockProvider() - const adapterDB = await database.create(new MockDB()) - - await botcore.create({ - flow: adapterFlow, - database: adapterDB, - provider: adapterProvider, - }) - - await delay(1000) - messagesOut = adapterDB.history - assert.is(messagesOut.join(), ['hola'].join()) -}) - -function delay(miliseconds) { - return new Promise((res) => setTimeout(res, miliseconds)) -} - -test.run() diff --git a/package.json b/package.json index 20f2228..81bc0c8 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,6 @@ "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "private": true, - "type": "module", "scripts": { "cli:rollup": "rollup --config ./packages/cli/rollup-cli.config.js ", "bot:rollup": "rollup --config ./packages/bot/rollup-bot.config.js", @@ -50,8 +49,7 @@ "dependencies": { "@rollup/plugin-json": "^5.0.1", "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-replace": "^5.0.1", - "whatsapp-web.js": "^1.18.2" + "@rollup/plugin-replace": "^5.0.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", diff --git a/packages/bot/index.js b/packages/bot/index.js index 0cfafe9..072e0c0 100644 --- a/packages/bot/index.js +++ b/packages/bot/index.js @@ -25,8 +25,11 @@ const createFlow = (args) => { * @param {*} args * @returns */ -const createProvider = (args) => { - return new FlowClass(args) +const createProvider = (providerClass = class {}) => { + const providerInstance = new providerClass() + if (!providerClass.prototype instanceof ProviderClass) + throw new Error('El provider no implementa ProviderClass') + return providerInstance } module.exports = { diff --git a/packages/bot/package.json b/packages/bot/package.json index 87071c7..144b124 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -22,6 +22,7 @@ "author": "", "license": "ISC", "devDependencies": { + "@bot-whatsapp/cli": "*", "kleur": "^4.1.5" } } diff --git a/packages/bot/utils/interactive.js b/packages/bot/utils/interactive.js index dcbe716..c317a7f 100644 --- a/packages/bot/utils/interactive.js +++ b/packages/bot/utils/interactive.js @@ -2,7 +2,7 @@ const { yellow, bgRed } = require('kleur') const NODE_ENV = process.env.NODE_ENV || 'dev' const printer = (message, title) => { if (NODE_ENV !== 'test') { - console.clear() + // console.clear() if (title) console.log(bgRed(`${title}`)) console.log( yellow(Array.isArray(message) ? message.join('\n') : message) diff --git a/packages/cli/bin/cli.js b/packages/cli/bin/cli.js index 3af89c4..1a1e282 100644 --- a/packages/cli/bin/cli.js +++ b/packages/cli/bin/cli.js @@ -1,3 +1,3 @@ #!/usr/bin/env node -const index = require('../../../lib/cli/bundle.cli.cjs') +const index = require('../lib/cli/bundle.cli.cjs') index.startInteractive() diff --git a/packages/cli/install/index.js b/packages/cli/install/index.js index 6eab6b9..0c18761 100644 --- a/packages/cli/install/index.js +++ b/packages/cli/install/index.js @@ -5,6 +5,7 @@ const { installDeps, getPkgManage } = require('./tool') const PATHS_DIR = [ join(__dirname, 'pkg-to-update.json'), join(__dirname, '..', 'pkg-to-update.json'), + join(__dirname, '..', '..', 'pkg-to-update.json'), ] const PKG_TO_UPDATE = () => { diff --git a/packages/cli/package.json b/packages/cli/package.json index 63fbc17..fd9b7f7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -12,5 +12,8 @@ }, "files": [ "./lib/cli/bundle.cli.cjs" - ] + ], + "bin": { + "bot": "./bin/cli.js" + } } diff --git a/packages/index.js b/packages/index.js deleted file mode 100644 index 3957a8f..0000000 --- a/packages/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const inout = require('./io') -const botcore = require('./core') - -module.exports = { inout, botcore } diff --git a/packages/provider/web-whatsapp/index.js b/packages/provider/web-whatsapp/index.js index 11260fe..1e3f4a3 100644 --- a/packages/provider/web-whatsapp/index.js +++ b/packages/provider/web-whatsapp/index.js @@ -1,5 +1,11 @@ const { Client, LocalAuth } = require('whatsapp-web.js') const { ProviderClass } = require('@bot-whatsapp/bot') +const { Console } = require('console') +const { createWriteStream } = require('fs') + +const logger = new Console({ + stdout: createWriteStream('./log'), +}) const { cleanNumber, generateImage, isValidNumber } = require('./utils') @@ -17,14 +23,15 @@ class WebWhatsappProvider extends ProviderClass { this.vendor.on(event, func) } - this.vendor.initialize().catch((e) => + this.vendor.initialize().catch((e) => { + logger.log(e) this.emit('require_action', { instructions: [ `Debes eliminar la carpeta .wwebjs_auth`, `y reiniciar nuevamente el bot `, ], }) - ) + }) } /** diff --git a/yarn.lock b/yarn.lock index f12cbbe..f2502cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,11 +85,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@pedroslopez/moduleraid@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz#8e5544de683a2edf50c8550af29d9e485fee114f" - integrity sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ== - "@rollup/plugin-commonjs@^23.0.2": version "23.0.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz#3a3a5b7b1b1cb29037eb4992edcaae997d7ebd92" @@ -178,13 +173,6 @@ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== - dependencies: - "@types/node" "*" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -195,13 +183,6 @@ acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -224,35 +205,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" - integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== - dependencies: - archiver-utils "^2.1.0" - async "^3.2.3" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" - readdir-glob "^1.0.0" - tar-stream "^2.2.0" - zip-stream "^4.1.0" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -263,48 +215,11 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -async@>=0.2.9, async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -big-integer@^1.6.17: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -327,29 +242,6 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-indexof-polyfill@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" - integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== - -buffer@^5.2.1, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== - builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" @@ -378,13 +270,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== - dependencies: - traverse ">=0.3.0 <0.4" - chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -393,11 +278,6 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -429,16 +309,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compress-commons@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" - integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -449,24 +319,6 @@ convert-source-map@^1.6.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -crc32-stream@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" - integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== - dependencies: - crc-32 "^1.2.0" - readable-stream "^3.4.0" - cross-env@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" @@ -474,13 +326,6 @@ cross-env@^7.0.3: dependencies: cross-spawn "^7.0.1" -cross-fetch@3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -490,7 +335,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.2: +debug@^4.1.1, debug@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -519,11 +364,6 @@ detect-package-manager@^2.0.1: dependencies: execa "^5.1.1" -devtools-protocol@0.0.981744: - version "0.0.981744" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf" - integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg== - diff@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" @@ -543,25 +383,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== - dependencies: - readable-stream "^2.0.2" - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -700,17 +526,6 @@ execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -744,13 +559,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -765,14 +573,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -794,14 +594,6 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -fluent-ffmpeg@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" - integrity sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q== - dependencies: - async ">=0.2.9" - which "^1.1.1" - foreground-child@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" @@ -810,20 +602,6 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -843,16 +621,6 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -863,13 +631,6 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -933,7 +694,7 @@ globby@10.0.1: merge2 "^1.2.3" slash "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -960,24 +721,11 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -https-proxy-agent@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.1.1, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -1004,7 +752,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: +inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1072,11 +820,6 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -1133,20 +876,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsqr@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsqr/-/jsqr-1.4.0.tgz#8efb8d0a7cc6863cb6d95116b9069123ce9eb2d1" - integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A== - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -1157,13 +886,6 @@ kleur@^4.0.3, kleur@^4.1.5: resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== -lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== - dependencies: - readable-stream "^2.0.5" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -1172,18 +894,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" - integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -1191,36 +901,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== - magic-string@^0.26.4: version "0.26.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" @@ -1253,11 +938,6 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -1270,30 +950,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: brace-expansion "^2.0.1" -minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -"mkdirp@>=0.5 0": - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -1309,23 +972,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -node-fetch@2.6.7, node-fetch@^2.6.5: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-webpmux@^3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/node-webpmux/-/node-webpmux-3.1.3.tgz#1111d74b0f588e3908ba16e579cdff0436a06c13" - integrity sha512-337vJ7dtoGUhE1zoN4s0mWqDO+RLVseShoWAy0FjGx0hsyDEKfVMAkHu4zfNf0RnPyGqGxnRrPZam36ld9KsxA== - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -1333,7 +979,7 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -1359,13 +1005,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -1373,13 +1012,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -1387,11 +1019,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1424,23 +1051,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pkg-dir@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -1451,16 +1066,6 @@ prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -1469,42 +1074,11 @@ prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -proxy-from-env@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer@^13.0.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-13.7.0.tgz#18e16f83e397cf02f7a0804c67c1603d381cfb0b" - integrity sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA== - dependencies: - cross-fetch "3.1.5" - debug "4.3.4" - devtools-protocol "0.0.981744" - extract-zip "2.0.1" - https-proxy-agent "5.0.1" - pkg-dir "4.2.0" - progress "2.0.3" - proxy-from-env "1.1.0" - rimraf "3.0.2" - tar-fs "2.1.1" - unbzip2-stream "1.4.3" - ws "8.5.0" - qr-image@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/qr-image/-/qr-image-3.2.0.tgz#9fa8295beae50c4a149cf9f909a1db464a8672e8" @@ -1515,35 +1089,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdir-glob@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" - integrity sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA== - dependencies: - minimatch "^5.1.0" - regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -1573,14 +1118,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@3.0.2, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -1599,9 +1137,9 @@ rollup-plugin-copy@^3.4.0: is-plain-object "^3.0.0" rollup@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.2.5.tgz#9452168ac083218c8212bf53d2448bdc6b8b0de7" - integrity sha512-/Ha7HhVVofduy+RKWOQJrxe4Qb3xyZo+chcpYiD8SoQa4AG7llhupUtyfKSSrdBM2mWJjhM8wZwmbY23NmlIYw== + version "3.3.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.3.0.tgz#ae8dc84808a9c75d775d8b2ed8db1adada31a581" + integrity sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA== optionalDependencies: fsevents "~2.3.2" @@ -1619,26 +1157,11 @@ sade@^1.7.3: dependencies: mri "^1.1.0" -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - semver@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -setimmediate@~1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -1680,20 +1203,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -1723,27 +1232,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -tar-fs@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4, tar-stream@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -1758,11 +1246,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -1770,16 +1253,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -1792,40 +1265,11 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -unbzip2-stream@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unzipper@^0.10.11: - version "0.10.11" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" - integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "^1.0.12" - graceful-fs "^4.2.2" - listenercount "~1.0.1" - readable-stream "~2.3.6" - setimmediate "~1.0.4" - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -1833,11 +1277,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - uvu@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" @@ -1857,43 +1296,6 @@ v8-to-istanbul@^9.0.0: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatsapp-web.js@^1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/whatsapp-web.js/-/whatsapp-web.js-1.18.2.tgz#ffd1a7c8dfb4b01ea15ef54afbbad8e29e5339f6" - integrity sha512-RMzLgstoS9hLK4ix+RchDxXdpuSXuV8jm7SDb/8xc5Ju09zrkOP11dj/4XYszmuwNR0n1VsxNQGp39pnulmcUA== - dependencies: - "@pedroslopez/moduleraid" "^5.0.2" - fluent-ffmpeg "^2.1.2" - jsqr "^1.3.1" - mime "^3.0.0" - node-fetch "^2.6.5" - node-webpmux "^3.1.0" - puppeteer "^13.0.0" - optionalDependencies: - archiver "^5.3.1" - fs-extra "^10.1.0" - unzipper "^0.10.11" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@^1.1.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -1920,11 +1322,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -1948,24 +1345,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zip-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" - integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== - dependencies: - archiver-utils "^2.1.0" - compress-commons "^4.1.0" - readable-stream "^3.6.0" From a5c38658a8637d57deea99683d437501f2fcc19f Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 15 Nov 2022 19:52:57 +0100 Subject: [PATCH 060/459] work flow --- packages/bot/core/core.class.js | 26 ++++++++++++++++++++------ packages/bot/io/flow.class.js | 24 ++++++++++++------------ 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 256aebc..ab5f3fc 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -47,16 +47,30 @@ class CoreClass { * @param {*} ctxMessage */ handleMsg = ({ body, to, from }) => { - this.databaseClass.save(body) - const messageToSend = this.flowClass.find(body) || [] - console.log(messageToSend) - if (Array.isArray(messageToSend)) this.sendFlow(messageToSend, from) + let msgToSend = [] + console.log('____', this.databaseClass.listHistory) + const prevMsg = [...this.databaseClass.listHistory].pop() + + if (prevMsg?.ref && prevMsg?.options?.capture) { + msgToSend = this.flowClass.find(prevMsg.ref, true) || [] + } else { + msgToSend = this.flowClass.find(body) || [] + } + if (Array.isArray(msgToSend)) this.sendFlow(msgToSend, from) + } + + sendProviderAndSave = (numberOrId, ctxMessage) => { + const { answer } = ctxMessage + return Promise.all([ + this.providerClass.sendMessage(numberOrId, answer), + this.databaseClass.save(ctxMessage), + ]) } sendFlow = (messageToSend, numberOrId) => { const queue = [] - for (const message of messageToSend) { - queue.push(this.providerClass.sendMessage(numberOrId, message)) + for (const ctxMessage of messageToSend) { + queue.push(this.sendProviderAndSave(numberOrId, ctxMessage)) } return Promise.all(queue) } diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index b83e850..6818982 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -5,20 +5,20 @@ class FlowClass { } find = (keyOrWord, symbol = false) => { + let capture = false let messages = [] - const findIn = (keyOrWord, symbol = false, flow = this.flow) => { - if (symbol) { - const refSymbol = flow.find((c) => c.keyword === keyOrWord) - if (refSymbol && refSymbol.answer) - messages.push(refSymbol.answer) - if (refSymbol && refSymbol.ref) findIn(refSymbol.ref, true) - } else { - const refSymbolByKeyworkd = flow.find((c) => - c.keyword.includes(keyOrWord) - ) - if (refSymbolByKeyworkd && refSymbolByKeyworkd.ref) - findIn(refSymbolByKeyworkd.ref, true) + let refSymbol + const findIn = (keyOrWord, symbol = false, flow = this.flow) => { + capture = refSymbol?.options?.capture || false + if (capture) return messages + if (symbol) { + refSymbol = flow.find((c) => c.keyword === keyOrWord) + if (refSymbol?.answer) messages.push(refSymbol) + if (refSymbol?.ref) findIn(refSymbol.ref, true) + } else { + refSymbol = flow.find((c) => c.keyword.includes(keyOrWord)) + if (refSymbol?.ref) findIn(refSymbol.ref, true) return messages } } From 1290d6b478ebddd1b691b2802fe93821d9a03e9e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 15 Nov 2022 20:47:12 +0100 Subject: [PATCH 061/459] next save conversation --- package.json | 12 +++--- packages/bot/core/core.class.js | 3 +- packages/bot/package.json | 1 + packages/bot/tests/bot.class.test.js | 3 +- packages/database/adapters/mock.js | 7 +++- packages/database/classes/database.class.js | 21 ---------- packages/database/index.js | 12 ------ packages/database/package.json | 2 +- packages/database/rollup-cli.config.js | 2 +- packages/provider/package.json | 6 ++- packages/provider/rollup-provider.config.js | 6 +-- yarn.lock | 46 +++++++++++++++++++++ 12 files changed, 71 insertions(+), 50 deletions(-) delete mode 100644 packages/database/classes/database.class.js diff --git a/package.json b/package.json index 81bc0c8..7b715c9 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "lint:check": "eslint ./packages", "lint:fix": "eslint --fix ./packages", "build": "yarn run cli:rollup && yarn run bot:rollup && yarn run provider:rollup && yarn run database:rollup", - "link.dist": "", + "link.dist": "cd packages/bot && npm link && cd ../provider && npm link && cd ../cli && npm link", "test.unit": "node ./node_modules/uvu/bin.js packages test", "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit", @@ -46,13 +46,12 @@ ], "repository": "https://github.com/leifermendez/bot-whatsapp", "license": "ISC", - "dependencies": { - "@rollup/plugin-json": "^5.0.1", - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-replace": "^5.0.1" - }, + "dependencies": {}, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", + "@rollup/plugin-json": "^5.0.1", + "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-replace": "^5.0.1", "c8": "^7.12.0", "cross-env": "^7.0.3", "eslint": "^8.26.0", @@ -61,6 +60,7 @@ "prompts": "^2.4.2", "rimraf": "^3.0.2", "rollup": "^3.2.3", + "rollup-plugin-cleanup": "^3.2.1", "rollup-plugin-copy": "^3.4.0", "uvu": "^0.5.6" }, diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index ab5f3fc..011bbf1 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -46,9 +46,8 @@ class CoreClass { * @private * @param {*} ctxMessage */ - handleMsg = ({ body, to, from }) => { + handleMsg = ({ body, from }) => { let msgToSend = [] - console.log('____', this.databaseClass.listHistory) const prevMsg = [...this.databaseClass.listHistory].pop() if (prevMsg?.ref && prevMsg?.options?.capture) { diff --git a/packages/bot/package.json b/packages/bot/package.json index 144b124..8a82678 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -23,6 +23,7 @@ "license": "ISC", "devDependencies": { "@bot-whatsapp/cli": "*", + "@bot-whatsapp/provider": "*", "kleur": "^4.1.5" } } diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index e5f512d..6536722 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -1,13 +1,14 @@ const { test } = require('uvu') const assert = require('uvu/assert') const MockProvider = require('../../../__mocks__/mock.provider') -const { createBot, CoreClass } = require('@bot-whatsapp/bot') +const { createBot, CoreClass } = require('../index') class MockFlow { find = () => {} } class MockDB { + listHistory = [] save = () => {} } diff --git a/packages/database/adapters/mock.js b/packages/database/adapters/mock.js index 5400ed3..7422687 100644 --- a/packages/database/adapters/mock.js +++ b/packages/database/adapters/mock.js @@ -1,7 +1,12 @@ class MockDatabase { listHistory = [] - constructor() {} + constructor() { + /** + * Se debe cargar listHistory con historial de mensajes + * para que se pueda continuar el flow + */ + } save = (ctx) => { console.log('Guardando DB...', ctx) diff --git a/packages/database/classes/database.class.js b/packages/database/classes/database.class.js deleted file mode 100644 index c10b98f..0000000 --- a/packages/database/classes/database.class.js +++ /dev/null @@ -1,21 +0,0 @@ -class DatabaseClass { - history = [] - engineDB - constructor(_engineDB) { - this.engineDB = _engineDB - } - - /** - * Se debe guardar mensaje numero - * @param {*} ctx - * @returns - */ - saveLog = (ctx) => { - this.history.pop() - this.history.push(ctx) - this.engineDB.save(ctx) - return ctx - } -} - -module.exports = DatabaseClass diff --git a/packages/database/index.js b/packages/database/index.js index 2072a97..e69de29 100644 --- a/packages/database/index.js +++ b/packages/database/index.js @@ -1,12 +0,0 @@ -const DatabaseClass = require('./classes/database.class') - -/** - * Crear instancia de clase - * @param {*} args - * @returns - */ -const create = async (engineClass) => { - return new DatabaseClass(engineClass) -} - -module.exports = { create } diff --git a/packages/database/package.json b/packages/database/package.json index dccbb0e..c297afa 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -2,7 +2,7 @@ "name": "@bot-whatsapp/database", "version": "0.0.1", "description": "Esto es el conector a mysql, pg, mongo", - "main": "index.js", + "main": "./lib/bundle.database.cjs", "private": true, "keywords": [], "author": "", diff --git a/packages/database/rollup-cli.config.js b/packages/database/rollup-cli.config.js index d3edda3..35aab25 100644 --- a/packages/database/rollup-cli.config.js +++ b/packages/database/rollup-cli.config.js @@ -2,7 +2,7 @@ const commonjs = require('@rollup/plugin-commonjs') const { nodeResolve } = require('@rollup/plugin-node-resolve') const { join } = require('path') -const PATH = join(__dirname, 'lib', 'database', 'bundle.database.cjs') +const PATH = join(__dirname, 'lib', 'bundle.database.cjs') module.exports = { input: join(__dirname, 'index.js'), diff --git a/packages/provider/package.json b/packages/provider/package.json index 9e66586..82a94b1 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -2,7 +2,7 @@ "name": "@bot-whatsapp/provider", "version": "0.0.1", "description": "Esto es el conector a Twilio, Meta, etc...", - "main": "./lib/bundle.mock.cjs", + "main": "./lib/mock/index.cjs", "private": true, "scripts": { "test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests" @@ -15,6 +15,8 @@ "qr-image": "^3.2.0" }, "files": [ - "./lib/*" + "./lib/mock/*", + "./lib/twilio/*", + "./lib/web-whatsapp/*" ] } diff --git a/packages/provider/rollup-provider.config.js b/packages/provider/rollup-provider.config.js index 0fecae0..1c03e54 100644 --- a/packages/provider/rollup-provider.config.js +++ b/packages/provider/rollup-provider.config.js @@ -5,7 +5,7 @@ module.exports = [ { input: join(__dirname, 'web-whatsapp', 'index.js'), output: { - file: join(__dirname, 'lib', 'bundle.web-whatsapp.cjs'), + file: join(__dirname, 'lib', 'web-whatsapp', 'index.cjs'), format: 'cjs', }, plugins: [commonjs()], @@ -13,7 +13,7 @@ module.exports = [ { input: join(__dirname, 'twilio', 'index.js'), output: { - file: join(__dirname, 'lib', 'bundle.twilio.cjs'), + file: join(__dirname, 'lib', 'twilio', 'index.cjs'), format: 'cjs', }, plugins: [commonjs()], @@ -21,7 +21,7 @@ module.exports = [ { input: join(__dirname, 'mock', 'index.js'), output: { - file: join(__dirname, 'lib', 'bundle.mock.cjs'), + file: join(__dirname, 'lib', 'mock', 'index.cjs'), format: 'cjs', }, plugins: [commonjs()], diff --git a/yarn.lock b/yarn.lock index f2502cc..aced5aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -501,6 +501,11 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" @@ -847,6 +852,15 @@ istanbul-reports@^3.1.4: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +js-cleanup@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/js-cleanup/-/js-cleanup-1.2.0.tgz#8dbc65954b1d38b255f1e8cf02cd17b3f7a053f9" + integrity sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ== + dependencies: + magic-string "^0.25.7" + perf-regexes "^1.0.1" + skip-regex "^1.0.2" + js-sdsl@^4.1.4: version "4.1.5" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" @@ -906,6 +920,13 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + magic-string@^0.26.4: version "0.26.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" @@ -1051,6 +1072,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +perf-regexes@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/perf-regexes/-/perf-regexes-1.0.1.tgz#6da1d62f5a94bf9353a0451bccacf69068b75d0b" + integrity sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng== + picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -1125,6 +1151,14 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup-plugin-cleanup@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c" + integrity sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ== + dependencies: + js-cleanup "^1.2.0" + rollup-pluginutils "^2.8.2" + rollup-plugin-copy@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz#f1228a3ffb66ffad8606e2f3fb7ff23141ed3286" @@ -1136,6 +1170,13 @@ rollup-plugin-copy@^3.4.0: globby "10.0.1" is-plain-object "^3.0.0" +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + rollup@^3.2.3: version "3.3.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.3.0.tgz#ae8dc84808a9c75d775d8b2ed8db1adada31a581" @@ -1184,6 +1225,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +skip-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/skip-regex/-/skip-regex-1.0.2.tgz#ac655d77e7c771ac2b9f37585fea37bff56ad65b" + integrity sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" From ce8e7be9d7abc3664d5645eddc7ced3effd28634 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 16 Nov 2022 20:41:36 +0100 Subject: [PATCH 062/459] mongo adapter:next step, continue conversation from db --- docker-compose.yml | 25 + package-lock.json | 4043 +++++++++++++++++ package.json | 2 +- packages/bot/package.json | 4 + packages/database/index.js | 0 .../{adapters/mock.js => mock/index.js} | 0 packages/database/mongo/index.js | 37 + packages/database/package.json | 11 +- packages/database/rollup-cli.config.js | 14 - packages/database/rollup-database.config.js | 21 + yarn.lock | 1304 +++++- 11 files changed, 5236 insertions(+), 225 deletions(-) create mode 100644 docker-compose.yml create mode 100644 package-lock.json delete mode 100644 packages/database/index.js rename packages/database/{adapters/mock.js => mock/index.js} (100%) create mode 100644 packages/database/mongo/index.js delete mode 100644 packages/database/rollup-cli.config.js create mode 100644 packages/database/rollup-database.config.js diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..86449f3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3.3' + +services: + mongo: + image: mongo + container_name: app_enviroment + restart: always + ports: + - "27019:27017" + environment: + MONGO_INITDB_DATABASE: bot + expose: + - 27019 + mysql: + image: mysql + command: --default-authentication-plugin=mysql_native_password + restart: always + environment: + MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: bot + container_name: app_mysql + ports: + - "3306:3306" + expose: + - 3306 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..fecb4f4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4043 @@ +{ + "name": "@bot-whatsapp/root", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@bot-whatsapp/root", + "version": "0.0.1", + "license": "ISC", + "workspaces": [ + "packages/*", + "docs" + ], + "dependencies": { + "@bot-whatsapp/database": "^0.0.1", + "@bot-whatsapp/provider": "^0.0.1" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^23.0.2", + "@rollup/plugin-json": "^5.0.1", + "@rollup/plugin-node-resolve": "^15.0.1", + "@rollup/plugin-replace": "^5.0.1", + "c8": "^7.12.0", + "cross-env": "^7.0.3", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.5.0", + "prettier": "^2.7.1", + "prompts": "^2.4.2", + "rimraf": "^3.0.2", + "rollup": "^3.2.3", + "rollup-plugin-cleanup": "^3.2.1", + "rollup-plugin-copy": "^3.4.0", + "uvu": "^0.5.6" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "optional": true + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/sha256-js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz", + "integrity": "sha512-iXLdKH19qPmIC73fVCrHWCSYjN/sxaAvZ3jNNyw6FclmHyjLKg0f69WlC9KTnyElxCR5MO9SKaG00VwlJwyAkQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^2.0.2", + "@aws-sdk/types": "^3.110.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "optional": true + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "optional": true + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "optional": true + }, + "node_modules/@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", + "optional": true + }, + "node_modules/@aws-sdk/abort-controller": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.208.0.tgz", + "integrity": "sha512-mQkDR+8VLCafg9KI4TgftftBOL170ricyb+HgV8n5jLDrEG+TfOfud8e6us2lIFESEuMpohC+/8yIcf6JjKkMg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.211.0.tgz", + "integrity": "sha512-KhXo1v78szdvLyF0SHRXR2I7SNkFeC0iay9amspAsF2jMz3CPu2EqWu4ymqO7lSSaAGEkKaUE9ZvD7uNn5oo7A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.211.0", + "@aws-sdk/config-resolver": "3.209.0", + "@aws-sdk/credential-provider-node": "3.211.0", + "@aws-sdk/fetch-http-handler": "3.208.0", + "@aws-sdk/hash-node": "3.208.0", + "@aws-sdk/invalid-dependency": "3.208.0", + "@aws-sdk/middleware-content-length": "3.208.0", + "@aws-sdk/middleware-endpoint": "3.208.0", + "@aws-sdk/middleware-host-header": "3.208.0", + "@aws-sdk/middleware-logger": "3.208.0", + "@aws-sdk/middleware-recursion-detection": "3.208.0", + "@aws-sdk/middleware-retry": "3.209.0", + "@aws-sdk/middleware-serde": "3.208.0", + "@aws-sdk/middleware-signing": "3.208.0", + "@aws-sdk/middleware-stack": "3.208.0", + "@aws-sdk/middleware-user-agent": "3.208.0", + "@aws-sdk/node-config-provider": "3.209.0", + "@aws-sdk/node-http-handler": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/smithy-client": "3.209.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/url-parser": "3.208.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.209.0", + "@aws-sdk/util-defaults-mode-node": "3.209.0", + "@aws-sdk/util-endpoints": "3.211.0", + "@aws-sdk/util-user-agent-browser": "3.208.0", + "@aws-sdk/util-user-agent-node": "3.209.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.211.0.tgz", + "integrity": "sha512-Wuo3ZYPy9L+OixlZ7/wM1BbPBdC22xO/a8z/J1sgQZiRDl80Ax+jf1u17D91xdZJGH0hTU5AlvEY7mHP0y/hAw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.209.0", + "@aws-sdk/fetch-http-handler": "3.208.0", + "@aws-sdk/hash-node": "3.208.0", + "@aws-sdk/invalid-dependency": "3.208.0", + "@aws-sdk/middleware-content-length": "3.208.0", + "@aws-sdk/middleware-endpoint": "3.208.0", + "@aws-sdk/middleware-host-header": "3.208.0", + "@aws-sdk/middleware-logger": "3.208.0", + "@aws-sdk/middleware-recursion-detection": "3.208.0", + "@aws-sdk/middleware-retry": "3.209.0", + "@aws-sdk/middleware-serde": "3.208.0", + "@aws-sdk/middleware-stack": "3.208.0", + "@aws-sdk/middleware-user-agent": "3.208.0", + "@aws-sdk/node-config-provider": "3.209.0", + "@aws-sdk/node-http-handler": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/smithy-client": "3.209.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/url-parser": "3.208.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.209.0", + "@aws-sdk/util-defaults-mode-node": "3.209.0", + "@aws-sdk/util-endpoints": "3.211.0", + "@aws-sdk/util-user-agent-browser": "3.208.0", + "@aws-sdk/util-user-agent-node": "3.209.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.211.0.tgz", + "integrity": "sha512-oJ+5ROykVsXpBFpWUfSUYHz/RcTjsZPri6CIY+wQmEFDAOxTsgxd7l8VkqX1r/U/QiK/xDXuK+Z7MurywXS+rQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.209.0", + "@aws-sdk/fetch-http-handler": "3.208.0", + "@aws-sdk/hash-node": "3.208.0", + "@aws-sdk/invalid-dependency": "3.208.0", + "@aws-sdk/middleware-content-length": "3.208.0", + "@aws-sdk/middleware-endpoint": "3.208.0", + "@aws-sdk/middleware-host-header": "3.208.0", + "@aws-sdk/middleware-logger": "3.208.0", + "@aws-sdk/middleware-recursion-detection": "3.208.0", + "@aws-sdk/middleware-retry": "3.209.0", + "@aws-sdk/middleware-serde": "3.208.0", + "@aws-sdk/middleware-stack": "3.208.0", + "@aws-sdk/middleware-user-agent": "3.208.0", + "@aws-sdk/node-config-provider": "3.209.0", + "@aws-sdk/node-http-handler": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/smithy-client": "3.209.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/url-parser": "3.208.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.209.0", + "@aws-sdk/util-defaults-mode-node": "3.209.0", + "@aws-sdk/util-endpoints": "3.211.0", + "@aws-sdk/util-user-agent-browser": "3.208.0", + "@aws-sdk/util-user-agent-node": "3.209.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.211.0.tgz", + "integrity": "sha512-39/PMIKLEaRUztx3m4I0x9SCnqTStaQuqIabAK/wk0uy+O2p32sv7eacRrGjZWHngqdsK7S1s/LSFErYzzIvkw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.209.0", + "@aws-sdk/credential-provider-node": "3.211.0", + "@aws-sdk/fetch-http-handler": "3.208.0", + "@aws-sdk/hash-node": "3.208.0", + "@aws-sdk/invalid-dependency": "3.208.0", + "@aws-sdk/middleware-content-length": "3.208.0", + "@aws-sdk/middleware-endpoint": "3.208.0", + "@aws-sdk/middleware-host-header": "3.208.0", + "@aws-sdk/middleware-logger": "3.208.0", + "@aws-sdk/middleware-recursion-detection": "3.208.0", + "@aws-sdk/middleware-retry": "3.209.0", + "@aws-sdk/middleware-sdk-sts": "3.208.0", + "@aws-sdk/middleware-serde": "3.208.0", + "@aws-sdk/middleware-signing": "3.208.0", + "@aws-sdk/middleware-stack": "3.208.0", + "@aws-sdk/middleware-user-agent": "3.208.0", + "@aws-sdk/node-config-provider": "3.209.0", + "@aws-sdk/node-http-handler": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/smithy-client": "3.209.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/url-parser": "3.208.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.209.0", + "@aws-sdk/util-defaults-mode-node": "3.209.0", + "@aws-sdk/util-endpoints": "3.211.0", + "@aws-sdk/util-user-agent-browser": "3.208.0", + "@aws-sdk/util-user-agent-node": "3.209.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "fast-xml-parser": "4.0.11", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/config-resolver": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.209.0.tgz", + "integrity": "sha512-wLXI1Jg9xx9wE8vdIfOgSKnoBWbn9j3IvW4+7PnM/nf5xC30/Jp4j+JndEG/BKyDQF7HJQTIeRpSkwKaqJhCRA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/signature-v4": "3.208.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.211.0.tgz", + "integrity": "sha512-YbTioDEGvGFYaHeeQrQUQLHnqvWYNdDn5acEAD76DMnoV+B04OVKWYphFd6KBZClIkXnH0T8stPnOE7La6rWjg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.211.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.208.0.tgz", + "integrity": "sha512-FB+KUSpZc03wVTXxGnMmgtaP0sJOv0D7oyogHb7wcf5b7RjjwqoaeUcJHTdKRZaW6e1foLk3/L9uebxiWefDbQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-imds": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.209.0.tgz", + "integrity": "sha512-EjA1nWduIHjALjNF6O2lpKVOoTIlfGHgvqCxjFf7XNqBTTKWCxEflcmUgqXwo9A7TU0mTTyr7nLGMAsNE2CR3w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.209.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/url-parser": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.211.0.tgz", + "integrity": "sha512-kFekBDGX3tMsbEBjpCHt2dp5hx7xBN0d7v+fNXky4fB61bNUxcLNpXkTgDIqRyMzEje3Jov9Be9Qgqb8ud0Fiw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.208.0", + "@aws-sdk/credential-provider-imds": "3.209.0", + "@aws-sdk/credential-provider-sso": "3.211.0", + "@aws-sdk/credential-provider-web-identity": "3.208.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/shared-ini-file-loader": "3.209.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.211.0.tgz", + "integrity": "sha512-RWDitzHmZOfrfTZCnL8nOLQgYgawAAw8IF5pqeNjcN9TZ/pR64B9pusTYD7a+uVDB8kb9vMU767g89ts2pqmfQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.208.0", + "@aws-sdk/credential-provider-imds": "3.209.0", + "@aws-sdk/credential-provider-ini": "3.211.0", + "@aws-sdk/credential-provider-process": "3.209.0", + "@aws-sdk/credential-provider-sso": "3.211.0", + "@aws-sdk/credential-provider-web-identity": "3.208.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/shared-ini-file-loader": "3.209.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.209.0.tgz", + "integrity": "sha512-G0urC5p1kgUfgpK8lncdisSewa8onnoQAVdf2Uh51hOqc7UufGce+ouvLH8J2iMkMaL1MSyu8fqwfZNyDtH37g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/shared-ini-file-loader": "3.209.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.211.0.tgz", + "integrity": "sha512-S8ciHRypUCi0Uz0D80yVGkWmvpCBCvkEaj+IO0LdYX05GDnH/B44DA8UQ0pfAJqLy5BeSO5snKVRKSPzxNtUGw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso": "3.211.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/shared-ini-file-loader": "3.209.0", + "@aws-sdk/token-providers": "3.211.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.208.0.tgz", + "integrity": "sha512-7wtrdEr8uvDr5t0stimrXGsW4G+TQyluZ9OucCCY0HXgNihmnk1BIu+COuOSxRtFXHwCh4rIPaVE1ABG2Mq24g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.211.0.tgz", + "integrity": "sha512-duo3zSI8usGxA23skzQqVDaKB7k3McJYbFG2nzPTYD+RI4w5Sbs66SUWvTmtSrdZJWmzDsDNKW9fOMtnNARVVw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.211.0", + "@aws-sdk/client-sso": "3.211.0", + "@aws-sdk/client-sts": "3.211.0", + "@aws-sdk/credential-provider-cognito-identity": "3.211.0", + "@aws-sdk/credential-provider-env": "3.208.0", + "@aws-sdk/credential-provider-imds": "3.209.0", + "@aws-sdk/credential-provider-ini": "3.211.0", + "@aws-sdk/credential-provider-node": "3.211.0", + "@aws-sdk/credential-provider-process": "3.209.0", + "@aws-sdk/credential-provider-sso": "3.211.0", + "@aws-sdk/credential-provider-web-identity": "3.208.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/shared-ini-file-loader": "3.209.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/fetch-http-handler": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.208.0.tgz", + "integrity": "sha512-GuwkwOeyLKCbSbnFlyHdlKd7u54cnQUI8NfVDAxpZvomY3PV476Tzg8XEyOYE67r5rR6XMqn6IK1PmFAACY+ew==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/querystring-builder": "3.208.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/util-base64": "3.208.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/hash-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.208.0.tgz", + "integrity": "sha512-X5u6nD9+wzaA6qhqbobxsIgiyDJMW8NgqjZgHoc5x1wz4unHUCEuSBZy1kbIZ6+EPZ9bQHQZ21gKgf1j5vhsvQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/invalid-dependency": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.208.0.tgz", + "integrity": "sha512-mUpbtijk14KntYy+w5FSvmsfj/Dqa8HylYeCKniKBKkQ1avjEz7CdizVoxyZrR3rldnLE3gItr0FEDRUhtfkAA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/is-array-buffer": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", + "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-content-length": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.208.0.tgz", + "integrity": "sha512-8bLh7lHtmKQQ2fk0fGiP7pcVJglB/dz7Q9OooxFYK+eybqxfIDDUgKphA8AFT5W34tJRh5nhT3QTJ6zrOTQM3w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-endpoint": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.208.0.tgz", + "integrity": "sha512-pVa/cyB6ronfTVAoKUUTFbAPslDPU43DWOKXY/bACC3ys1lFo1CWjz4dLSQARxEEW3iZ1yZTy0zoHXnNrw5CFQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-serde": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/signature-v4": "3.208.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/url-parser": "3.208.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.208.0.tgz", + "integrity": "sha512-3oyXK81TLWOZ2T/9Ltpbj/Z7R4QWSf+FCQRpY48ND2im/ALkgFRk/tmDTOshv+TQzW1q2lOSEeq4vK6yOCar7g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.208.0.tgz", + "integrity": "sha512-mwSpuWruB8RrgUAAW7w/lvadnMDesl/bZ2IELBgJri+2rIqLGbAtygJBiG0Y3e8/IeOHuKuGkN1rFYZ4SKr7/A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.208.0.tgz", + "integrity": "sha512-Dgpf5NEOYXvkQuGcbxvDovTh4HwO4ULJReGko67NJjgdZZyFS1fNykVPncxenRpsN9SJBigswYs3lwPVpqijzA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.209.0.tgz", + "integrity": "sha512-PGHbpGw74HxmtqsMEH+xn2oC5/BPdHVyapB66x83n+sywt1ejTiarbQhNs70YzcSsTrJfbhbrFP1V9AzRmMaQA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/service-error-classification": "3.208.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/util-middleware": "3.208.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.208.0.tgz", + "integrity": "sha512-lFVodZHYLF7puXgNZ1m5ycKbyCPp79nqI+pkRXl066ZtZWzCW8+JKCaLjF3jfXlnvg6foPDJdxUvt0VU5EddGg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-signing": "3.208.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/signature-v4": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-serde": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.208.0.tgz", + "integrity": "sha512-3h2yP6qyf/IhfdvyFeNX7w4BF37vOZvfUDBq+wb1QEc7DCAskoUKWtCCKJ9HDq3IJQp8hzqY82eawUir6flqlQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.208.0.tgz", + "integrity": "sha512-cMSWhg8xOrxZw04EYKEQQQ7RT+03rigS4KS3Uy6x/M+jFyoM+sRiY/7376sJCwlpvKH2xJIVpwPbKk/uz4j4DA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/signature-v4": "3.208.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/util-middleware": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-stack": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.208.0.tgz", + "integrity": "sha512-bvFPUa+RTB7PSRCUsO6bRlEtiEadrDES+dpNmInMNQ9kmbd4OhNOCb664hhtiglIIXX5cd8mSPEo+w/RV0kEEQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.208.0.tgz", + "integrity": "sha512-6RNf+TOZpiCy7xUcDSh8ji/x8ht1oAM+qIhm6hsEPLdI1cTvbPZrwowO9Y6L0J68V9OkEgLYiq77KKKYT7QQSw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-config-provider": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.209.0.tgz", + "integrity": "sha512-jNrUn8qTN9BIxHCcLTv2s2h8Riaz4kjwDhubVQNyI0WGZ+PYKATnZjA+Guzbnq2WMzZmwrMIE5GoOiVsPD8xYQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/shared-ini-file-loader": "3.209.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.208.0.tgz", + "integrity": "sha512-2t0b9Id7WekluqxQdPugAZhe/wdzW0L53rfMEfDS3R0INNSq1sEfddIfCzJrmfWDCrCOGIDNyxo/w7Ki3NclzQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/abort-controller": "3.208.0", + "@aws-sdk/protocol-http": "3.208.0", + "@aws-sdk/querystring-builder": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/property-provider": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.208.0.tgz", + "integrity": "sha512-aUhfuwXjZ5TGzLhBstuAMmbnxHXeSGhzoIS8yy465ifgc95p6cHFZf+ZibgwgCMaGrKlTDCia2zwwpKQHN+4cw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.208.0.tgz", + "integrity": "sha512-Sr9dmaW0Z9X9s16NHZn94efLRpaqLyLqABFPgjqE8cYP6eLX/VrmZGNR62GFVxCiyEEpVxy4Ddk1YkbRwnuonA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/querystring-builder": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.208.0.tgz", + "integrity": "sha512-1Rpauh5hWlK++KjsHQjHcSN7yE05hj1FVb0HaeLrFIJB5rQYWXK7DpOUhmv5SOmU+q6cIM2kNCrSxH31+WglMw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/querystring-parser": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.208.0.tgz", + "integrity": "sha512-dVVLdP3il9bJX74/BNBjFn59XrEVBUZ4xSKYH6t7dgSz9uSu8DcT4pPzwaq+/94dVewCW3zq2jVA1iw1rK7JVQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/service-error-classification": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.208.0.tgz", + "integrity": "sha512-ZZWV3AOTd8UDcfXCNoQ8v4sHaTgFxGaXWO0NHHgqFbVYr1d+8EXQiOy/v8JsY1jrfoXBWXptTOcioCTeM0xBpw==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.209.0.tgz", + "integrity": "sha512-hji3B/q3zFuElaUQM/ZZUFbCFBsaVjpWATgiDTnSYP+MShWvvwm/WigeC2aCNos1bs/8HVizOy9cmvK63vLZbw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.208.0.tgz", + "integrity": "sha512-+c5A8RsN4Lk3TXFiQ3ZsW7sJ4zYPPmYQ55ITSfjock5hzgM1vW43Mgvjjq6foW5L7SNfdhLH+NrhpgFwSF/GeA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.201.0", + "@aws-sdk/types": "3.208.0", + "@aws-sdk/util-hex-encoding": "3.201.0", + "@aws-sdk/util-middleware": "3.208.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/smithy-client": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.209.0.tgz", + "integrity": "sha512-+d9lPAFOu3hZdLfyzMurRU6xZ+eqwKbF6HY7mDL4hGafRb/uw28HBncSwyUk5s7MIND9+RnvY4F/MwBq9wznXg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-stack": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.211.0.tgz", + "integrity": "sha512-dxdUT+JKCl9krmBQde1HeV6rwYP+ZTBkfx5vIa3PdfDI7XljRBf1XdE0mS18eSURfQA7v969Y5sJ6/rFyjT/QA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.211.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/shared-ini-file-loader": "3.209.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.208.0.tgz", + "integrity": "sha512-5AuOPtY1Hdf4xoEo+voRijl3OnFm8IB+oITXl+SN2iASJv+XPnRNw/QVbIxfGeWgWhmK31F+XdjTYsjT2rx8Qw==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/url-parser": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.208.0.tgz", + "integrity": "sha512-zhU231xkZbUh68Z/TGNRW30MGTZQVigGuMiJU6eOtL2aOulnKqI1Yjs/QejrTtPWsqSihWvxOUZ2cVRPyeOvrA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/querystring-parser": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-base64": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz", + "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-body-length-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", + "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-body-length-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", + "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-buffer-from": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz", + "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-config-provider": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", + "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.209.0.tgz", + "integrity": "sha512-c+AlHqsgeDr9+87fS1wfnyVzEH3myt56GvNt0puzIv0QQqfpobMnfN8/Fy0cqMpf1eQNYY4a6lFlkComsXi5dw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/types": "3.208.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.209.0.tgz", + "integrity": "sha512-RljPVLog6EX052DQjx4XQ95n7ZiAbmn7Vd6YSn1x93U797umaC5CnrT7a/WusTQACtxBDFWcosRgO1ZGDXuRKQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/config-resolver": "3.209.0", + "@aws-sdk/credential-provider-imds": "3.209.0", + "@aws-sdk/node-config-provider": "3.209.0", + "@aws-sdk/property-provider": "3.208.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.211.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.211.0.tgz", + "integrity": "sha512-FY0h897WFltaUBF5aedLCBP2OlxN0aIqrInAa7aYGz3HsUTl97liHTii34bZrMJQHxmfcKBXAsjV1jJGc2orLw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-hex-encoding": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", + "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz", + "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-middleware": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.208.0.tgz", + "integrity": "sha512-oXilrYpXwaPyMw1uNjL1wmR54zeFzIWx2ve1MSMheIYr26deFP3RpMfKkGXwiOvXzZ9pzTcA8shNLhg1frO/zg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-uri-escape": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", + "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.208.0.tgz", + "integrity": "sha512-Z5n9Kg2pBstzzQgRymQRgb4pM0bNPLGQejB3ZmCAphaxvuTBfu2E6KO55h5WwkFHUuh0i5u2wn1BI9R66S8CgQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.208.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.209.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.209.0.tgz", + "integrity": "sha512-lWfvnSX8rckMGaalrKZmBlPW7F0QOviG7XbLffwToN4HnYUyXcZXIE4EzOQzuOvDsOUlos/xLkUj6krdIAApcA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.209.0", + "@aws-sdk/types": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", + "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-utf8-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz", + "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@bot-whatsapp/bot": { + "resolved": "packages/bot", + "link": true + }, + "node_modules/@bot-whatsapp/cli": { + "resolved": "packages/cli", + "link": true + }, + "node_modules/@bot-whatsapp/database": { + "resolved": "packages/database", + "link": true + }, + "node_modules/@bot-whatsapp/provider": { + "resolved": "packages/provider", + "link": true + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", + "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.26.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-5.0.1.tgz", + "integrity": "sha512-QCwhZZLvM8nRcTHyR1vOgyTMiAnjiNj1ebD/BMRvbO1oc/z14lZH6PfxXeegee2B6mky/u9fia4fxRM4TqrUaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", + "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.0", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", + "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.26.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/fs-extra": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz", + "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT", + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz", + "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", + "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "dev": true, + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", + "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "license": "MIT", + "optional": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "license": "MIT" + }, + "node_modules/is-builtin-module": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-cleanup": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/js-cleanup/-/js-cleanup-1.2.0.tgz", + "integrity": "sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.25.7", + "perf-regexes": "^1.0.1", + "skip-regex": "^1.0.2" + }, + "engines": { + "node": "^10.14.2 || >=12.0.0" + } + }, + "node_modules/js-cleanup/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT", + "optional": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.11.0.tgz", + "integrity": "sha512-9l9n4Nk2BYZzljW3vHah3Z0rfS5npKw6ktnkmFgTcnzaXH1DRm3pDl6VMHu84EVb1lzmSaJC4OzWZqTkB5i2wg==", + "license": "Apache-2.0", + "dependencies": { + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "@aws-sdk/credential-providers": "^3.186.0", + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz", + "integrity": "sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/perf-regexes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz", + "integrity": "sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.14" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.3.0.tgz", + "integrity": "sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-cleanup": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz", + "integrity": "sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-cleanup": "^1.2.0", + "rollup-pluginutils": "^2.8.2" + }, + "engines": { + "node": "^10.14.2 || >=12.0.0" + }, + "peerDependencies": { + "rollup": ">=2.0" + } + }, + "node_modules/rollup-plugin-copy": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz", + "integrity": "sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "license": "MIT", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/skip-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz", + "integrity": "sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.2" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true, + "license": "MIT" + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT", + "optional": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD", + "optional": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/bot": { + "name": "@bot-whatsapp/bot", + "version": "0.0.1", + "license": "ISC", + "devDependencies": { + "@bot-whatsapp/cli": "*", + "@bot-whatsapp/database": "*", + "@bot-whatsapp/provider": "*", + "kleur": "^4.1.5" + } + }, + "packages/cli": { + "name": "@bot-whatsapp/cli", + "version": "0.0.1", + "bin": { + "bot": "bin/cli.js" + }, + "devDependencies": { + "cross-env": "^7.0.3", + "cross-spawn": "^7.0.3", + "detect-package-manager": "^2.0.1", + "kleur": "^4.1.5" + } + }, + "packages/database": { + "name": "@bot-whatsapp/database", + "version": "0.0.1", + "license": "ISC", + "dependencies": { + "mongodb": "^4.11.0" + }, + "devDependencies": {} + }, + "packages/provider": { + "name": "@bot-whatsapp/provider", + "version": "0.0.1", + "license": "ISC", + "dependencies": { + "@bot-whatsapp/bot": "*", + "qr-image": "^3.2.0" + } + } + } +} diff --git a/package.json b/package.json index 7b715c9..69e75e8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "cli:rollup": "rollup --config ./packages/cli/rollup-cli.config.js ", "bot:rollup": "rollup --config ./packages/bot/rollup-bot.config.js", "provider:rollup": "rollup --config ./packages/provider/rollup-provider.config.js ", - "database:rollup": "rollup ./packages/database/index.js --config ./packages/database/rollup-cli.config.js", + "database:rollup": "rollup --config ./packages/database/rollup-database.config.js", "format:check": "prettier --check ./packages", "format:write": "prettier --write ./packages", "lint:check": "eslint ./packages", diff --git a/packages/bot/package.json b/packages/bot/package.json index 8a82678..f6affee 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -23,7 +23,11 @@ "license": "ISC", "devDependencies": { "@bot-whatsapp/cli": "*", + "@bot-whatsapp/database": "*", "@bot-whatsapp/provider": "*", "kleur": "^4.1.5" + }, + "dependencies": { + "dotenv": "^16.0.3" } } diff --git a/packages/database/index.js b/packages/database/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/database/adapters/mock.js b/packages/database/mock/index.js similarity index 100% rename from packages/database/adapters/mock.js rename to packages/database/mock/index.js diff --git a/packages/database/mongo/index.js b/packages/database/mongo/index.js new file mode 100644 index 0000000..cc97cac --- /dev/null +++ b/packages/database/mongo/index.js @@ -0,0 +1,37 @@ +require('dotenv').config() +const { MongoClient } = require('mongodb') + +const DB_URI = process.env.DB_URI || 'mongodb://0.0.0.0:27017' +const DB_NAME = process.env.DB_NAME || 'db_bot' + +class MongoAdapter { + db + listHistory = [] + + constructor() { + console.log({ DB_URI }) + this.init().then() + } + + init = async () => { + try { + const client = new MongoClient(DB_URI, {}) + await client.connect() + console.log('Connected successfully to server') + const db = client.db(DB_NAME) + this.db = db + return true + } catch (e) { + console.log('Error', e) + return + } + } + + save = async (ctx) => { + await this.db.collection('history').insert(ctx) + console.log('Guardando DB...', ctx) + this.listHistory.push(ctx) + } +} + +module.exports = MongoAdapter diff --git a/packages/database/package.json b/packages/database/package.json index c297afa..7c199db 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -2,10 +2,17 @@ "name": "@bot-whatsapp/database", "version": "0.0.1", "description": "Esto es el conector a mysql, pg, mongo", - "main": "./lib/bundle.database.cjs", + "main": "./lib/mock/index.cjs", "private": true, "keywords": [], "author": "", "license": "ISC", - "devDependencies": {} + "devDependencies": {}, + "dependencies": { + "dotenv": "^16.0.3", + "mongodb": "^4.11.0" + }, + "files": [ + "./lib/*" + ] } diff --git a/packages/database/rollup-cli.config.js b/packages/database/rollup-cli.config.js deleted file mode 100644 index 35aab25..0000000 --- a/packages/database/rollup-cli.config.js +++ /dev/null @@ -1,14 +0,0 @@ -const commonjs = require('@rollup/plugin-commonjs') -const { nodeResolve } = require('@rollup/plugin-node-resolve') -const { join } = require('path') - -const PATH = join(__dirname, 'lib', 'bundle.database.cjs') - -module.exports = { - input: join(__dirname, 'index.js'), - output: { - file: PATH, - format: 'cjs', - }, - plugins: [commonjs(), nodeResolve()], -} diff --git a/packages/database/rollup-database.config.js b/packages/database/rollup-database.config.js new file mode 100644 index 0000000..f99232d --- /dev/null +++ b/packages/database/rollup-database.config.js @@ -0,0 +1,21 @@ +const commonjs = require('@rollup/plugin-commonjs') +const { join } = require('path') + +module.exports = [ + { + input: join(__dirname, 'mock', 'index.js'), + output: { + file: join(__dirname, 'lib', 'mock', 'index.cjs'), + format: 'cjs', + }, + plugins: [commonjs()], + }, + { + input: join(__dirname, 'mongo', 'index.js'), + output: { + file: join(__dirname, 'lib', 'mongo', 'index.cjs'), + format: 'cjs', + }, + plugins: [commonjs()], + }, +] diff --git a/yarn.lock b/yarn.lock index aced5aa..80497b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,14 +2,744 @@ # yarn lockfile v1 +"@aws-crypto/ie11-detection@^2.0.0": + version "2.0.2" + resolved "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz" + integrity sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz" + integrity sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A== + dependencies: + "@aws-crypto/ie11-detection" "^2.0.0" + "@aws-crypto/sha256-js" "^2.0.0" + "@aws-crypto/supports-web-crypto" "^2.0.0" + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" + integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@^2.0.0": + version "2.0.2" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz" + integrity sha512-iXLdKH19qPmIC73fVCrHWCSYjN/sxaAvZ3jNNyw6FclmHyjLKg0f69WlC9KTnyElxCR5MO9SKaG00VwlJwyAkQ== + dependencies: + "@aws-crypto/util" "^2.0.2" + "@aws-sdk/types" "^3.110.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^2.0.0": + version "2.0.2" + resolved "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz" + integrity sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz" + integrity sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA== + dependencies: + "@aws-sdk/types" "^3.110.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.208.0.tgz" + integrity sha512-mQkDR+8VLCafg9KI4TgftftBOL170ricyb+HgV8n5jLDrEG+TfOfud8e6us2lIFESEuMpohC+/8yIcf6JjKkMg== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-cognito-identity@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.211.0.tgz" + integrity sha512-KhXo1v78szdvLyF0SHRXR2I7SNkFeC0iay9amspAsF2jMz3CPu2EqWu4ymqO7lSSaAGEkKaUE9ZvD7uNn5oo7A== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/client-sts" "3.211.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/credential-provider-node" "3.211.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-signing" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.211.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso-oidc@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.211.0.tgz" + integrity sha512-oJ+5ROykVsXpBFpWUfSUYHz/RcTjsZPri6CIY+wQmEFDAOxTsgxd7l8VkqX1r/U/QiK/xDXuK+Z7MurywXS+rQ== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.211.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.211.0.tgz" + integrity sha512-Wuo3ZYPy9L+OixlZ7/wM1BbPBdC22xO/a8z/J1sgQZiRDl80Ax+jf1u17D91xdZJGH0hTU5AlvEY7mHP0y/hAw== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.211.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-sts@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.211.0.tgz" + integrity sha512-39/PMIKLEaRUztx3m4I0x9SCnqTStaQuqIabAK/wk0uy+O2p32sv7eacRrGjZWHngqdsK7S1s/LSFErYzzIvkw== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/credential-provider-node" "3.211.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-sdk-sts" "3.208.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-signing" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.211.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + fast-xml-parser "4.0.11" + tslib "^2.3.1" + +"@aws-sdk/config-resolver@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.209.0.tgz" + integrity sha512-wLXI1Jg9xx9wE8vdIfOgSKnoBWbn9j3IvW4+7PnM/nf5xC30/Jp4j+JndEG/BKyDQF7HJQTIeRpSkwKaqJhCRA== + dependencies: + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-config-provider" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-cognito-identity@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.211.0.tgz" + integrity sha512-YbTioDEGvGFYaHeeQrQUQLHnqvWYNdDn5acEAD76DMnoV+B04OVKWYphFd6KBZClIkXnH0T8stPnOE7La6rWjg== + dependencies: + "@aws-sdk/client-cognito-identity" "3.211.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-env@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.208.0.tgz" + integrity sha512-FB+KUSpZc03wVTXxGnMmgtaP0sJOv0D7oyogHb7wcf5b7RjjwqoaeUcJHTdKRZaW6e1foLk3/L9uebxiWefDbQ== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-imds@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.209.0.tgz" + integrity sha512-EjA1nWduIHjALjNF6O2lpKVOoTIlfGHgvqCxjFf7XNqBTTKWCxEflcmUgqXwo9A7TU0mTTyr7nLGMAsNE2CR3w== + dependencies: + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-ini@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.211.0.tgz" + integrity sha512-kFekBDGX3tMsbEBjpCHt2dp5hx7xBN0d7v+fNXky4fB61bNUxcLNpXkTgDIqRyMzEje3Jov9Be9Qgqb8ud0Fiw== + dependencies: + "@aws-sdk/credential-provider-env" "3.208.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/credential-provider-sso" "3.211.0" + "@aws-sdk/credential-provider-web-identity" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-node@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.211.0.tgz" + integrity sha512-RWDitzHmZOfrfTZCnL8nOLQgYgawAAw8IF5pqeNjcN9TZ/pR64B9pusTYD7a+uVDB8kb9vMU767g89ts2pqmfQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.208.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/credential-provider-ini" "3.211.0" + "@aws-sdk/credential-provider-process" "3.209.0" + "@aws-sdk/credential-provider-sso" "3.211.0" + "@aws-sdk/credential-provider-web-identity" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-process@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.209.0.tgz" + integrity sha512-G0urC5p1kgUfgpK8lncdisSewa8onnoQAVdf2Uh51hOqc7UufGce+ouvLH8J2iMkMaL1MSyu8fqwfZNyDtH37g== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-sso@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.211.0.tgz" + integrity sha512-S8ciHRypUCi0Uz0D80yVGkWmvpCBCvkEaj+IO0LdYX05GDnH/B44DA8UQ0pfAJqLy5BeSO5snKVRKSPzxNtUGw== + dependencies: + "@aws-sdk/client-sso" "3.211.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/token-providers" "3.211.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-web-identity@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.208.0.tgz" + integrity sha512-7wtrdEr8uvDr5t0stimrXGsW4G+TQyluZ9OucCCY0HXgNihmnk1BIu+COuOSxRtFXHwCh4rIPaVE1ABG2Mq24g== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-providers@^3.186.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.211.0.tgz" + integrity sha512-duo3zSI8usGxA23skzQqVDaKB7k3McJYbFG2nzPTYD+RI4w5Sbs66SUWvTmtSrdZJWmzDsDNKW9fOMtnNARVVw== + dependencies: + "@aws-sdk/client-cognito-identity" "3.211.0" + "@aws-sdk/client-sso" "3.211.0" + "@aws-sdk/client-sts" "3.211.0" + "@aws-sdk/credential-provider-cognito-identity" "3.211.0" + "@aws-sdk/credential-provider-env" "3.208.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/credential-provider-ini" "3.211.0" + "@aws-sdk/credential-provider-node" "3.211.0" + "@aws-sdk/credential-provider-process" "3.209.0" + "@aws-sdk/credential-provider-sso" "3.211.0" + "@aws-sdk/credential-provider-web-identity" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/fetch-http-handler@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.208.0.tgz" + integrity sha512-GuwkwOeyLKCbSbnFlyHdlKd7u54cnQUI8NfVDAxpZvomY3PV476Tzg8XEyOYE67r5rR6XMqn6IK1PmFAACY+ew== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/querystring-builder" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/hash-node@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.208.0.tgz" + integrity sha512-X5u6nD9+wzaA6qhqbobxsIgiyDJMW8NgqjZgHoc5x1wz4unHUCEuSBZy1kbIZ6+EPZ9bQHQZ21gKgf1j5vhsvQ== + dependencies: + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/invalid-dependency@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.208.0.tgz" + integrity sha512-mUpbtijk14KntYy+w5FSvmsfj/Dqa8HylYeCKniKBKkQ1avjEz7CdizVoxyZrR3rldnLE3gItr0FEDRUhtfkAA== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/is-array-buffer@3.201.0": + version "3.201.0" + resolved "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz" + integrity sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/middleware-content-length@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.208.0.tgz" + integrity sha512-8bLh7lHtmKQQ2fk0fGiP7pcVJglB/dz7Q9OooxFYK+eybqxfIDDUgKphA8AFT5W34tJRh5nhT3QTJ6zrOTQM3w== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-endpoint@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.208.0.tgz" + integrity sha512-pVa/cyB6ronfTVAoKUUTFbAPslDPU43DWOKXY/bACC3ys1lFo1CWjz4dLSQARxEEW3iZ1yZTy0zoHXnNrw5CFQ== + dependencies: + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-config-provider" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-host-header@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.208.0.tgz" + integrity sha512-3oyXK81TLWOZ2T/9Ltpbj/Z7R4QWSf+FCQRpY48ND2im/ALkgFRk/tmDTOshv+TQzW1q2lOSEeq4vK6yOCar7g== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-logger@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.208.0.tgz" + integrity sha512-mwSpuWruB8RrgUAAW7w/lvadnMDesl/bZ2IELBgJri+2rIqLGbAtygJBiG0Y3e8/IeOHuKuGkN1rFYZ4SKr7/A== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-recursion-detection@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.208.0.tgz" + integrity sha512-Dgpf5NEOYXvkQuGcbxvDovTh4HwO4ULJReGko67NJjgdZZyFS1fNykVPncxenRpsN9SJBigswYs3lwPVpqijzA== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-retry@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.209.0.tgz" + integrity sha512-PGHbpGw74HxmtqsMEH+xn2oC5/BPdHVyapB66x83n+sywt1ejTiarbQhNs70YzcSsTrJfbhbrFP1V9AzRmMaQA== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/service-error-classification" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-sts@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.208.0.tgz" + integrity sha512-lFVodZHYLF7puXgNZ1m5ycKbyCPp79nqI+pkRXl066ZtZWzCW8+JKCaLjF3jfXlnvg6foPDJdxUvt0VU5EddGg== + dependencies: + "@aws-sdk/middleware-signing" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-serde@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.208.0.tgz" + integrity sha512-3h2yP6qyf/IhfdvyFeNX7w4BF37vOZvfUDBq+wb1QEc7DCAskoUKWtCCKJ9HDq3IJQp8hzqY82eawUir6flqlQ== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-signing@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.208.0.tgz" + integrity sha512-cMSWhg8xOrxZw04EYKEQQQ7RT+03rigS4KS3Uy6x/M+jFyoM+sRiY/7376sJCwlpvKH2xJIVpwPbKk/uz4j4DA== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-stack@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.208.0.tgz" + integrity sha512-bvFPUa+RTB7PSRCUsO6bRlEtiEadrDES+dpNmInMNQ9kmbd4OhNOCb664hhtiglIIXX5cd8mSPEo+w/RV0kEEQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/middleware-user-agent@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.208.0.tgz" + integrity sha512-6RNf+TOZpiCy7xUcDSh8ji/x8ht1oAM+qIhm6hsEPLdI1cTvbPZrwowO9Y6L0J68V9OkEgLYiq77KKKYT7QQSw== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/node-config-provider@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.209.0.tgz" + integrity sha512-jNrUn8qTN9BIxHCcLTv2s2h8Riaz4kjwDhubVQNyI0WGZ+PYKATnZjA+Guzbnq2WMzZmwrMIE5GoOiVsPD8xYQ== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/node-http-handler@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.208.0.tgz" + integrity sha512-2t0b9Id7WekluqxQdPugAZhe/wdzW0L53rfMEfDS3R0INNSq1sEfddIfCzJrmfWDCrCOGIDNyxo/w7Ki3NclzQ== + dependencies: + "@aws-sdk/abort-controller" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/querystring-builder" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/property-provider@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.208.0.tgz" + integrity sha512-aUhfuwXjZ5TGzLhBstuAMmbnxHXeSGhzoIS8yy465ifgc95p6cHFZf+ZibgwgCMaGrKlTDCia2zwwpKQHN+4cw== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/protocol-http@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.208.0.tgz" + integrity sha512-Sr9dmaW0Z9X9s16NHZn94efLRpaqLyLqABFPgjqE8cYP6eLX/VrmZGNR62GFVxCiyEEpVxy4Ddk1YkbRwnuonA== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-builder@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.208.0.tgz" + integrity sha512-1Rpauh5hWlK++KjsHQjHcSN7yE05hj1FVb0HaeLrFIJB5rQYWXK7DpOUhmv5SOmU+q6cIM2kNCrSxH31+WglMw== + dependencies: + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-uri-escape" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-parser@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.208.0.tgz" + integrity sha512-dVVLdP3il9bJX74/BNBjFn59XrEVBUZ4xSKYH6t7dgSz9uSu8DcT4pPzwaq+/94dVewCW3zq2jVA1iw1rK7JVQ== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/service-error-classification@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.208.0.tgz" + integrity sha512-ZZWV3AOTd8UDcfXCNoQ8v4sHaTgFxGaXWO0NHHgqFbVYr1d+8EXQiOy/v8JsY1jrfoXBWXptTOcioCTeM0xBpw== + +"@aws-sdk/shared-ini-file-loader@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.209.0.tgz" + integrity sha512-hji3B/q3zFuElaUQM/ZZUFbCFBsaVjpWATgiDTnSYP+MShWvvwm/WigeC2aCNos1bs/8HVizOy9cmvK63vLZbw== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.208.0.tgz" + integrity sha512-+c5A8RsN4Lk3TXFiQ3ZsW7sJ4zYPPmYQ55ITSfjock5hzgM1vW43Mgvjjq6foW5L7SNfdhLH+NrhpgFwSF/GeA== + dependencies: + "@aws-sdk/is-array-buffer" "3.201.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-hex-encoding" "3.201.0" + "@aws-sdk/util-middleware" "3.208.0" + "@aws-sdk/util-uri-escape" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/smithy-client@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.209.0.tgz" + integrity sha512-+d9lPAFOu3hZdLfyzMurRU6xZ+eqwKbF6HY7mDL4hGafRb/uw28HBncSwyUk5s7MIND9+RnvY4F/MwBq9wznXg== + dependencies: + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/token-providers@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.211.0.tgz" + integrity sha512-dxdUT+JKCl9krmBQde1HeV6rwYP+ZTBkfx5vIa3PdfDI7XljRBf1XdE0mS18eSURfQA7v969Y5sJ6/rFyjT/QA== + dependencies: + "@aws-sdk/client-sso-oidc" "3.211.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/types@3.208.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.208.0.tgz" + integrity sha512-5AuOPtY1Hdf4xoEo+voRijl3OnFm8IB+oITXl+SN2iASJv+XPnRNw/QVbIxfGeWgWhmK31F+XdjTYsjT2rx8Qw== + +"@aws-sdk/url-parser@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.208.0.tgz" + integrity sha512-zhU231xkZbUh68Z/TGNRW30MGTZQVigGuMiJU6eOtL2aOulnKqI1Yjs/QejrTtPWsqSihWvxOUZ2cVRPyeOvrA== + dependencies: + "@aws-sdk/querystring-parser" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-base64@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz" + integrity sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg== + dependencies: + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-body-length-browser@3.188.0": + version "3.188.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz" + integrity sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-body-length-node@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz" + integrity sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-buffer-from@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz" + integrity sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw== + dependencies: + "@aws-sdk/is-array-buffer" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/util-config-provider@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz" + integrity sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-browser@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.209.0.tgz" + integrity sha512-c+AlHqsgeDr9+87fS1wfnyVzEH3myt56GvNt0puzIv0QQqfpobMnfN8/Fy0cqMpf1eQNYY4a6lFlkComsXi5dw== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-node@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.209.0.tgz" + integrity sha512-RljPVLog6EX052DQjx4XQ95n7ZiAbmn7Vd6YSn1x93U797umaC5CnrT7a/WusTQACtxBDFWcosRgO1ZGDXuRKQ== + dependencies: + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-endpoints@3.211.0": + version "3.211.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.211.0.tgz" + integrity sha512-FY0h897WFltaUBF5aedLCBP2OlxN0aIqrInAa7aYGz3HsUTl97liHTii34bZrMJQHxmfcKBXAsjV1jJGc2orLw== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-hex-encoding@3.201.0": + version "3.201.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz" + integrity sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz" + integrity sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-middleware@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.208.0.tgz" + integrity sha512-oXilrYpXwaPyMw1uNjL1wmR54zeFzIWx2ve1MSMheIYr26deFP3RpMfKkGXwiOvXzZ9pzTcA8shNLhg1frO/zg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-uri-escape@3.201.0": + version "3.201.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz" + integrity sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-browser@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.208.0.tgz" + integrity sha512-Z5n9Kg2pBstzzQgRymQRgb4pM0bNPLGQejB3ZmCAphaxvuTBfu2E6KO55h5WwkFHUuh0i5u2wn1BI9R66S8CgQ== + dependencies: + "@aws-sdk/types" "3.208.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-node@3.209.0": + version "3.209.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.209.0.tgz" + integrity sha512-lWfvnSX8rckMGaalrKZmBlPW7F0QOviG7XbLffwToN4HnYUyXcZXIE4EzOQzuOvDsOUlos/xLkUj6krdIAApcA== + dependencies: + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-utf8-browser@3.188.0", "@aws-sdk/util-utf8-browser@^3.0.0": + version "3.188.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz" + integrity sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8-node@3.208.0": + version "3.208.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz" + integrity sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ== + dependencies: + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@eslint/eslintrc@^1.3.3": version "1.3.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== dependencies: ajv "^6.12.4" @@ -24,7 +754,7 @@ "@humanwhocodes/config-array@^0.11.6": version "0.11.7" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz" integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" @@ -33,32 +763,32 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jridgewell/resolve-uri@3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@^0.3.12": version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: "@jridgewell/resolve-uri" "3.1.0" @@ -66,7 +796,7 @@ "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -74,12 +804,12 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -87,7 +817,7 @@ "@rollup/plugin-commonjs@^23.0.2": version "23.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz#3a3a5b7b1b1cb29037eb4992edcaae997d7ebd92" + resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz" integrity sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -99,14 +829,14 @@ "@rollup/plugin-json@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-5.0.1.tgz#d5cd67cc83ede42967447dfabbe1be45a091f5b7" + resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-5.0.1.tgz" integrity sha512-QCwhZZLvM8nRcTHyR1vOgyTMiAnjiNj1ebD/BMRvbO1oc/z14lZH6PfxXeegee2B6mky/u9fia4fxRM4TqrUaw== dependencies: "@rollup/pluginutils" "^5.0.1" "@rollup/plugin-node-resolve@^15.0.1": version "15.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz#72be449b8e06f6367168d5b3cd5e2802e0248971" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz" integrity sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -118,7 +848,7 @@ "@rollup/plugin-replace@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz#49a57af3e6df111a9e75dea3f3572741f4c5c83e" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz" integrity sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -126,7 +856,7 @@ "@rollup/pluginutils@^5.0.1": version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz" integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== dependencies: "@types/estree" "^1.0.0" @@ -135,19 +865,19 @@ "@types/estree@*", "@types/estree@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/fs-extra@^8.0.1": version "8.1.2" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.2.tgz#7125cc2e4bdd9bd2fc83005ffdb1d0ba00cca61f" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz" integrity sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg== dependencies: "@types/node" "*" "@types/glob@^7.1.1": version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" @@ -155,37 +885,50 @@ "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/minimatch@*": version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node@*": version "18.11.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" + resolved "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz" integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== "@types/resolve@1.20.2": version "1.20.2" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz" integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== +"@types/webidl-conversions@*": + version "7.0.0" + resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + integrity sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog== + +"@types/whatwg-url@^8.2.1": + version "8.2.2" + resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz" + integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA== + dependencies: + "@types/node" "*" + "@types/webidl-conversions" "*" + acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn@^8.8.0: version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -195,34 +938,44 @@ ajv@^6.10.0, ajv@^6.12.4: ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -230,26 +983,41 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" +bson@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz" + integrity sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA== + dependencies: + buffer "^5.6.0" + +buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-modules@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== c8@^7.12.0: version "7.12.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.12.0.tgz#402db1c1af4af5249153535d1c84ad70c5c96b14" + resolved "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz" integrity sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -267,12 +1035,12 @@ c8@^7.12.0: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== chalk@^4.0.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -280,7 +1048,7 @@ chalk@^4.0.0: cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -289,46 +1057,46 @@ cliui@^7.0.2: color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^1.1.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== convert-source-map@^1.6.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cross-env@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -337,75 +1105,85 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: debug@^4.1.1, debug@^4.3.2: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + dequal@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== detect-package-manager@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" + resolved "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz" integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== dependencies: execa "^5.1.1" diff@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-config-prettier@^8.5.0: version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== eslint-scope@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" @@ -413,24 +1191,24 @@ eslint-scope@^7.1.1: eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@^8.26.0: version "8.27.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.27.0.tgz#d547e2f7239994ad1faa4bb5d84e5d809db7cf64" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz" integrity sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ== dependencies: "@eslint/eslintrc" "^1.3.3" @@ -475,7 +1253,7 @@ eslint@^8.26.0: espree@^9.4.0: version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + resolved "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: acorn "^8.8.0" @@ -484,41 +1262,41 @@ espree@^9.4.0: esquery@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== execa@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -533,12 +1311,12 @@ execa@^5.1.1: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.0.3: version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -549,38 +1327,45 @@ fast-glob@^3.0.3: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-xml-parser@4.0.11: + version "4.0.11" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz" + integrity sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA== + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -588,7 +1373,7 @@ find-up@^5.0.0: flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -596,12 +1381,12 @@ flat-cache@^3.0.4: flatted@^3.1.0: version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== foreground-child@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: cross-spawn "^7.0.0" @@ -609,7 +1394,7 @@ foreground-child@^2.0.0: fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" @@ -618,7 +1403,7 @@ fs-extra@^8.1.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: @@ -628,36 +1413,36 @@ fsevents@~2.3.2: function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== glob-parent@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob@^7.1.3, glob@^7.1.4: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -669,7 +1454,7 @@ glob@^7.1.3, glob@^7.1.4: glob@^8.0.3: version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" @@ -680,14 +1465,14 @@ glob@^8.0.3: globals@^13.15.0: version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== dependencies: type-fest "^0.20.2" globby@10.0.1: version "10.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" + resolved "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz" integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== dependencies: "@types/glob" "^7.1.1" @@ -701,44 +1486,49 @@ globby@10.0.1: graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== grapheme-splitter@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.1.1, ignore@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -746,12 +1536,12 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -759,85 +1549,90 @@ inflight@^1.0.4: inherits@2: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + is-builtin-module@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" + resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz" integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== dependencies: builtin-modules "^3.3.0" is-core-module@^2.9.0: version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz" integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== is-reference@1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: "@types/estree" "*" is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -846,7 +1641,7 @@ istanbul-lib-report@^3.0.0: istanbul-reports@^3.1.4: version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" @@ -854,7 +1649,7 @@ istanbul-reports@^3.1.4: js-cleanup@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/js-cleanup/-/js-cleanup-1.2.0.tgz#8dbc65954b1d38b255f1e8cf02cd17b3f7a053f9" + resolved "https://registry.npmjs.org/js-cleanup/-/js-cleanup-1.2.0.tgz" integrity sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ== dependencies: magic-string "^0.25.7" @@ -863,46 +1658,46 @@ js-cleanup@^1.2.0: js-sdsl@^4.1.4: version "4.1.5" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz" integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== kleur@^4.0.3, kleur@^4.1.5: version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -910,50 +1705,55 @@ levn@^0.4.1: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" magic-string@^0.26.4: version "0.26.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz" integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== dependencies: sourcemap-codec "^1.4.8" make-dir@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -961,62 +1761,83 @@ micromatch@^4.0.4: mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: brace-expansion "^2.0.1" +mongodb-connection-string-url@^2.5.4: + version "2.5.4" + resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz" + integrity sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w== + dependencies: + "@types/whatwg-url" "^8.2.1" + whatwg-url "^11.0.0" + +mongodb@^4.11.0: + version "4.11.0" + resolved "https://registry.npmjs.org/mongodb/-/mongodb-4.11.0.tgz" + integrity sha512-9l9n4Nk2BYZzljW3vHah3Z0rfS5npKw6ktnkmFgTcnzaXH1DRm3pDl6VMHu84EVb1lzmSaJC4OzWZqTkB5i2wg== + dependencies: + bson "^4.7.0" + denque "^2.1.0" + mongodb-connection-string-url "^2.5.4" + socks "^2.7.1" + optionalDependencies: + "@aws-sdk/credential-providers" "^3.186.0" + saslprep "^1.0.3" + mri@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" optionator@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -1028,111 +1849,111 @@ optionator@^0.9.1: p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== perf-regexes@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/perf-regexes/-/perf-regexes-1.0.1.tgz#6da1d62f5a94bf9353a0451bccacf69068b75d0b" + resolved "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz" integrity sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng== picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier@^2.7.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== prompts@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qr-image@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/qr-image/-/qr-image-3.2.0.tgz#9fa8295beae50c4a149cf9f909a1db464a8672e8" + resolved "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz" integrity sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== regexpp@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.22.1: version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: is-core-module "^2.9.0" @@ -1141,19 +1962,19 @@ resolve@^1.22.1: reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rollup-plugin-cleanup@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c" + resolved "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz" integrity sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ== dependencies: js-cleanup "^1.2.0" @@ -1161,7 +1982,7 @@ rollup-plugin-cleanup@^3.2.1: rollup-plugin-copy@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz#f1228a3ffb66ffad8606e2f3fb7ff23141ed3286" + resolved "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz" integrity sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ== dependencies: "@types/fs-extra" "^8.0.1" @@ -1172,77 +1993,104 @@ rollup-plugin-copy@^3.4.0: rollup-pluginutils@^2.8.2: version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" rollup@^3.2.3: version "3.3.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.3.0.tgz#ae8dc84808a9c75d775d8b2ed8db1adada31a581" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.3.0.tgz" integrity sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA== optionalDependencies: fsevents "~2.3.2" run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" sade@^1.7.3: version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== dependencies: mri "^1.1.0" +saslprep@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz" + integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== + dependencies: + sparse-bitfield "^3.0.3" + semver@^6.0.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== skip-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/skip-regex/-/skip-regex-1.0.2.tgz#ac655d77e7c771ac2b9f37585fea37bff56ad65b" + resolved "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz" integrity sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -1251,36 +2099,41 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -1289,43 +2142,65 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.3.1: + version "2.4.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + uvu@^0.5.6: version "0.5.6" - resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz" integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== dependencies: dequal "^2.0.0" @@ -1335,28 +2210,41 @@ uvu@^0.5.6: v8-to-istanbul@^9.0.0: version "9.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" word-wrap@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -1365,22 +2253,22 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -1393,5 +2281,5 @@ yargs@^16.2.0: yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 76968ded02f7246a08b8713a53090a8d746a920d Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 16 Nov 2022 23:16:54 +0100 Subject: [PATCH 063/459] UUID memory without relation UUID DB --- packages/bot/core/core.class.js | 7 ++++--- packages/bot/io/methods/index.js | 3 ++- packages/bot/io/methods/validateCtx.js | 18 ++++++++++++++++++ packages/database/mongo/index.js | 13 +++++++++++-- packages/provider/web-whatsapp/index.js | 5 ++--- packages/provider/web-whatsapp/utils.js | 4 ++-- 6 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 packages/bot/io/methods/validateCtx.js diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 011bbf1..cb22dca 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -1,3 +1,4 @@ +const { validateCtx } = require('../io/methods') const { printer } = require('../utils/interactive') /** @@ -46,9 +47,9 @@ class CoreClass { * @private * @param {*} ctxMessage */ - handleMsg = ({ body, from }) => { + handleMsg = async ({ body, from }) => { let msgToSend = [] - const prevMsg = [...this.databaseClass.listHistory].pop() + const prevMsg = await this.databaseClass.getPrevByNumber(from) if (prevMsg?.ref && prevMsg?.options?.capture) { msgToSend = this.flowClass.find(prevMsg.ref, true) || [] @@ -62,7 +63,7 @@ class CoreClass { const { answer } = ctxMessage return Promise.all([ this.providerClass.sendMessage(numberOrId, answer), - this.databaseClass.save(ctxMessage), + this.databaseClass.save({ ...ctxMessage, from: numberOrId }), ]) } diff --git a/packages/bot/io/methods/index.js b/packages/bot/io/methods/index.js index 8d53bf1..1fd497f 100644 --- a/packages/bot/io/methods/index.js +++ b/packages/bot/io/methods/index.js @@ -1,5 +1,6 @@ const { addAnswer } = require('./addAnswer') const { addKeyword } = require('./addKeyword') +const { validateCtx } = require('./validateCtx') const { toJson } = require('./toJson') -module.exports = { addAnswer, addKeyword, toJson } +module.exports = { addAnswer, addKeyword, validateCtx, toJson } diff --git a/packages/bot/io/methods/validateCtx.js b/packages/bot/io/methods/validateCtx.js new file mode 100644 index 0000000..5bc4670 --- /dev/null +++ b/packages/bot/io/methods/validateCtx.js @@ -0,0 +1,18 @@ +const { generateRef } = require('../../utils/hash') +/** + * + * @param answer string + * @param options {media:string, buttons:[], capture:true default false} + * @returns + */ +const validateCtx = ({ body, from }) => { + return { + ref: generateRef(), + keyword: null, + answer: body, + options: {}, + from, + } +} + +module.exports = { validateCtx } diff --git a/packages/database/mongo/index.js b/packages/database/mongo/index.js index cc97cac..21b7cf1 100644 --- a/packages/database/mongo/index.js +++ b/packages/database/mongo/index.js @@ -9,7 +9,6 @@ class MongoAdapter { listHistory = [] constructor() { - console.log({ DB_URI }) this.init().then() } @@ -17,7 +16,7 @@ class MongoAdapter { try { const client = new MongoClient(DB_URI, {}) await client.connect() - console.log('Connected successfully to server') + console.log('🆗 Conexión Correcta DB') const db = client.db(DB_NAME) this.db = db return true @@ -27,6 +26,16 @@ class MongoAdapter { } } + getPrevByNumber = async (from) => { + const result = await this.db + .collection('history') + .find({ from }) + .sort({ _id: -1 }) + .limit(1) + .toArray() + return result[0] + } + save = async (ctx) => { await this.db.collection('history').insert(ctx) console.log('Guardando DB...', ctx) diff --git a/packages/provider/web-whatsapp/index.js b/packages/provider/web-whatsapp/index.js index 1e3f4a3..293311e 100644 --- a/packages/provider/web-whatsapp/index.js +++ b/packages/provider/web-whatsapp/index.js @@ -2,13 +2,12 @@ const { Client, LocalAuth } = require('whatsapp-web.js') const { ProviderClass } = require('@bot-whatsapp/bot') const { Console } = require('console') const { createWriteStream } = require('fs') +const { cleanNumber, generateImage, isValidNumber } = require('./utils') const logger = new Console({ stdout: createWriteStream('./log'), }) -const { cleanNumber, generateImage, isValidNumber } = require('./utils') - class WebWhatsappProvider extends ProviderClass { vendor constructor() { @@ -75,7 +74,7 @@ class WebWhatsappProvider extends ProviderClass { if (!isValidNumber(payload.from)) { return } - + payload.from = cleanNumber(payload.from, true) this.emit('message', payload) }, }, diff --git a/packages/provider/web-whatsapp/utils.js b/packages/provider/web-whatsapp/utils.js index 0f307a5..aec861c 100644 --- a/packages/provider/web-whatsapp/utils.js +++ b/packages/provider/web-whatsapp/utils.js @@ -1,9 +1,9 @@ const { createWriteStream } = require('fs') const qr = require('qr-image') -const cleanNumber = (number) => { +const cleanNumber = (number, full = false) => { number = number.replace('@c.us', '') - number = `${number}@c.us` + number = !full ? `${number}@c.us` : `${number}` return number } From 0f5efa985201da2353246deed8ceabe258548a7c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 18 Nov 2022 18:35:49 +0100 Subject: [PATCH 064/459] . --- .eslintrc.js | 22 ++++++++++------------ .husky/pre-commit | 4 ++++ .husky/pre-push | 4 ++++ .prettierignore | 8 ++++++++ .prettierrc.json | 2 +- .vscode/launch.json | 6 ++---- CHANGELOG.md | 25 +++++++++++++------------ docker-compose.yml | 44 ++++++++++++++++++++++---------------------- package.json | 7 ++++--- yarn.lock | 5 +++++ 10 files changed, 73 insertions(+), 54 deletions(-) create mode 100644 .husky/pre-commit create mode 100644 .husky/pre-push create mode 100644 .prettierignore diff --git a/.eslintrc.js b/.eslintrc.js index c554a26..ec92cad 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,16 +1,14 @@ module.exports = { - "env": { - "browser": true, - "commonjs": true, - "es2021": true, - "node": true + env: { + browser: true, + commonjs: true, + es2021: true, + node: true, }, - "extends": "eslint:recommended", - "overrides": [ - ], - "parserOptions": { - "ecmaVersion": "latest" + extends: 'eslint:recommended', + overrides: [], + parserOptions: { + ecmaVersion: 'latest', }, - "rules": { - } + rules: {}, } diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..48170b7 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn run format:check && yarn run format:write diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 0000000..91c16cf --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn run lint:check && yarn run lint:fix diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..a46192d --- /dev/null +++ b/.prettierignore @@ -0,0 +1,8 @@ +packages/**/lib +**/.git +**/.svn +**/.hg +**/node_modules +*.mjs +*.cjs +*.md \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json index d1039fb..e74ed9f 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -3,4 +3,4 @@ "tabWidth": 4, "semi": false, "singleQuote": true -} \ No newline at end of file +} diff --git a/.vscode/launch.json b/.vscode/launch.json index 8da750d..553081c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,10 +8,8 @@ "type": "node", "request": "launch", "name": "Iniciar el programa", - "skipFiles": [ - "/**" - ], + "skipFiles": ["/**"], "program": "${workspaceFolder}\\example-app\\app.js" } ] -} \ No newline at end of file +} diff --git a/CHANGELOG.md b/CHANGELOG.md index cdf499c..6b8c50d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,15 @@ #### Actualización 14 Ene 2022 -- npm update -- remove ora and chalk -- add env -- add mysql -- add dialogflow -- add scan qr from webpage -- update route with middleware -- fix send message to story -- external download -- easy deploy heroku -- add support for ubuntu/linux -https://stackoverflow.com/questions/51855169/dialogflow-403-iam-permission-dialogflow-sessions-detectintent \ No newline at end of file +- npm update +- remove ora and chalk +- add env +- add mysql +- add dialogflow +- add scan qr from webpage +- update route with middleware +- fix send message to story +- external download +- easy deploy heroku +- add support for ubuntu/linux + +https://stackoverflow.com/questions/51855169/dialogflow-403-iam-permission-dialogflow-sessions-detectintent diff --git a/docker-compose.yml b/docker-compose.yml index 86449f3..1e49d41 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,25 +1,25 @@ version: '3.3' services: - mongo: - image: mongo - container_name: app_enviroment - restart: always - ports: - - "27019:27017" - environment: - MONGO_INITDB_DATABASE: bot - expose: - - 27019 - mysql: - image: mysql - command: --default-authentication-plugin=mysql_native_password - restart: always - environment: - MYSQL_ROOT_PASSWORD: example - MYSQL_DATABASE: bot - container_name: app_mysql - ports: - - "3306:3306" - expose: - - 3306 + mongo: + image: mongo + container_name: app_enviroment + restart: always + ports: + - '27019:27017' + environment: + MONGO_INITDB_DATABASE: bot + expose: + - 27019 + mysql: + image: mysql + command: --default-authentication-plugin=mysql_native_password + restart: always + environment: + MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: bot + container_name: app_mysql + ports: + - '3306:3306' + expose: + - 3306 diff --git a/package.json b/package.json index 69e75e8..b7e2d85 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "test": "npm run test.unit && npm run test.e2e", "cli": "node ./packages/cli/bin/cli.js", "dev:debug": "node --inspect ./example-app/app.js", - "dev": "node ./example-app/app.js" + "dev": "node ./example-app/app.js", + "prepare": "husky install" }, "workspaces": [ "packages/*", @@ -46,7 +47,6 @@ ], "repository": "https://github.com/leifermendez/bot-whatsapp", "license": "ISC", - "dependencies": {}, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", "@rollup/plugin-json": "^5.0.1", @@ -62,7 +62,8 @@ "rollup": "^3.2.3", "rollup-plugin-cleanup": "^3.2.1", "rollup-plugin-copy": "^3.4.0", - "uvu": "^0.5.6" + "uvu": "^0.5.6", + "husky": "^8.0.2" }, "packageManager": "yarn@3.2.0", "engines": { diff --git a/yarn.lock b/yarn.lock index 80497b6..d9b350c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1516,6 +1516,11 @@ human-signals@^2.1.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +husky@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.2.tgz#5816a60db02650f1f22c8b69b928fd6bcd77a236" + integrity sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg== + ieee754@^1.1.13: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" From 2042abb045f4cc6026e2d6bb9325855233f1d09c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 18 Nov 2022 18:36:03 +0100 Subject: [PATCH 065/459] . --- .husky/pre-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 48170b7..bc41446 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn run format:check && yarn run format:write +yarn run format:check && yarn run format:write && git add . From 417d93867743fec90274f784b75ffae3b3673538 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 18 Nov 2022 18:37:25 +0100 Subject: [PATCH 066/459] . --- .husky/pre-push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/pre-push b/.husky/pre-push index 91c16cf..610c2a5 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn run lint:check && yarn run lint:fix +npm test From e3664cc97361a2d5dd91af38300ea7d4854438cf Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 18 Nov 2022 18:38:05 +0100 Subject: [PATCH 067/459] . --- .husky/pre-push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/pre-push b/.husky/pre-push index 610c2a5..91c16cf 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -npm test +yarn run lint:check && yarn run lint:fix From 6953c954a819a2f3ebca24bc28cbfbedb4e62617 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 18 Nov 2022 19:55:57 +0100 Subject: [PATCH 068/459] restore flow working! --- .husky/pre-push | 2 +- packages/bot/core/core.class.js | 18 +++++++++++++++--- packages/bot/io/flow.class.js | 7 ++++++- packages/bot/io/methods/index.js | 5 +++-- packages/bot/io/methods/toCtx.js | 19 +++++++++++++++++++ packages/bot/io/methods/toSerialize.js | 22 ++++++++++++++++++++++ packages/bot/io/methods/validateCtx.js | 18 ------------------ packages/bot/tests/bot.class.test.js | 1 + packages/bot/tests/methods.test.js | 23 ++++++++++++++++++++++- packages/bot/utils/hash.js | 13 ++++++++++++- 10 files changed, 101 insertions(+), 27 deletions(-) create mode 100644 packages/bot/io/methods/toCtx.js create mode 100644 packages/bot/io/methods/toSerialize.js delete mode 100644 packages/bot/io/methods/validateCtx.js diff --git a/.husky/pre-push b/.husky/pre-push index 91c16cf..d7bfd54 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn run lint:check && yarn run lint:fix +yarn run test diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index cb22dca..132b6d0 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -1,4 +1,4 @@ -const { validateCtx } = require('../io/methods') +const { toCtx } = require('../io/methods') const { printer } = require('../utils/interactive') /** @@ -51,8 +51,20 @@ class CoreClass { let msgToSend = [] const prevMsg = await this.databaseClass.getPrevByNumber(from) - if (prevMsg?.ref && prevMsg?.options?.capture) { - msgToSend = this.flowClass.find(prevMsg.ref, true) || [] + if (prevMsg?.ref) { + const ctxByNumber = toCtx({ + body, + from, + prevRef: prevMsg.refSerialize, + }) + this.databaseClass.save(ctxByNumber) + } + + if (prevMsg?.refSerialize && prevMsg?.options?.capture) { + const refToContinue = this.flowClass.findBySerialize( + prevMsg.refSerialize + ) + msgToSend = this.flowClass.find(refToContinue?.ref, true) || [] } else { msgToSend = this.flowClass.find(body) || [] } diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index 6818982..83d413a 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -1,7 +1,9 @@ +const { toSerialize } = require('./methods') + class FlowClass { flow constructor(_flow) { - this.flow = _flow + this.flow = toSerialize(_flow) } find = (keyOrWord, symbol = false) => { @@ -25,6 +27,9 @@ class FlowClass { findIn(keyOrWord, symbol) return messages } + + findBySerialize = (refSerialize) => + this.flow.find((r) => r.refSerialize === refSerialize) } module.exports = FlowClass diff --git a/packages/bot/io/methods/index.js b/packages/bot/io/methods/index.js index 1fd497f..875a49c 100644 --- a/packages/bot/io/methods/index.js +++ b/packages/bot/io/methods/index.js @@ -1,6 +1,7 @@ const { addAnswer } = require('./addAnswer') const { addKeyword } = require('./addKeyword') -const { validateCtx } = require('./validateCtx') +const { toSerialize } = require('./toSerialize') +const { toCtx } = require('./toCtx') const { toJson } = require('./toJson') -module.exports = { addAnswer, addKeyword, validateCtx, toJson } +module.exports = { addAnswer, addKeyword, toCtx, toJson, toSerialize } diff --git a/packages/bot/io/methods/toCtx.js b/packages/bot/io/methods/toCtx.js new file mode 100644 index 0000000..d29295e --- /dev/null +++ b/packages/bot/io/methods/toCtx.js @@ -0,0 +1,19 @@ +const { generateRef, generateRefSerialize } = require('../../utils/hash') +/** + * @deprecate + * @param answer string + * @param options {media:string, buttons:[], capture:true default false} + * @returns + */ +const toCtx = ({ body, from, prevRef, index }) => { + return { + ref: generateRef(), + keyword: prevRef, + answer: body, + options: {}, + from, + refSerialize: generateRefSerialize({ index, answer: body }), + } +} + +module.exports = { toCtx } diff --git a/packages/bot/io/methods/toSerialize.js b/packages/bot/io/methods/toSerialize.js new file mode 100644 index 0000000..108cf3e --- /dev/null +++ b/packages/bot/io/methods/toSerialize.js @@ -0,0 +1,22 @@ +const { generateRefSerialize } = require('../../utils/hash') + +/** + * Crear referencia serializada + * @param {*} flowJson + * @returns + */ +const toSerialize = (flowJson) => { + if (!Array.isArray(flowJson)) throw new Error('Esto debe ser un ARRAY') + + const jsonToSerialize = flowJson.map((row, index) => ({ + ...row, + refSerialize: `${generateRefSerialize({ + index, + answer: row.answer, + })}`, + })) + + return jsonToSerialize +} + +module.exports = { toSerialize } diff --git a/packages/bot/io/methods/validateCtx.js b/packages/bot/io/methods/validateCtx.js deleted file mode 100644 index 5bc4670..0000000 --- a/packages/bot/io/methods/validateCtx.js +++ /dev/null @@ -1,18 +0,0 @@ -const { generateRef } = require('../../utils/hash') -/** - * - * @param answer string - * @param options {media:string, buttons:[], capture:true default false} - * @returns - */ -const validateCtx = ({ body, from }) => { - return { - ref: generateRef(), - keyword: null, - answer: body, - options: {}, - from, - } -} - -module.exports = { validateCtx } diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index 6536722..5e2230f 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -10,6 +10,7 @@ class MockFlow { class MockDB { listHistory = [] save = () => {} + getPrevByNumber = () => {} } test(`[CoreClass] Probando instanciamiento de clase`, async () => { diff --git a/packages/bot/tests/methods.test.js b/packages/bot/tests/methods.test.js index cfefbb2..e108e43 100644 --- a/packages/bot/tests/methods.test.js +++ b/packages/bot/tests/methods.test.js @@ -1,6 +1,7 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const { addKeyword, addAnswer } = require('@bot-whatsapp/bot') +const { generateRefSerialize } = require('../utils/hash') +const { addKeyword, addAnswer, toSerialize } = require('../io/methods') test('Debere probar las propeidades', () => { const ARRANGE = { @@ -21,6 +22,26 @@ test('Debere probar las propeidades array', () => { assert.is(MAIN_CTX.ctx.keyword, ARRANGE.keyword) }) +test('Debere probar toSerialize', () => { + const ARRANGE = { + keyword: ['hola!', 'ole'], + } + const MAIN_CTX = addKeyword(ARRANGE.keyword) + .addAnswer('Segundo!') + .addAnswer('Segundo!') + .toJson() + + const [ANSWER_A] = MAIN_CTX + + assert.is( + toSerialize(MAIN_CTX)[0].refSerialize, + generateRefSerialize({ + index: 0, + answer: ANSWER_A.answer, + }) + ) +}) + test('Debere probar el paso de contexto', () => { const ARRANGE = { keyword: 'hola!', diff --git a/packages/bot/utils/hash.js b/packages/bot/utils/hash.js index a84fc83..888df6b 100644 --- a/packages/bot/utils/hash.js +++ b/packages/bot/utils/hash.js @@ -4,4 +4,15 @@ const generateRef = () => { return crypto.randomUUID() } -module.exports = { generateRef } +/** + * Genera un HASH MD5 + * @param {*} param0 + * @returns + */ +const generateRefSerialize = ({ index, answer }) => + crypto + .createHash('md5') + .update(JSON.stringify({ index, answer })) + .digest('hex') + +module.exports = { generateRef, generateRefSerialize } From 4e0a1a59e002a21ca7e525aa2b8c3e86249a45f9 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 18 Nov 2022 19:56:50 +0100 Subject: [PATCH 069/459] . --- .husky/pre-push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/pre-push b/.husky/pre-push index d7bfd54..879e935 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn run test +npm run test From 7cf013e52b3139df0ee3c74b0f9fce43adeb2182 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 18 Nov 2022 20:05:11 +0100 Subject: [PATCH 070/459] Next --- TODO.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..2d12ed7 --- /dev/null +++ b/TODO.md @@ -0,0 +1 @@ +- [ ] Cuando Envian Sticket devuelve mensaje raro \ No newline at end of file From 4879df040fd5a474b1368d1c00480df8c13fce66 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 19 Nov 2022 21:07:41 +0100 Subject: [PATCH 071/459] i need remove ctx stranger --- TODO.md | 6 +- packages/bot/core/core.class.js | 14 +++- packages/bot/index.js | 3 +- packages/bot/io/flow.class.js | 48 +++++++++++-- packages/bot/io/methods/addAnswer.js | 99 ++++++++++++++++++--------- packages/bot/io/methods/addKeyword.js | 9 --- packages/bot/tests/methods.test.js | 2 + packages/bot/utils/hash.js | 10 ++- 8 files changed, 140 insertions(+), 51 deletions(-) diff --git a/TODO.md b/TODO.md index 2d12ed7..e932143 100644 --- a/TODO.md +++ b/TODO.md @@ -1 +1,5 @@ -- [ ] Cuando Envian Sticket devuelve mensaje raro \ No newline at end of file +- [ ] Cuando Envian Sticket devuelve mensaje raro +- [ ] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) +- [ ] .addKeyword('1') no funciona con 1 caracter +- [ ] sensitivy viene activado por defecto +- [ ] colocar mensaje esperando conectando whatsapp (provider) \ No newline at end of file diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 132b6d0..224c3c7 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -47,7 +47,8 @@ class CoreClass { * @private * @param {*} ctxMessage */ - handleMsg = async ({ body, from }) => { + handleMsg = async (messageInComming) => { + const { body, from } = messageInComming let msgToSend = [] const prevMsg = await this.databaseClass.getPrevByNumber(from) @@ -64,6 +65,17 @@ class CoreClass { const refToContinue = this.flowClass.findBySerialize( prevMsg.refSerialize ) + + if (refToContinue && prevMsg?.options?.callback) { + const indexFlow = this.flowClass.findIndexByRef( + refToContinue?.ref + ) + + this.flowClass.allCallbacks[indexFlow].callback( + messageInComming + ) + } + msgToSend = this.flowClass.find(refToContinue?.ref, true) || [] } else { msgToSend = this.flowClass.find(body) || [] diff --git a/packages/bot/index.js b/packages/bot/index.js index 072e0c0..e5b6e1c 100644 --- a/packages/bot/index.js +++ b/packages/bot/index.js @@ -1,7 +1,7 @@ const CoreClass = require('./core/core.class') const ProviderClass = require('./provider/provider.class') const FlowClass = require('./io/flow.class') -const { addKeyword, addAnswer } = require('./io/methods') +const { addKeyword, addAnswer, toSerialize } = require('./io/methods') /** * Crear instancia de clase Bot @@ -38,6 +38,7 @@ module.exports = { createProvider, addKeyword, addAnswer, + toSerialize, ProviderClass, CoreClass, } diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index 83d413a..a031b57 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -1,19 +1,55 @@ const { toSerialize } = require('./methods') class FlowClass { - flow + allContexts = [] + allCallbacks = [] + flowSerialize = [] + flowRaw = [] constructor(_flow) { - this.flow = toSerialize(_flow) + if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY') + _flow.forEach((ctxFlow, parentIndex) => { + const callbacks = ctxFlow.ctx?.callbacks || [] + const contexts = ctxFlow.ctx?.contexts || [] + + callbacks.forEach((deepCallbacks) => { + if (deepCallbacks && contexts[parentIndex]) { + const ctxChild = contexts[parentIndex] + deepCallbacks.callback(null, ctxChild) + } + }) + }) + + this.flowRaw = _flow + this.allContexts = _flow + .map((ctxs) => ctxs.ctx.contexts) + .flat(2) + .map((c, i) => ({ getCtx: c?.getCtx, index: i })) + + this.allCallbacks = _flow + .map((cbIn) => cbIn.ctx.callbacks) + .flat(2) + .map((c, i) => ({ callback: c?.callback, index: i })) + + const mergeToJsonSerialize = Object.keys(_flow) + .map((indexObjectFlow) => _flow[indexObjectFlow].toJson()) + .flat(2) + + this.flowSerialize = toSerialize(mergeToJsonSerialize) } find = (keyOrWord, symbol = false) => { let capture = false let messages = [] - let refSymbol + let refSymbol = null - const findIn = (keyOrWord, symbol = false, flow = this.flow) => { + const findIn = ( + keyOrWord, + symbol = false, + flow = this.flowSerialize + ) => { capture = refSymbol?.options?.capture || false if (capture) return messages + if (symbol) { refSymbol = flow.find((c) => c.keyword === keyOrWord) if (refSymbol?.answer) messages.push(refSymbol) @@ -29,7 +65,9 @@ class FlowClass { } findBySerialize = (refSerialize) => - this.flow.find((r) => r.refSerialize === refSerialize) + this.flowSerialize.find((r) => r.refSerialize === refSerialize) + + findIndexByRef = (ref) => this.flowSerialize.findIndex((r) => r.ref === ref) } module.exports = FlowClass diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index ace843e..aa7b8e3 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -6,43 +6,78 @@ const { toJson } = require('./toJson') * @param options {media:string, buttons:[], capture:true default false} * @returns */ -const addAnswer = (inCtx) => (answer, options) => { - const getAnswerOptions = () => ({ - media: typeof options?.media === 'string' ? `${options?.media}` : null, - buttons: Array.isArray(options?.buttons) ? options.buttons : [], - capture: - typeof options?.capture === 'boolean' ? options?.capture : false, - }) +const addAnswer = + (inCtx) => + (answer, options, cb = null) => { + const getAnswerOptions = () => ({ + media: + typeof options?.media === 'string' ? `${options?.media}` : null, + buttons: Array.isArray(options?.buttons) ? options.buttons : [], + capture: + typeof options?.capture === 'boolean' + ? options?.capture + : false, + child: + typeof options?.child === 'string' ? `${options?.child}` : null, + }) - const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx - const ctxAnswer = () => { - const ref = `ans_${generateRef()}` + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx + const ctxAnswer = () => { + const ref = `ans_${generateRef()}` - const options = { - ...getAnswerOptions(), - keyword: {}, + const callback = + typeof cb === 'function' + ? cb + : () => console.log('Callback no definida') + + const options = { + ...getAnswerOptions(), + keyword: {}, + callback: !!cb, + } + + const json = [].concat(inCtx.json).concat([ + { + ref, + keyword: lastCtx.ref, + answer, + options, + }, + ]) + + const callbacks = [].concat(inCtx.callbacks).concat([ + { + ref: lastCtx.ref, + callback, + }, + ]) + + const contexts = [].concat(inCtx.contexts).concat([ + { + ref: lastCtx.ref, + getCtx: () => lastCtx, + }, + ]) + + return { + ...lastCtx, + ref, + answer, + json, + options, + callbacks, + contexts, + } } - const json = [].concat(inCtx.json).concat([ - { - ref, - keyword: lastCtx.ref, - answer, - options, - }, - ]) + const ctx = ctxAnswer() - return { ...lastCtx, ref, answer, json, options } + return { + ctx, + ref: ctx.ref, + addAnswer: addAnswer(ctx), + toJson: toJson(ctx), + } } - const ctx = ctxAnswer() - - return { - ctx, - ref: ctx.ref, - addAnswer: addAnswer(ctx), - toJson: toJson(ctx), - } -} - module.exports = { addAnswer } diff --git a/packages/bot/io/methods/addKeyword.js b/packages/bot/io/methods/addKeyword.js index 18bcaa5..e17f9be 100644 --- a/packages/bot/io/methods/addKeyword.js +++ b/packages/bot/io/methods/addKeyword.js @@ -1,10 +1,6 @@ const { generateRef } = require('../../utils/hash') const { addAnswer } = require('./addAnswer') const { toJson } = require('./toJson') -/** - * addKeyword: - * Es necesario que genere id|hash - */ /** * @@ -12,11 +8,6 @@ const { toJson } = require('./toJson') * @param {*} options {sensitive:boolean} default false */ const addKeyword = (keyword, options) => { - /** - * Esta funcion deberia parsear y validar las opciones - * del keyword - * @returns - */ const parseOptions = () => { const defaultProperties = { sensitive: diff --git a/packages/bot/tests/methods.test.js b/packages/bot/tests/methods.test.js index e108e43..5f7e79d 100644 --- a/packages/bot/tests/methods.test.js +++ b/packages/bot/tests/methods.test.js @@ -31,6 +31,8 @@ test('Debere probar toSerialize', () => { .addAnswer('Segundo!') .toJson() + console.log(MAIN_CTX) + const [ANSWER_A] = MAIN_CTX assert.is( diff --git a/packages/bot/utils/hash.js b/packages/bot/utils/hash.js index 888df6b..19e3c30 100644 --- a/packages/bot/utils/hash.js +++ b/packages/bot/utils/hash.js @@ -1,7 +1,13 @@ const crypto = require('crypto') -const generateRef = () => { - return crypto.randomUUID() +/** + * Generamos un UUID unico con posibilidad de tener un prefijo + * @param {*} prefix + * @returns + */ +const generateRef = (prefix = false) => { + const id = crypto.randomUUID() + return prefix ? `${prefix}_${id}` : id } /** From 0c850d47d79ec8ae47a868721990e620fb9b0a9d Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 19 Nov 2022 21:09:26 +0100 Subject: [PATCH 072/459] removed ctx --- packages/bot/io/flow.class.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index a031b57..af4fc29 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -7,18 +7,6 @@ class FlowClass { flowRaw = [] constructor(_flow) { if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY') - _flow.forEach((ctxFlow, parentIndex) => { - const callbacks = ctxFlow.ctx?.callbacks || [] - const contexts = ctxFlow.ctx?.contexts || [] - - callbacks.forEach((deepCallbacks) => { - if (deepCallbacks && contexts[parentIndex]) { - const ctxChild = contexts[parentIndex] - deepCallbacks.callback(null, ctxChild) - } - }) - }) - this.flowRaw = _flow this.allContexts = _flow .map((ctxs) => ctxs.ctx.contexts) From c40c0c54bdaf4c7d9174dcfe973667552860ef9e Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 19 Nov 2022 21:17:18 +0100 Subject: [PATCH 073/459] nothing --- packages/bot/io/flow.class.js | 5 ----- packages/bot/io/methods/addAnswer.js | 8 -------- 2 files changed, 13 deletions(-) diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index af4fc29..14cbd28 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -1,17 +1,12 @@ const { toSerialize } = require('./methods') class FlowClass { - allContexts = [] allCallbacks = [] flowSerialize = [] flowRaw = [] constructor(_flow) { if (!Array.isArray(_flow)) throw new Error('Esto debe ser un ARRAY') this.flowRaw = _flow - this.allContexts = _flow - .map((ctxs) => ctxs.ctx.contexts) - .flat(2) - .map((c, i) => ({ getCtx: c?.getCtx, index: i })) this.allCallbacks = _flow .map((cbIn) => cbIn.ctx.callbacks) diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index aa7b8e3..8947015 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -52,13 +52,6 @@ const addAnswer = }, ]) - const contexts = [].concat(inCtx.contexts).concat([ - { - ref: lastCtx.ref, - getCtx: () => lastCtx, - }, - ]) - return { ...lastCtx, ref, @@ -66,7 +59,6 @@ const addAnswer = json, options, callbacks, - contexts, } } From 368bf29e6331b9aae989b66d7ad873ff8525d726 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 22 Nov 2022 21:45:00 +0100 Subject: [PATCH 074/459] almost work it --- packages/bot/core/core.class.js | 38 +++++++++++++++++--------- packages/bot/io/flow.class.js | 11 +++----- packages/bot/io/methods/addAnswer.js | 28 +++++++++++++++---- packages/bot/io/methods/toSerialize.js | 2 +- 4 files changed, 52 insertions(+), 27 deletions(-) diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 224c3c7..3d497dc 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -50,7 +50,13 @@ class CoreClass { handleMsg = async (messageInComming) => { const { body, from } = messageInComming let msgToSend = [] + + //Consultamos mensaje previo en DB const prevMsg = await this.databaseClass.getPrevByNumber(from) + //Consultamos for refSerializada en el flow actual + const refToContinue = this.flowClass.findBySerialize( + prevMsg?.refSerialize + ) if (prevMsg?.ref) { const ctxByNumber = toCtx({ @@ -61,26 +67,32 @@ class CoreClass { this.databaseClass.save(ctxByNumber) } - if (prevMsg?.refSerialize && prevMsg?.options?.capture) { - const refToContinue = this.flowClass.findBySerialize( - prevMsg.refSerialize - ) + //Si se tiene un callback se ejecuta + if (refToContinue && prevMsg?.options?.callback) { + const indexFlow = this.flowClass.findIndexByRef(refToContinue?.ref) + this.flowClass.allCallbacks[indexFlow].callback(messageInComming) + } - if (refToContinue && prevMsg?.options?.callback) { - const indexFlow = this.flowClass.findIndexByRef( - refToContinue?.ref - ) + //Si se tiene anidaciones de flows, si tienes anidados obligatoriamente capture:true + if (prevMsg?.options?.nested?.length) { + const nestedRef = prevMsg.options.nested + const flowStandalone = nestedRef.map((f) => ({ + ...this.flowClass.findBySerialize(f), + })) - this.flowClass.allCallbacks[indexFlow].callback( - messageInComming - ) - } + msgToSend = this.flowClass.find(body, false, flowStandalone) || [] + this.sendFlow(msgToSend, from) + return + } + //Consultamos si se espera respuesta por parte de cliente "Ejemplo: Dime tu nombre" + if (!prevMsg?.options?.nested?.length && prevMsg?.options?.capture) { msgToSend = this.flowClass.find(refToContinue?.ref, true) || [] } else { msgToSend = this.flowClass.find(body) || [] } - if (Array.isArray(msgToSend)) this.sendFlow(msgToSend, from) + + this.sendFlow(msgToSend, from) } sendProviderAndSave = (numberOrId, ctxMessage) => { diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index 14cbd28..bb0d79d 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -1,4 +1,4 @@ -const { toSerialize } = require('./methods') +const { toSerialize } = require('./methods/toSerialize') class FlowClass { allCallbacks = [] @@ -20,16 +20,13 @@ class FlowClass { this.flowSerialize = toSerialize(mergeToJsonSerialize) } - find = (keyOrWord, symbol = false) => { + find = (keyOrWord, symbol = false, overFlow = null) => { let capture = false let messages = [] let refSymbol = null + overFlow = overFlow ?? this.flowSerialize - const findIn = ( - keyOrWord, - symbol = false, - flow = this.flowSerialize - ) => { + const findIn = (keyOrWord, symbol = false, flow = overFlow) => { capture = refSymbol?.options?.capture || false if (capture) return messages diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index 8947015..2300ff4 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -1,5 +1,6 @@ const { generateRef } = require('../../utils/hash') const { toJson } = require('./toJson') +const { toSerialize } = require('./toSerialize') /** * * @param answer string @@ -8,7 +9,11 @@ const { toJson } = require('./toJson') */ const addAnswer = (inCtx) => - (answer, options, cb = null) => { + (answer, options, cb = null, nested = []) => { + /** + * Todas las opciones referentes a el mensaje en concreto options:{} + * @returns + */ const getAnswerOptions = () => ({ media: typeof options?.media === 'string' ? `${options?.media}` : null, @@ -21,17 +26,28 @@ const addAnswer = typeof options?.child === 'string' ? `${options?.child}` : null, }) + const getNested = () => ({ + nested: Array.isArray(nested) ? nested : [], + }) + + const callback = + typeof cb === 'function' + ? cb + : () => console.log('Callback no definida') + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx + + /** + * Esta funcion se encarga de mapear y transformar todo antes + * de retornar + * @returns + */ const ctxAnswer = () => { const ref = `ans_${generateRef()}` - const callback = - typeof cb === 'function' - ? cb - : () => console.log('Callback no definida') - const options = { ...getAnswerOptions(), + ...getNested(), keyword: {}, callback: !!cb, } diff --git a/packages/bot/io/methods/toSerialize.js b/packages/bot/io/methods/toSerialize.js index 108cf3e..940604e 100644 --- a/packages/bot/io/methods/toSerialize.js +++ b/packages/bot/io/methods/toSerialize.js @@ -3,7 +3,7 @@ const { generateRefSerialize } = require('../../utils/hash') /** * Crear referencia serializada * @param {*} flowJson - * @returns + * @returns array[] */ const toSerialize = (flowJson) => { if (!Array.isArray(flowJson)) throw new Error('Esto debe ser un ARRAY') From f6d70b4f7d911d9e8a7f679ef39213eae1be9282 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 23 Nov 2022 20:56:17 +0100 Subject: [PATCH 075/459] working child flow --- TODO.md | 3 ++- packages/bot/core/core.class.js | 2 +- packages/bot/io/methods/toSerialize.js | 1 + packages/bot/utils/hash.js | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index e932143..945e273 100644 --- a/TODO.md +++ b/TODO.md @@ -2,4 +2,5 @@ - [ ] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) - [ ] .addKeyword('1') no funciona con 1 caracter - [ ] sensitivy viene activado por defecto -- [ ] colocar mensaje esperando conectando whatsapp (provider) \ No newline at end of file +- [ ] colocar mensaje esperando conectando whatsapp (provider) +- [ ] fallback respuesta en hijo \ No newline at end of file diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 3d497dc..106b9c9 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -77,7 +77,7 @@ class CoreClass { if (prevMsg?.options?.nested?.length) { const nestedRef = prevMsg.options.nested const flowStandalone = nestedRef.map((f) => ({ - ...this.flowClass.findBySerialize(f), + ...nestedRef.find((r) => r.refSerialize === f.refSerialize), })) msgToSend = this.flowClass.find(body, false, flowStandalone) || [] diff --git a/packages/bot/io/methods/toSerialize.js b/packages/bot/io/methods/toSerialize.js index 940604e..21ebf74 100644 --- a/packages/bot/io/methods/toSerialize.js +++ b/packages/bot/io/methods/toSerialize.js @@ -12,6 +12,7 @@ const toSerialize = (flowJson) => { ...row, refSerialize: `${generateRefSerialize({ index, + keyword: row.keyword, answer: row.answer, })}`, })) diff --git a/packages/bot/utils/hash.js b/packages/bot/utils/hash.js index 19e3c30..84a25db 100644 --- a/packages/bot/utils/hash.js +++ b/packages/bot/utils/hash.js @@ -15,10 +15,10 @@ const generateRef = (prefix = false) => { * @param {*} param0 * @returns */ -const generateRefSerialize = ({ index, answer }) => +const generateRefSerialize = ({ index, answer, keyword }) => crypto .createHash('md5') - .update(JSON.stringify({ index, answer })) + .update(JSON.stringify({ index, answer, keyword })) .digest('hex') module.exports = { generateRef, generateRefSerialize } From 1dd88d117dccb8d14ea412283d70df43741ab0e6 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 23 Nov 2022 21:00:25 +0100 Subject: [PATCH 076/459] test pass ok --- packages/bot/tests/bot.class.test.js | 2 ++ packages/bot/tests/methods.test.js | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index 5e2230f..d3b2a4a 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -5,6 +5,8 @@ const { createBot, CoreClass } = require('../index') class MockFlow { find = () => {} + findBySerialize = () => {} + findIndexByRef = () => {} } class MockDB { diff --git a/packages/bot/tests/methods.test.js b/packages/bot/tests/methods.test.js index 5f7e79d..cd718d9 100644 --- a/packages/bot/tests/methods.test.js +++ b/packages/bot/tests/methods.test.js @@ -40,6 +40,7 @@ test('Debere probar toSerialize', () => { generateRefSerialize({ index: 0, answer: ANSWER_A.answer, + keyword: ANSWER_A.keyword, }) ) }) From 14fbae3c86ac491f1bccf55851d0e2276cd387d8 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 23 Nov 2022 23:16:54 +0100 Subject: [PATCH 077/459] Increase Coverage --- .c8rc.json | 8 ++ README.md | 4 + packages/bot/tests/bot.class.test.js | 176 ++++++++++++++++++++++++++- packages/bot/tests/methods.test.js | 2 - 4 files changed, 182 insertions(+), 8 deletions(-) create mode 100644 .c8rc.json diff --git a/.c8rc.json b/.c8rc.json new file mode 100644 index 0000000..81ecbe9 --- /dev/null +++ b/.c8rc.json @@ -0,0 +1,8 @@ +{ + "src": "./src", + "exclude": ["**/bot/lib", "__mocks__", "**/mock"], + "reporter": ["html"], + "report-dir": "./coverage", + "check-coverage": true, + "lines": 90 +} diff --git a/README.md b/README.md index d636669..28971ac 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Test / Coverage](https://github.com/leifermendez/bot-whatsapp/actions/workflows/ci.yml/badge.svg)](https://github.com/leifermendez/bot-whatsapp/actions/workflows/ci.yml) + - [ ] Evitar dependencias **Comunidad** @@ -8,3 +10,5 @@ - [Twitter](https://twitter.com/leifermendez) - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) - [Telegram](https://t.me/leifermendez) + + diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index d3b2a4a..836e0a3 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -4,21 +4,51 @@ const MockProvider = require('../../../__mocks__/mock.provider') const { createBot, CoreClass } = require('../index') class MockFlow { - find = () => {} - findBySerialize = () => {} - findIndexByRef = () => {} + allCallbacks = [{ callback: () => console.log('') }] + flowSerialize = [] + flowRaw = [] + find = (arg) => { + if (arg) { + return [{ answer: 'answer', ref: 'ref' }] + } else { + return null + } + } + findBySerialize = () => ({}) + findIndexByRef = () => 0 } -class MockDB { +class MockDBA { listHistory = [] save = () => {} getPrevByNumber = () => {} } +class MockDBB { + listHistory = [] + save = () => {} + getPrevByNumber = () => ({ + refSerialize: 'xxxxx', + ref: 'xxxx', + options: { callback: true }, + }) +} + +class MockDBC { + listHistory = [] + save = () => {} + getPrevByNumber = () => ({ + refSerialize: 'xxxxx', + ref: 'xxxx', + options: { callback: true, nested: ['1', '2'] }, + }) + saveLog = () => {} +} + test(`[CoreClass] Probando instanciamiento de clase`, async () => { const setting = { flow: new MockFlow(), - database: new MockDB(), + database: new MockDBA(), provider: new MockProvider(), } const bot = await createBot(setting) @@ -47,7 +77,7 @@ test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => { const setting = { flow: new MockFlow(), - database: new MockDB(), + database: new MockDBA(), provider: mockProvider, } await createBot(setting) @@ -91,6 +121,140 @@ test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => { ) }) +test(`[Bot] Probando Flujos Internos`, async () => { + let responseEvents = {} + + const MOCK_EVENTS = { + require_action: { + instructions: 'Debes...', + }, + ready: true, + auth_failure: { + instructions: 'Error...', + }, + message: { + from: 'XXXXXX', + body: 'hola', + hasMedia: false, + }, + } + + const mockProvider = new MockProvider() + + const setting = { + flow: new MockFlow(), + database: new MockDBB(), + provider: mockProvider, + } + await createBot(setting) + + /// Escuchamos eventos + mockProvider.on( + 'require_action', + (r) => (responseEvents['require_action'] = r) + ) + mockProvider.on('ready', (r) => (responseEvents['ready'] = r)) + mockProvider.on('auth_failure', (r) => (responseEvents['auth_failure'] = r)) + mockProvider.on('message', (r) => (responseEvents['message'] = r)) + + /// Emitimos eventos + mockProvider.delaySendMessage( + 0, + 'require_action', + MOCK_EVENTS.require_action + ) + mockProvider.delaySendMessage(0, 'ready', MOCK_EVENTS.ready) + mockProvider.delaySendMessage(0, 'auth_failure', MOCK_EVENTS.auth_failure) + mockProvider.delaySendMessage(0, 'message', MOCK_EVENTS.message) + + await delay(0) + + /// Testeamos eventos + assert.is( + JSON.stringify(responseEvents.require_action), + JSON.stringify(MOCK_EVENTS.require_action) + ) + assert.is(responseEvents.ready, MOCK_EVENTS.ready) + + assert.is( + JSON.stringify(responseEvents.auth_failure), + JSON.stringify(MOCK_EVENTS.auth_failure) + ) + + assert.is( + JSON.stringify(responseEvents.message), + JSON.stringify(MOCK_EVENTS.message) + ) +}) + +test(`[Bot] Probando Flujos Nested`, async () => { + let responseEvents = {} + + const MOCK_EVENTS = { + require_action: { + instructions: 'Debes...', + }, + ready: true, + auth_failure: { + instructions: 'Error...', + }, + message: { + from: 'XXXXXX', + body: 'hola', + hasMedia: false, + }, + } + + const mockProvider = new MockProvider() + + const setting = { + flow: new MockFlow(), + database: new MockDBC(), + provider: mockProvider, + } + const botInstance = await createBot(setting) + + botInstance.sendProviderAndSave('xxxxx', 'xxxxx') + botInstance.continue('xxxxx', 'xxxxx') + /// Escuchamos eventos + mockProvider.on( + 'require_action', + (r) => (responseEvents['require_action'] = r) + ) + mockProvider.on('ready', (r) => (responseEvents['ready'] = r)) + mockProvider.on('auth_failure', (r) => (responseEvents['auth_failure'] = r)) + mockProvider.on('message', (r) => (responseEvents['message'] = r)) + + /// Emitimos eventos + mockProvider.delaySendMessage( + 0, + 'require_action', + MOCK_EVENTS.require_action + ) + mockProvider.delaySendMessage(0, 'ready', MOCK_EVENTS.ready) + mockProvider.delaySendMessage(0, 'auth_failure', MOCK_EVENTS.auth_failure) + mockProvider.delaySendMessage(0, 'message', MOCK_EVENTS.message) + + await delay(0) + + /// Testeamos eventos + assert.is( + JSON.stringify(responseEvents.require_action), + JSON.stringify(MOCK_EVENTS.require_action) + ) + assert.is(responseEvents.ready, MOCK_EVENTS.ready) + + assert.is( + JSON.stringify(responseEvents.auth_failure), + JSON.stringify(MOCK_EVENTS.auth_failure) + ) + + assert.is( + JSON.stringify(responseEvents.message), + JSON.stringify(MOCK_EVENTS.message) + ) +}) + test.run() function delay(ms) { diff --git a/packages/bot/tests/methods.test.js b/packages/bot/tests/methods.test.js index cd718d9..9f9452e 100644 --- a/packages/bot/tests/methods.test.js +++ b/packages/bot/tests/methods.test.js @@ -31,8 +31,6 @@ test('Debere probar toSerialize', () => { .addAnswer('Segundo!') .toJson() - console.log(MAIN_CTX) - const [ANSWER_A] = MAIN_CTX assert.is( From b6a21b9c12d801d995a371679d968e6d7fc98224 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 24 Nov 2022 14:52:57 +0100 Subject: [PATCH 078/459] Sensitive case --- TODO.md | 6 +++--- packages/bot/io/flow.class.js | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index 945e273..248d436 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,6 @@ - [ ] Cuando Envian Sticket devuelve mensaje raro -- [ ] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) -- [ ] .addKeyword('1') no funciona con 1 caracter -- [ ] sensitivy viene activado por defecto +- [X] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) +- [X] .addKeyword('1') no funciona con 1 caracter +- [X] sensitivy viene activado por defecto - [ ] colocar mensaje esperando conectando whatsapp (provider) - [ ] fallback respuesta en hijo \ No newline at end of file diff --git a/packages/bot/io/flow.class.js b/packages/bot/io/flow.class.js index bb0d79d..5ed8eb4 100644 --- a/packages/bot/io/flow.class.js +++ b/packages/bot/io/flow.class.js @@ -26,8 +26,24 @@ class FlowClass { let refSymbol = null overFlow = overFlow ?? this.flowSerialize + const mapSensitiveString = (str, flag = false) => { + if (!flag && Array.isArray(str)) { + return str.map((c) => c.toLowerCase()) + } + + if (!flag && typeof str === 'string') { + return str.toLowerCase() + } + + return str + } + const findIn = (keyOrWord, symbol = false, flow = overFlow) => { + const sensitive = refSymbol?.options?.sensitive || false capture = refSymbol?.options?.capture || false + + keyOrWord = mapSensitiveString(keyOrWord, sensitive) + if (capture) return messages if (symbol) { @@ -35,7 +51,9 @@ class FlowClass { if (refSymbol?.answer) messages.push(refSymbol) if (refSymbol?.ref) findIn(refSymbol.ref, true) } else { - refSymbol = flow.find((c) => c.keyword.includes(keyOrWord)) + refSymbol = flow.find((c) => + mapSensitiveString(c.keyword, sensitive).includes(keyOrWord) + ) if (refSymbol?.ref) findIn(refSymbol.ref, true) return messages } From c6b23d353a657f5275e5c36d2ce89d403f59ea86 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 24 Nov 2022 16:54:07 +0100 Subject: [PATCH 079/459] add todo --- TODO.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 248d436..353ef86 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,8 @@ -- [ ] Cuando Envian Sticket devuelve mensaje raro - [X] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) - [X] .addKeyword('1') no funciona con 1 caracter - [X] sensitivy viene activado por defecto +- [ ] fallback respuesta en hijo: Se puede colocar en option el ref de la answer fallback - [ ] colocar mensaje esperando conectando whatsapp (provider) -- [ ] fallback respuesta en hijo \ No newline at end of file +- [ ] Cuando Envian Sticket devuelve mensaje raro +- [ ] WhatsappWeb provider enviar imagenes +- [ ] WhatsappWeb provider enviar audio \ No newline at end of file From 8d24093aec308a6829979d57b25162ef7d71e032 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 09:52:17 +0100 Subject: [PATCH 080/459] added mor doc --- TODO.md | 20 +++++++++++++++++++- packages/README.md | 46 +++++++++++++++++++--------------------------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/TODO.md b/TODO.md index 353ef86..908a210 100644 --- a/TODO.md +++ b/TODO.md @@ -1,8 +1,26 @@ +### @bot-whatsapp/bot - [X] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) - [X] .addKeyword('1') no funciona con 1 caracter - [X] sensitivy viene activado por defecto - [ ] fallback respuesta en hijo: Se puede colocar en option el ref de la answer fallback - [ ] colocar mensaje esperando conectando whatsapp (provider) - [ ] Cuando Envian Sticket devuelve mensaje raro +- [ ] createDatabase validar implementacion de funciones + +### @bot-whatsapp/database +- [ ] __(doc):__ Video para explicar como implementar nuevos database +- [ ] Mongo adapter +- [ ] MySQL adapter +- [ ] JsonFile adapter + +### @bot-whatsapp/provider +- [ ] __(doc):__ Video para explicar como implementar nuevos providers - [ ] WhatsappWeb provider enviar imagenes -- [ ] WhatsappWeb provider enviar audio \ No newline at end of file +- [ ] WhatsappWeb provider enviar audio +- [ ] Twilio adapter +- [ ] Meta adapter + +### @bot-whatsapp/cli +- [ ] Mongo adapter +- [ ] MySQL adapter +- [ ] JsonFile adapter \ No newline at end of file diff --git a/packages/README.md b/packages/README.md index 533ac37..0cdc2aa 100644 --- a/packages/README.md +++ b/packages/README.md @@ -1,36 +1,28 @@ -### 🚀 Packages +### 🚀 Package (@bot-whatsapp/database) -Se separaran responsabilidades del proyecto en diferentes packages, de esta manera se podra versionar y controlar los diferentes versionamientos y cambios con un mayor desacoplamiento. +Este package tiene como reponsabilidad proveer de diferentes adaptadores para la capa de datos. +La idea es brindar multiples opciones como un adaptador de MySQL, Mongo, entre otros. -##### Principales Funciones +Ejemplo de como se implementaria: -El bot tiene tres funciones principales hasta este momento la cuales divideremos en paquetes para que puedan trabajarse y por separador sin acoplamiento. +```js +const MongoAdapter = require('@bot-whatsapp/database/mongo') +/// o +const MySQLAdapter = require('@bot-whatsapp/database/mysql') -**Package CLI** (_Command Line Interface_) +const main = async () => { -> Sera basicamente un asistente via `cosola` el cual nos ayudara a realizar las instalacion de las dependencias necesarias y a crear un archivo de configuracion para tener un migrado rápido. -> La idea esque se pueda ejecutar un commando parecido a `npm create bot@leifermendez` o algo parecido y comienze a instalar todo. + const adapterDB = new MongoAdapter() + const adapterFlow = createFlow([flujoBot]) + const adapterProvider = createProvider(WebWhatsappProvider) -🤞 Funciones deseadas: - -- Que actualice y corrija los problema de versionamientos más frecuetes -- Verificar la versión de NODE correcta -- Verificar OS para brindar mejor soporte de puppeter -- Limpiar sesion, borrar carpeta de sesion -- Seleccionar provider -- Poder usar un archivo .json con la configuración - -**Package Provider** - -> Es parte clave del proyecto la idea es poder tener la opcion de incluir otro proveedor de mensajeria como la api oficial o api de twilio - -- WhatsappWeb (_default_) -- Whatsapp API official -- Twilio - -**Package Input/Output** - -> Gestionar los diferentes mensajes entranates y poder responder, a la vez de mantener un registro de los datos + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} +``` --- From 2a0a9e79da5fce70a32c79fdfe146858a49cd4c6 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 10:11:10 +0100 Subject: [PATCH 081/459] added video to explain --- TODO.md | 7 ++----- packages/README.md | 2 ++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/TODO.md b/TODO.md index 908a210..6f62f18 100644 --- a/TODO.md +++ b/TODO.md @@ -8,8 +8,8 @@ - [ ] createDatabase validar implementacion de funciones ### @bot-whatsapp/database -- [ ] __(doc):__ Video para explicar como implementar nuevos database -- [ ] Mongo adapter +- [X] __(doc):__ Video para explicar como implementar nuevos database +- [X] Mongo adapter - [ ] MySQL adapter - [ ] JsonFile adapter @@ -21,6 +21,3 @@ - [ ] Meta adapter ### @bot-whatsapp/cli -- [ ] Mongo adapter -- [ ] MySQL adapter -- [ ] JsonFile adapter \ No newline at end of file diff --git a/packages/README.md b/packages/README.md index 0cdc2aa..1058e37 100644 --- a/packages/README.md +++ b/packages/README.md @@ -5,6 +5,8 @@ La idea es brindar multiples opciones como un adaptador de MySQL, Mongo, entre o Ejemplo de como se implementaria: +__[👉 Ver video explicativo](https://youtu.be/Sjzkpg1OJuY)__ + ```js const MongoAdapter = require('@bot-whatsapp/database/mongo') /// o From 976d8920613a8018d7229160c6cd40cd704554ca Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 10:13:01 +0100 Subject: [PATCH 082/459] added video to explain --- packages/{ => database}/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/{ => database}/README.md (100%) diff --git a/packages/README.md b/packages/database/README.md similarity index 100% rename from packages/README.md rename to packages/database/README.md From b3f6fc852b799c67dd9f2e7f4b2cadfcd6059357 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 10:29:30 +0100 Subject: [PATCH 083/459] added video to explain --- TODO.md | 3 +++ packages/database/README.md | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 6f62f18..ca9116f 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,6 @@ +### Genral +- [ ] __(doc)__ Video de como colaborar PR + ### @bot-whatsapp/bot - [X] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) - [X] .addKeyword('1') no funciona con 1 caracter diff --git a/packages/database/README.md b/packages/database/README.md index 1058e37..8c56d1a 100644 --- a/packages/database/README.md +++ b/packages/database/README.md @@ -5,7 +5,6 @@ La idea es brindar multiples opciones como un adaptador de MySQL, Mongo, entre o Ejemplo de como se implementaria: -__[👉 Ver video explicativo](https://youtu.be/Sjzkpg1OJuY)__ ```js const MongoAdapter = require('@bot-whatsapp/database/mongo') @@ -26,6 +25,14 @@ const main = async () => { } ``` +#### Video + +> Video explicando como debes de agregar nuevos adaptadores + + +@bot-whatsapp/database + + --- **Comunidad** From f466b0cf7b1af00e301f55561cbfc45564d42cda Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 10:31:44 +0100 Subject: [PATCH 084/459] added video to explain --- packages/database/README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/database/README.md b/packages/database/README.md index 8c56d1a..e226f15 100644 --- a/packages/database/README.md +++ b/packages/database/README.md @@ -28,11 +28,7 @@ const main = async () => { #### Video > Video explicando como debes de agregar nuevos adaptadores - - -@bot-whatsapp/database - - +[![Video](https://i.imgur.com/DlxJIKV.gif)](https://youtu.be/Sjzkpg1OJuY) --- **Comunidad** From 82a6b634a9dba00c99d1ec4232a873a4d340394b Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 11:48:25 +0100 Subject: [PATCH 085/459] increase 95% coverage --- .c8rc.json | 2 +- TODO.md | 3 +++ __mocks__/mock.provider.js | 8 ++++++-- package.json | 4 ++-- packages/DRAFT.md | 0 packages/bot/provider/provider.class.js | 8 -------- packages/bot/tests/bot.class.test.js | 19 ++++++++++++++++++- packages/database/package.json | 7 ++++--- packages/database/rollup-database.config.js | 4 ++-- packages/database/{ => src}/mock/index.js | 0 packages/database/{ => src}/mongo/index.js | 0 11 files changed, 36 insertions(+), 19 deletions(-) delete mode 100644 packages/DRAFT.md rename packages/database/{ => src}/mock/index.js (100%) rename packages/database/{ => src}/mongo/index.js (100%) diff --git a/.c8rc.json b/.c8rc.json index 81ecbe9..52f22b5 100644 --- a/.c8rc.json +++ b/.c8rc.json @@ -4,5 +4,5 @@ "reporter": ["html"], "report-dir": "./coverage", "check-coverage": true, - "lines": 90 + "lines": 95 } diff --git a/TODO.md b/TODO.md index ca9116f..b5bc535 100644 --- a/TODO.md +++ b/TODO.md @@ -2,6 +2,7 @@ - [ ] __(doc)__ Video de como colaborar PR ### @bot-whatsapp/bot +- [ ] agregar export package - [X] Posibilidad de en el capture meter todo un nuevo CTX de FLOW .addAnswer('Marca la opcion',{capture:true, join:CTX}) - [X] .addKeyword('1') no funciona con 1 caracter - [X] sensitivy viene activado por defecto @@ -11,12 +12,14 @@ - [ ] createDatabase validar implementacion de funciones ### @bot-whatsapp/database +- [ ] agregar export package - [X] __(doc):__ Video para explicar como implementar nuevos database - [X] Mongo adapter - [ ] MySQL adapter - [ ] JsonFile adapter ### @bot-whatsapp/provider +- [ ] agregar export package - [ ] __(doc):__ Video para explicar como implementar nuevos providers - [ ] WhatsappWeb provider enviar imagenes - [ ] WhatsappWeb provider enviar audio diff --git a/__mocks__/mock.provider.js b/__mocks__/mock.provider.js index 9dfd91c..67b793e 100644 --- a/__mocks__/mock.provider.js +++ b/__mocks__/mock.provider.js @@ -1,6 +1,9 @@ -const { EventEmitter } = require('node:events') +const ProviderClass = require('../packages/bot/provider/provider.class') +class MockProvider extends ProviderClass { + constructor() { + super() + } -class MockProvider extends EventEmitter { delaySendMessage = (miliseconds, eventName, payload) => new Promise((res) => setTimeout(() => { @@ -10,6 +13,7 @@ class MockProvider extends EventEmitter { ) sendMessage = async (userId, message) => { + console.log(`Enviando... ${userId}, ${message}`) return Promise.resolve({ userId, message }) } } diff --git a/package.json b/package.json index b7e2d85..b583267 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "link.dist": "cd packages/bot && npm link && cd ../provider && npm link && cd ../cli && npm link", "test.unit": "node ./node_modules/uvu/bin.js packages test", "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", - "test.coverage": "node ./node_modules/c8/bin/c8.js --check-coverage --lines=90 npm run test.unit", - "test": "npm run test.unit && npm run test.e2e", + "test.coverage": "node ./node_modules/c8/bin/c8.js npm run test.unit", + "test": "npm run test.coverage && npm run test.e2e", "cli": "node ./packages/cli/bin/cli.js", "dev:debug": "node --inspect ./example-app/app.js", "dev": "node ./example-app/app.js", diff --git a/packages/DRAFT.md b/packages/DRAFT.md deleted file mode 100644 index e69de29..0000000 diff --git a/packages/bot/provider/provider.class.js b/packages/bot/provider/provider.class.js index 53e45da..212f042 100644 --- a/packages/bot/provider/provider.class.js +++ b/packages/bot/provider/provider.class.js @@ -24,14 +24,6 @@ class ProviderClass extends EventEmitter { console.log('[sendMessage]', { userId, message }) return message } - - MockDelaySendMessage = (miliseconds, eventName, payload) => - new Promise((res) => - setTimeout(() => { - this.emit(eventName, payload) - res - }, miliseconds) - ) } module.exports = ProviderClass diff --git a/packages/bot/tests/bot.class.test.js b/packages/bot/tests/bot.class.test.js index 836e0a3..74fdb79 100644 --- a/packages/bot/tests/bot.class.test.js +++ b/packages/bot/tests/bot.class.test.js @@ -1,7 +1,14 @@ const { test } = require('uvu') const assert = require('uvu/assert') +const FlowClass = require('../io/flow.class') const MockProvider = require('../../../__mocks__/mock.provider') -const { createBot, CoreClass } = require('../index') +const { + createBot, + CoreClass, + createFlow, + createProvider, + ProviderClass, +} = require('../index') class MockFlow { allCallbacks = [{ callback: () => console.log('') }] @@ -55,6 +62,16 @@ test(`[CoreClass] Probando instanciamiento de clase`, async () => { assert.is(bot instanceof CoreClass, true) }) +test(`[CoreClass createFlow] Probando instanciamiento de clase`, async () => { + const mockCreateFlow = createFlow([]) + assert.is(mockCreateFlow instanceof FlowClass, true) +}) + +test(`[CoreClass createProvider] Probando instanciamiento de clase`, async () => { + const mockCreateProvider = createProvider(MockProvider) + assert.is(mockCreateProvider instanceof ProviderClass, true) +}) + test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => { let responseEvents = {} diff --git a/packages/database/package.json b/packages/database/package.json index 7c199db..493f8e9 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -12,7 +12,8 @@ "dotenv": "^16.0.3", "mongodb": "^4.11.0" }, - "files": [ - "./lib/*" - ] + "exports": { + "./mock": "./lib/mock/index.cjs", + "./mongo": "./lib/mongo/index.cjs" + } } diff --git a/packages/database/rollup-database.config.js b/packages/database/rollup-database.config.js index f99232d..234425e 100644 --- a/packages/database/rollup-database.config.js +++ b/packages/database/rollup-database.config.js @@ -3,7 +3,7 @@ const { join } = require('path') module.exports = [ { - input: join(__dirname, 'mock', 'index.js'), + input: join(__dirname, 'src', 'mock', 'index.js'), output: { file: join(__dirname, 'lib', 'mock', 'index.cjs'), format: 'cjs', @@ -11,7 +11,7 @@ module.exports = [ plugins: [commonjs()], }, { - input: join(__dirname, 'mongo', 'index.js'), + input: join(__dirname, 'src', 'mongo', 'index.js'), output: { file: join(__dirname, 'lib', 'mongo', 'index.cjs'), format: 'cjs', diff --git a/packages/database/mock/index.js b/packages/database/src/mock/index.js similarity index 100% rename from packages/database/mock/index.js rename to packages/database/src/mock/index.js diff --git a/packages/database/mongo/index.js b/packages/database/src/mongo/index.js similarity index 100% rename from packages/database/mongo/index.js rename to packages/database/src/mongo/index.js From d2acb641c5366d40872ae311b8132093f1bb1ed8 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 11:49:28 +0100 Subject: [PATCH 086/459] increase 95% coverage --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa3a7b0..350fd80 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,5 +22,4 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm install - run: npm run build --if-present - - run: npm run test.unit - - run: npm run test.coverage + - run: npm run test From 9fddcef271fac1b234415ca64d86f00b544cee1c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 11:51:40 +0100 Subject: [PATCH 087/459] update ci --- .github/workflows/ci.yml | 4 +++- TODO.md | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 350fd80..bf0d5cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,4 +22,6 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm install - run: npm run build --if-present - - run: npm run test + - run: npm run test.unit + - run: npm run test.e2e + - run: npm run test.coverage diff --git a/TODO.md b/TODO.md index b5bc535..4082896 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,6 @@ ### Genral - [ ] __(doc)__ Video de como colaborar PR +- [ ] __(doc)__ Video implementación de test y cobertura ### @bot-whatsapp/bot - [ ] agregar export package From e33509789cbec5dc18ff78d7be91c38bda9a2700 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 11:53:35 +0100 Subject: [PATCH 088/459] update ci --- .github/workflows/ci.yml | 1 - TODO.md | 1 + package.json | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf0d5cc..fa3a7b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,5 +23,4 @@ jobs: - run: npm install - run: npm run build --if-present - run: npm run test.unit - - run: npm run test.e2e - run: npm run test.coverage diff --git a/TODO.md b/TODO.md index 4082896..a375d15 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,7 @@ ### Genral - [ ] __(doc)__ Video de como colaborar PR - [ ] __(doc)__ Video implementación de test y cobertura +- [ ] __(doc)__ Video explicacion de github action ### @bot-whatsapp/bot - [ ] agregar export package diff --git a/package.json b/package.json index b583267..15ffc28 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "build": "yarn run cli:rollup && yarn run bot:rollup && yarn run provider:rollup && yarn run database:rollup", "link.dist": "cd packages/bot && npm link && cd ../provider && npm link && cd ../cli && npm link", "test.unit": "node ./node_modules/uvu/bin.js packages test", - "test.e2e": "node ./node_modules/uvu/bin.js __tests__ test", "test.coverage": "node ./node_modules/c8/bin/c8.js npm run test.unit", "test": "npm run test.coverage && npm run test.e2e", "cli": "node ./packages/cli/bin/cli.js", From ec7007071e0cf9ed94ea2b92853c065320ae051a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 11:54:22 +0100 Subject: [PATCH 089/459] update ci --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 15ffc28..c9dfe51 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "link.dist": "cd packages/bot && npm link && cd ../provider && npm link && cd ../cli && npm link", "test.unit": "node ./node_modules/uvu/bin.js packages test", "test.coverage": "node ./node_modules/c8/bin/c8.js npm run test.unit", - "test": "npm run test.coverage && npm run test.e2e", + "test": "npm run test.coverage", "cli": "node ./packages/cli/bin/cli.js", "dev:debug": "node --inspect ./example-app/app.js", "dev": "node ./example-app/app.js", From 21cfc498e8c352365f00b55044d71fe3f5f6c427 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 12:05:09 +0100 Subject: [PATCH 090/459] docs: doc --- .husky/prepare-commit-msg | 4 + package-lock.json | 1368 ++++++++++++++++++++++++++++++++++++- package.json | 14 +- yarn.lock | 850 ++++++++++++++++++++++- 4 files changed, 2194 insertions(+), 42 deletions(-) create mode 100644 .husky/prepare-commit-msg diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg new file mode 100644 index 0000000..5abf1f1 --- /dev/null +++ b/.husky/prepare-commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +exec < /dev/tty && node_modules/.bin/cz --hook || true diff --git a/package-lock.json b/package-lock.json index fecb4f4..86d4cb0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,19 +12,18 @@ "packages/*", "docs" ], - "dependencies": { - "@bot-whatsapp/database": "^0.0.1", - "@bot-whatsapp/provider": "^0.0.1" - }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", "@rollup/plugin-json": "^5.0.1", "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-replace": "^5.0.1", "c8": "^7.12.0", + "commitizen": "^4.2.5", "cross-env": "^7.0.3", + "cz-conventional-changelog": "^3.3.0", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", + "husky": "^8.0.2", "prettier": "^2.7.1", "prompts": "^2.4.2", "rimraf": "^3.0.2", @@ -1162,6 +1161,122 @@ "node": ">=14.0.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "optional": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "optional": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "optional": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "optional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -1185,6 +1300,162 @@ "resolved": "packages/provider", "link": true }, + "node_modules/@commitlint/config-validator": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.1.0.tgz", + "integrity": "sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/types": "^17.0.0", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "optional": true + }, + "node_modules/@commitlint/execute-rule": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.0.0.tgz", + "integrity": "sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/load": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.3.0.tgz", + "integrity": "sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/config-validator": "^17.1.0", + "@commitlint/execute-rule": "^17.0.0", + "@commitlint/resolve-extends": "^17.3.0", + "@commitlint/types": "^17.0.0", + "@types/node": "^14.0.0", + "chalk": "^4.1.0", + "cosmiconfig": "^7.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0", + "resolve-from": "^5.0.0", + "ts-node": "^10.8.1", + "typescript": "^4.6.4" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/load/node_modules/@types/node": { + "version": "14.18.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", + "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "dev": true, + "optional": true + }, + "node_modules/@commitlint/load/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.3.0.tgz", + "integrity": "sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/config-validator": "^17.1.0", + "@commitlint/types": "^17.0.0", + "import-fresh": "^3.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/types": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.0.0.tgz", + "integrity": "sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==", + "dev": true, + "optional": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "optional": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "optional": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -1482,6 +1753,34 @@ } } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "optional": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "optional": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "optional": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true, + "optional": true + }, "node_modules/@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", @@ -1530,6 +1829,13 @@ "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "license": "MIT" }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true, + "optional": true + }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", @@ -1576,6 +1882,16 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1593,6 +1909,33 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1619,6 +1962,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "optional": true + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1636,6 +1986,15 @@ "node": ">=8" } }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1663,6 +2022,17 @@ ], "license": "MIT" }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -1770,6 +2140,15 @@ "node": ">=10.12.0" } }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1797,6 +2176,45 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -1809,6 +2227,15 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1836,6 +2263,72 @@ "dev": true, "license": "MIT" }, + "node_modules/commitizen": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.2.5.tgz", + "integrity": "sha512-9sXju8Qrz1B4Tw7kC5KhnvwYQN88qs2zbiB8oyMsnXZyJ24PPGiNM3nHr73d32dnE3i8VJEXddBFIbOgYSEXtQ==", + "dev": true, + "dependencies": { + "cachedir": "2.3.0", + "cz-conventional-changelog": "3.3.0", + "dedent": "0.7.0", + "detect-indent": "6.1.0", + "find-node-modules": "^2.1.2", + "find-root": "1.1.0", + "fs-extra": "9.1.0", + "glob": "7.2.3", + "inquirer": "8.2.4", + "is-utf8": "^0.2.1", + "lodash": "4.17.21", + "minimist": "1.2.6", + "strip-bom": "4.0.0", + "strip-json-comments": "3.1.1" + }, + "bin": { + "commitizen": "bin/commitizen", + "cz": "bin/git-cz", + "git-cz": "bin/git-cz" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commitizen/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/commitizen/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/commitizen/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1850,6 +2343,12 @@ "dev": true, "license": "MIT" }, + "node_modules/conventional-commit-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", + "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", + "dev": true + }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -1857,6 +2356,47 @@ "dev": true, "license": "MIT" }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.2.0.tgz", + "integrity": "sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=3" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "optional": true + }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -1891,6 +2431,97 @@ "node": ">= 8" } }, + "node_modules/cz-conventional-changelog": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", + "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" + } + }, + "node_modules/cz-conventional-changelog/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cz-conventional-changelog/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cz-conventional-changelog/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/cz-conventional-changelog/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cz-conventional-changelog/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cz-conventional-changelog/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1909,6 +2540,12 @@ } } }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1926,6 +2563,18 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/denque": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", @@ -1945,6 +2594,24 @@ "node": ">=6" } }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-package-manager": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", @@ -1994,6 +2661,14 @@ "node": ">=6.0.0" } }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2001,6 +2676,16 @@ "dev": true, "license": "MIT" }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "optional": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2242,6 +2927,32 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2320,6 +3031,30 @@ "reusify": "^1.0.4" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2346,6 +3081,22 @@ "node": ">=8" } }, + "node_modules/find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "dev": true, + "dependencies": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2363,6 +3114,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -2484,6 +3250,61 @@ "node": ">=10.13.0" } }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "optional": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", @@ -2557,6 +3378,18 @@ "node": ">=8" } }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -2574,6 +3407,33 @@ "node": ">=10.17.0" } }, + "node_modules/husky": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", + "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -2649,12 +3509,51 @@ "dev": true, "license": "ISC" }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "license": "MIT" }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "optional": true + }, "node_modules/is-builtin-module": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", @@ -2717,6 +3616,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -2777,6 +3685,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2855,6 +3790,13 @@ "dev": true, "license": "MIT" }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "optional": true + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2868,6 +3810,13 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "optional": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2916,6 +3865,13 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "optional": true + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2932,6 +3888,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "optional": true + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2939,6 +3914,45 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "optional": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "optional": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/longest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", + "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/magic-string": { "version": "0.26.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", @@ -2968,6 +3982,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "optional": true + }, "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -2975,6 +3996,12 @@ "license": "MIT", "optional": true }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3029,6 +4056,12 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, "node_modules/mongodb": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.11.0.tgz", @@ -3075,6 +4108,12 @@ "dev": true, "license": "MIT" }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3139,6 +4178,38 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -3184,6 +4255,34 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "optional": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3340,6 +4439,20 @@ ], "license": "MIT" }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -3363,6 +4476,16 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -3381,6 +4504,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3391,6 +4527,32 @@ "node": ">=4" } }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "optional": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -3486,6 +4648,15 @@ "dev": true, "license": "MIT" }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3510,6 +4681,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -3523,6 +4703,32 @@ "node": ">=6" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "node_modules/saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", @@ -3644,6 +4850,15 @@ "memory-pager": "^1.0.2" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3672,6 +4887,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -3750,6 +4974,24 @@ "dev": true, "license": "MIT" }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3775,12 +5017,66 @@ "node": ">=12" } }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "optional": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD", - "optional": true + "devOptional": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -3808,6 +5104,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typescript": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "dev": true, + "optional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -3828,6 +5138,12 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -3857,6 +5173,13 @@ "node": ">=8" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "optional": true + }, "node_modules/v8-to-istanbul": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", @@ -3872,6 +5195,15 @@ "node": ">=10.12.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -3955,6 +5287,16 @@ "node": ">=10" } }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -3984,6 +5326,16 @@ "node": ">=10" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -4001,6 +5353,9 @@ "name": "@bot-whatsapp/bot", "version": "0.0.1", "license": "ISC", + "dependencies": { + "dotenv": "^16.0.3" + }, "devDependencies": { "@bot-whatsapp/cli": "*", "@bot-whatsapp/database": "*", @@ -4026,6 +5381,7 @@ "version": "0.0.1", "license": "ISC", "dependencies": { + "dotenv": "^16.0.3", "mongodb": "^4.11.0" }, "devDependencies": {} diff --git a/package.json b/package.json index c9dfe51..bc76e3f 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "app.js", "private": true, "scripts": { + "commit": "git-cz", "cli:rollup": "rollup --config ./packages/cli/rollup-cli.config.js ", "bot:rollup": "rollup --config ./packages/bot/rollup-bot.config.js", "provider:rollup": "rollup --config ./packages/provider/rollup-provider.config.js ", @@ -52,21 +53,28 @@ "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-replace": "^5.0.1", "c8": "^7.12.0", + "commitizen": "^4.2.5", "cross-env": "^7.0.3", + "cz-conventional-changelog": "^3.3.0", "eslint": "^8.26.0", "eslint-config-prettier": "^8.5.0", + "husky": "^8.0.2", "prettier": "^2.7.1", "prompts": "^2.4.2", "rimraf": "^3.0.2", "rollup": "^3.2.3", "rollup-plugin-cleanup": "^3.2.1", "rollup-plugin-copy": "^3.4.0", - "uvu": "^0.5.6", - "husky": "^8.0.2" + "uvu": "^0.5.6" }, "packageManager": "yarn@3.2.0", "engines": { "node": ">=16" }, - "author": "Leifer Mendez " + "author": "Leifer Mendez ", + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + } } diff --git a/yarn.lock b/yarn.lock index d9b350c..ae8c697 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,15 +23,6 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" - integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== - dependencies: - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - "@aws-crypto/sha256-js@^2.0.0": version "2.0.2" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz" @@ -41,6 +32,15 @@ "@aws-sdk/types" "^3.110.0" tslib "^1.11.1" +"@aws-crypto/sha256-js@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" + integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + "@aws-crypto/supports-web-crypto@^2.0.0": version "2.0.2" resolved "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz" @@ -590,7 +590,7 @@ "@aws-sdk/types" "3.208.0" tslib "^2.3.1" -"@aws-sdk/types@3.208.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0": +"@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0", "@aws-sdk/types@3.208.0": version "3.208.0" resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.208.0.tgz" integrity sha512-5AuOPtY1Hdf4xoEo+voRijl3OnFm8IB+oITXl+SN2iASJv+XPnRNw/QVbIxfGeWgWhmK31F+XdjTYsjT2rx8Qw== @@ -717,7 +717,7 @@ "@aws-sdk/types" "3.208.0" tslib "^2.3.1" -"@aws-sdk/util-utf8-browser@3.188.0", "@aws-sdk/util-utf8-browser@^3.0.0": +"@aws-sdk/util-utf8-browser@^3.0.0", "@aws-sdk/util-utf8-browser@3.188.0": version "3.188.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz" integrity sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q== @@ -732,11 +732,115 @@ "@aws-sdk/util-buffer-from" "3.208.0" tslib "^2.3.1" +"@babel/code-frame@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@bot-whatsapp/bot@*", "@bot-whatsapp/bot@file:F:\\Codigo\\bot-whatsapp\\packages\\bot": + version "0.0.1" + resolved "file:packages/bot" + dependencies: + dotenv "^16.0.3" + +"@bot-whatsapp/cli@*", "@bot-whatsapp/cli@file:F:\\Codigo\\bot-whatsapp\\packages\\cli": + version "0.0.1" + resolved "file:packages/cli" + +"@bot-whatsapp/database@*", "@bot-whatsapp/database@file:F:\\Codigo\\bot-whatsapp\\packages\\database": + version "0.0.1" + resolved "file:packages/database" + dependencies: + dotenv "^16.0.3" + mongodb "^4.11.0" + +"@bot-whatsapp/provider@*", "@bot-whatsapp/provider@file:F:\\Codigo\\bot-whatsapp\\packages\\provider": + version "0.0.1" + resolved "file:packages/provider" + dependencies: + "@bot-whatsapp/bot" "*" + qr-image "^3.2.0" + +"@commitlint/config-validator@^17.1.0": + version "17.1.0" + resolved "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.1.0.tgz" + integrity sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg== + dependencies: + "@commitlint/types" "^17.0.0" + ajv "^8.11.0" + +"@commitlint/execute-rule@^17.0.0": + version "17.0.0" + resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.0.0.tgz" + integrity sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ== + +"@commitlint/load@>6.1.1": + version "17.3.0" + resolved "https://registry.npmjs.org/@commitlint/load/-/load-17.3.0.tgz" + integrity sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw== + dependencies: + "@commitlint/config-validator" "^17.1.0" + "@commitlint/execute-rule" "^17.0.0" + "@commitlint/resolve-extends" "^17.3.0" + "@commitlint/types" "^17.0.0" + "@types/node" "^14.0.0" + chalk "^4.1.0" + cosmiconfig "^7.0.0" + cosmiconfig-typescript-loader "^4.0.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + lodash.uniq "^4.5.0" + resolve-from "^5.0.0" + ts-node "^10.8.1" + typescript "^4.6.4" + +"@commitlint/resolve-extends@^17.3.0": + version "17.3.0" + resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.3.0.tgz" + integrity sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg== + dependencies: + "@commitlint/config-validator" "^17.1.0" + "@commitlint/types" "^17.0.0" + import-fresh "^3.0.0" + lodash.mergewith "^4.6.2" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@commitlint/types@^17.0.0": + version "17.0.0" + resolved "https://registry.npmjs.org/@commitlint/types/-/types-17.0.0.tgz" + integrity sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ== + dependencies: + chalk "^4.1.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@eslint/eslintrc@^1.3.3": version "1.3.3" resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" @@ -776,12 +880,12 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jridgewell/resolve-uri@3.1.0": +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/sourcemap-codec@1.4.14": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -794,6 +898,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -802,7 +914,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -863,6 +975,26 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + "@types/estree@*", "@types/estree@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" @@ -898,6 +1030,16 @@ resolved "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz" integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== +"@types/node@^14.0.0": + version "14.18.33" + resolved "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz" + integrity sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/resolve@1.20.2": version "1.20.2" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz" @@ -921,7 +1063,12 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.8.0: +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.4.1, acorn@^8.8.0: version "8.8.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== @@ -936,11 +1083,35 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.11.0: + version "8.11.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -948,6 +1119,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" @@ -958,6 +1134,11 @@ array-union@^2.1.0: resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -968,6 +1149,15 @@ base64-js@^1.3.1: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bowser@^2.11.0: version "2.11.0" resolved "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" @@ -1002,7 +1192,7 @@ bson@^4.7.0: dependencies: buffer "^5.6.0" -buffer@^5.6.0: +buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -1033,12 +1223,35 @@ c8@^7.12.0: yargs "^16.2.0" yargs-parser "^20.2.9" +cachedir@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -chalk@^4.0.0: +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1046,6 +1259,28 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -1055,6 +1290,18 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" @@ -1067,11 +1314,36 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colorette@^1.1.0: version "1.4.0" resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== +commitizen@^4.0.3, commitizen@^4.2.5: + version "4.2.5" + resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.2.5.tgz" + integrity sha512-9sXju8Qrz1B4Tw7kC5KhnvwYQN88qs2zbiB8oyMsnXZyJ24PPGiNM3nHr73d32dnE3i8VJEXddBFIbOgYSEXtQ== + dependencies: + cachedir "2.3.0" + cz-conventional-changelog "3.3.0" + dedent "0.7.0" + detect-indent "6.1.0" + find-node-modules "^2.1.2" + find-root "1.1.0" + fs-extra "9.1.0" + glob "7.2.3" + inquirer "8.2.4" + is-utf8 "^0.2.1" + lodash "4.17.21" + minimist "1.2.6" + strip-bom "4.0.0" + strip-json-comments "3.1.1" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" @@ -1082,11 +1354,37 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +conventional-commit-types@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz" + integrity sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg== + convert-source-map@^1.6.0: version "1.9.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +cosmiconfig-typescript-loader@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.2.0.tgz" + integrity sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g== + +cosmiconfig@^7.0.0, cosmiconfig@>=7: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-env@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" @@ -1103,6 +1401,20 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cz-conventional-changelog@^3.3.0, cz-conventional-changelog@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz" + integrity sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw== + dependencies: + chalk "^2.4.1" + commitizen "^4.0.3" + conventional-commit-types "^3.0.0" + lodash.map "^4.5.1" + longest "^2.0.1" + word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" + debug@^4.1.1, debug@^4.3.2: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" @@ -1110,6 +1422,11 @@ debug@^4.1.1, debug@^4.3.2: dependencies: ms "2.1.2" +dedent@0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" @@ -1120,6 +1437,13 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + denque@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" @@ -1130,6 +1454,16 @@ dequal@^2.0.0: resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz" + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== + +detect-indent@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + detect-package-manager@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz" @@ -1137,6 +1471,11 @@ detect-package-manager@^2.0.1: dependencies: execa "^5.1.1" +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diff@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" @@ -1158,7 +1497,7 @@ doctrine@^3.0.0: dotenv@^16.0.3: version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz" integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== emoji-regex@^8.0.0: @@ -1166,11 +1505,23 @@ emoji-regex@^8.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" @@ -1206,7 +1557,7 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.26.0: +eslint@^8.26.0, eslint@>=5, eslint@>=7.0.0: version "8.27.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz" integrity sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ== @@ -1309,6 +1660,22 @@ execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" + integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== + dependencies: + homedir-polyfill "^1.0.1" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -1349,6 +1716,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" @@ -1363,6 +1737,19 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-node-modules@^2.1.2: + version "2.1.3" + resolved "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz" + integrity sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg== + dependencies: + findup-sync "^4.0.0" + merge "^2.1.1" + +find-root@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" @@ -1371,6 +1758,16 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +findup-sync@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz" + integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^4.0.2" + resolve-dir "^1.0.1" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" @@ -1401,16 +1798,21 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" @@ -1440,7 +1842,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3, glob@^7.1.4, glob@7.2.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -1463,6 +1865,33 @@ glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" +global-dirs@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz" + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== + dependencies: + ini "^1.3.4" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz" + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + globals@^13.15.0: version "13.17.0" resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" @@ -1494,6 +1923,11 @@ grapheme-splitter@^1.0.4: resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" @@ -1506,6 +1940,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" @@ -1518,9 +1959,16 @@ human-signals@^2.1.0: husky@^8.0.2: version "8.0.2" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.2.tgz#5816a60db02650f1f22c8b69b928fd6bcd77a236" + resolved "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz" integrity sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg== +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + ieee754@^1.1.13: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" @@ -1552,16 +2000,47 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@^2.0.3, inherits@^2.0.4, inherits@2: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@8.2.4: + version "8.2.4" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + ip@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-builtin-module@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz" @@ -1593,6 +2072,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" @@ -1625,6 +2109,21 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -1666,6 +2165,11 @@ js-sdsl@^4.1.4: resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz" integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" @@ -1673,11 +2177,21 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" @@ -1690,6 +2204,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" @@ -1708,6 +2231,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -1715,11 +2243,49 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.map@^4.5.1: + version "4.6.0" + resolved "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz" + integrity sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.mergewith@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.21, lodash@4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +longest@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz" + integrity sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q== + magic-string@^0.25.7: version "0.25.9" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" @@ -1741,6 +2307,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + memory-pager@^1.0.2: version "1.5.0" resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" @@ -1751,12 +2322,17 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -1783,6 +2359,11 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimist@1.2.6: + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + mongodb-connection-string-url@^2.5.4: version "2.5.4" resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz" @@ -1814,6 +2395,11 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" @@ -1833,7 +2419,7 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -1852,6 +2438,26 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + p-limit@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" @@ -1873,6 +2479,21 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -1941,6 +2562,15 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + regexpp@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" @@ -1951,11 +2581,36 @@ require-directory@^2.1.1: resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" + resolve@^1.22.1: version "1.22.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" @@ -1965,6 +2620,14 @@ resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -2003,13 +2666,18 @@ rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@^3.2.3: +rollup@^1.20.0||^2.0.0||^3.0.0, rollup@^2.68.0||^3.0.0, rollup@^2.78.0||^3.0.0, rollup@^3.2.3, rollup@>=2.0: version "3.3.0" resolved "https://registry.npmjs.org/rollup/-/rollup-3.3.0.tgz" integrity sha512-wqOV/vUJCYEbWsXvwCkgGWvgaEnsbn4jxBQWKpN816CqsmCimDmCNJI83c6if7QVD4v/zlyRzxN7U2yDT5rfoA== optionalDependencies: fsevents "~2.3.2" +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" @@ -2017,6 +2685,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^7.5.5: + version "7.5.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== + dependencies: + tslib "^2.1.0" + sade@^1.7.3: version "1.8.1" resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" @@ -2024,6 +2699,16 @@ sade@^1.7.3: dependencies: mri "^1.1.0" +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + saslprep@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz" @@ -2093,6 +2778,13 @@ sparse-bitfield@^3.0.3: dependencies: memory-pager "^1.0.2" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -2109,12 +2801,17 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -2124,6 +2821,13 @@ strnum@^1.0.5: resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" @@ -2150,6 +2854,18 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -2164,12 +2880,31 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" +ts-node@^10.8.1, ts-node@>=10: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^1.11.1: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.3.1: +tslib@^2.1.0, tslib@^2.3.1: version "2.4.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== @@ -2186,11 +2921,26 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@^4.6.4, typescript@>=2.7, typescript@>=3: + version "4.9.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== + universalify@^0.1.0: version "0.1.2" resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" @@ -2198,6 +2948,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" @@ -2213,6 +2968,11 @@ uvu@^0.5.6: kleur "^4.0.3" sade "^1.7.3" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + v8-to-istanbul@^9.0.0: version "9.0.1" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" @@ -2222,6 +2982,13 @@ v8-to-istanbul@^9.0.0: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" @@ -2235,6 +3002,13 @@ whatwg-url@^11.0.0: tr46 "^3.0.0" webidl-conversions "^7.0.0" +which@^1.2.14: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -2242,7 +3016,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@^1.2.3: +word-wrap@^1.0.3, word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -2266,6 +3040,11 @@ y18n@^5.0.5: resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" @@ -2284,6 +3063,11 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" From 1856bd50228dd8d82a992b03a6c1e31b264c032b Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 12:10:06 +0100 Subject: [PATCH 091/459] style: added commitizen flag --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 28971ac..58bb321 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Test / Coverage](https://github.com/leifermendez/bot-whatsapp/actions/workflows/ci.yml/badge.svg)](https://github.com/leifermendez/bot-whatsapp/actions/workflows/ci.yml) - +[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) - [ ] Evitar dependencias **Comunidad** From 46c4ec7ab9079b62924dac293f4fff9f623aafb5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 28 Nov 2022 12:55:30 +0100 Subject: [PATCH 092/459] docs(websitedoc): added new website --- .github/workflows/publish-doc.yml | 24 + .gitignore | 2 + .prettierignore | 1 + TODO.md | 2 +- package-lock.json | 4647 ++++++++++++++++- package.json | 7 +- packages/docs/.eslintignore | 33 + packages/docs/.eslintrc.cjs | 40 + packages/docs/.gitignore | 41 + packages/docs/.node-version | 1 + packages/docs/.prettierignore | 6 + packages/docs/README.md | 112 + .../adaptors/cloudflare-pages/vite.config.ts | 19 + packages/docs/functions/[[path]].ts | 5 + packages/docs/package.json | 41 + packages/docs/public/_headers | 4 + packages/docs/public/_redirects | 1 + packages/docs/public/favicon.svg | 1 + packages/docs/public/manifest.json | 9 + packages/docs/public/robots.txt | 0 .../components/breadcrumbs/breadcrumbs.css | 25 + .../components/breadcrumbs/breadcrumbs.tsx | 74 + .../docs/src/components/footer/footer.css | 22 + .../docs/src/components/footer/footer.tsx | 36 + .../docs/src/components/header/header.css | 34 + .../docs/src/components/header/header.tsx | 26 + packages/docs/src/components/icons/qwik.tsx | 20 + packages/docs/src/components/menu/menu.css | 13 + packages/docs/src/components/menu/menu.tsx | 36 + .../components/on-this-page/on-this-page.css | 33 + .../components/on-this-page/on-this-page.tsx | 62 + .../components/router-head/router-head.tsx | 32 + packages/docs/src/entry.cloudflare-pages.tsx | 16 + packages/docs/src/entry.dev.tsx | 17 + packages/docs/src/entry.preview.tsx | 20 + packages/docs/src/entry.ssr.tsx | 27 + packages/docs/src/global.css | 66 + packages/docs/src/root.tsx | 26 + packages/docs/src/routes/about-us/index.md | 15 + .../docs/src/routes/docs/advanced/index.md | 11 + packages/docs/src/routes/docs/docs.css | 22 + .../src/routes/docs/getting-started/index.md | 13 + packages/docs/src/routes/docs/index.md | 22 + packages/docs/src/routes/docs/layout.tsx | 25 + packages/docs/src/routes/docs/menu.md | 21 + packages/docs/src/routes/index.tsx | 151 + packages/docs/src/routes/layout.tsx | 15 + packages/docs/src/routes/service-worker.ts | 18 + packages/docs/tsconfig.json | 25 + packages/docs/vite.config.ts | 15 + packages/{ => provider}/COMMON_MISTAKE.md | 0 packages/{ => provider}/EXAMPLE.md | 0 packages/rollup-cli.config.js | 10 - yarn.lock | 1927 ++++++- 54 files changed, 7651 insertions(+), 220 deletions(-) create mode 100644 .github/workflows/publish-doc.yml create mode 100644 packages/docs/.eslintignore create mode 100644 packages/docs/.eslintrc.cjs create mode 100644 packages/docs/.gitignore create mode 100644 packages/docs/.node-version create mode 100644 packages/docs/.prettierignore create mode 100644 packages/docs/README.md create mode 100644 packages/docs/adaptors/cloudflare-pages/vite.config.ts create mode 100644 packages/docs/functions/[[path]].ts create mode 100644 packages/docs/package.json create mode 100644 packages/docs/public/_headers create mode 100644 packages/docs/public/_redirects create mode 100644 packages/docs/public/favicon.svg create mode 100644 packages/docs/public/manifest.json create mode 100644 packages/docs/public/robots.txt create mode 100644 packages/docs/src/components/breadcrumbs/breadcrumbs.css create mode 100644 packages/docs/src/components/breadcrumbs/breadcrumbs.tsx create mode 100644 packages/docs/src/components/footer/footer.css create mode 100644 packages/docs/src/components/footer/footer.tsx create mode 100644 packages/docs/src/components/header/header.css create mode 100644 packages/docs/src/components/header/header.tsx create mode 100644 packages/docs/src/components/icons/qwik.tsx create mode 100644 packages/docs/src/components/menu/menu.css create mode 100644 packages/docs/src/components/menu/menu.tsx create mode 100644 packages/docs/src/components/on-this-page/on-this-page.css create mode 100644 packages/docs/src/components/on-this-page/on-this-page.tsx create mode 100644 packages/docs/src/components/router-head/router-head.tsx create mode 100644 packages/docs/src/entry.cloudflare-pages.tsx create mode 100644 packages/docs/src/entry.dev.tsx create mode 100644 packages/docs/src/entry.preview.tsx create mode 100644 packages/docs/src/entry.ssr.tsx create mode 100644 packages/docs/src/global.css create mode 100644 packages/docs/src/root.tsx create mode 100644 packages/docs/src/routes/about-us/index.md create mode 100644 packages/docs/src/routes/docs/advanced/index.md create mode 100644 packages/docs/src/routes/docs/docs.css create mode 100644 packages/docs/src/routes/docs/getting-started/index.md create mode 100644 packages/docs/src/routes/docs/index.md create mode 100644 packages/docs/src/routes/docs/layout.tsx create mode 100644 packages/docs/src/routes/docs/menu.md create mode 100644 packages/docs/src/routes/index.tsx create mode 100644 packages/docs/src/routes/layout.tsx create mode 100644 packages/docs/src/routes/service-worker.ts create mode 100644 packages/docs/tsconfig.json create mode 100644 packages/docs/vite.config.ts rename packages/{ => provider}/COMMON_MISTAKE.md (100%) rename packages/{ => provider}/EXAMPLE.md (100%) delete mode 100644 packages/rollup-cli.config.js diff --git a/.github/workflows/publish-doc.yml b/.github/workflows/publish-doc.yml new file mode 100644 index 0000000..09a84ff --- /dev/null +++ b/.github/workflows/publish-doc.yml @@ -0,0 +1,24 @@ +on: [push] + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + deployments: write + name: Publish Docs + steps: + - name: Checkout + uses: actions/checkout@v3 + + - run: npm install + - run: npm run build --if-present + + - name: Publish Docs + uses: cloudflare/pages-action@1 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + projectName: bot-whatsapp-docs + directory: packages/docs/dist + gitHubToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index f443149..5de4cd8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ /node_modules /packages/*/node_modules +/packages/*/dist +/packages/*/docs/dist session.json chats/* !chats/.gitkeep diff --git a/.prettierignore b/.prettierignore index a46192d..4f7ce3d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ packages/**/lib +packages/docs **/.git **/.svn **/.hg diff --git a/TODO.md b/TODO.md index a375d15..27112ed 100644 --- a/TODO.md +++ b/TODO.md @@ -14,7 +14,7 @@ - [ ] createDatabase validar implementacion de funciones ### @bot-whatsapp/database -- [ ] agregar export package +- [X] agregar export package - [X] __(doc):__ Video para explicar como implementar nuevos database - [X] Mongo adapter - [ ] MySQL adapter diff --git a/package-lock.json b/package-lock.json index 86d4cb0..df77967 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,11 @@ "version": "0.0.1", "license": "ISC", "workspaces": [ - "packages/*", - "docs" + "packages/bot", + "packages/cli", + "packages/database", + "packages/provider", + "packages/docs" ], "devDependencies": { "@rollup/plugin-commonjs": "^23.0.2", @@ -1166,6 +1169,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@babel/highlight": "^7.18.6" @@ -1179,6 +1183,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6.9.0" @@ -1189,6 +1194,7 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", @@ -1204,6 +1210,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "color-convert": "^1.9.0" @@ -1217,6 +1224,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "ansi-styles": "^3.2.1", @@ -1232,6 +1240,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "color-name": "1.1.3" @@ -1242,23 +1251,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, + "license": "MIT", "optional": true }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=4" @@ -1269,6 +1270,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "has-flag": "^3.0.0" @@ -1300,11 +1302,47 @@ "resolved": "packages/provider", "link": true }, + "node_modules/@builder.io/qwik": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@builder.io/qwik/-/qwik-0.14.1.tgz", + "integrity": "sha512-bHAWSK2kaJ8VxYsR85/0cj/dbzp2dfzjWZDWoH8gKy2PZw+PYGh+vIsQE0H+Xu3WIkwkkyi8PdWA1H/Qp9MSng==", + "dev": true, + "license": "MIT", + "bin": { + "qwik": "qwik.cjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@builder.io/qwik-city": { + "version": "0.0.127", + "resolved": "https://registry.npmjs.org/@builder.io/qwik-city/-/qwik-city-0.0.127.tgz", + "integrity": "sha512-YvB4MZ8Hm+B+L9SQMKibcqe23EbQuRHUQ9IfZ6aUWgWKA2fMYDIcU/XO9nLtjUabr23Y5ALpx1Ak2Mu9WAe/7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "2.1.5", + "@types/mdx": "2.0.3", + "source-map": "0.7.4", + "vfile": "5.3.6" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz", + "integrity": "sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==", + "dev": true, + "dependencies": { + "mime": "^3.0.0" + } + }, "node_modules/@commitlint/config-validator": { "version": "17.1.0", "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.1.0.tgz", "integrity": "sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@commitlint/types": "^17.0.0", @@ -1319,6 +1357,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -1336,6 +1375,7 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/@commitlint/execute-rule": { @@ -1343,6 +1383,7 @@ "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.0.0.tgz", "integrity": "sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=v14" @@ -1353,6 +1394,7 @@ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.3.0.tgz", "integrity": "sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@commitlint/config-validator": "^17.1.0", @@ -1379,16 +1421,81 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", "dev": true, + "license": "MIT", "optional": true }, - "node_modules/@commitlint/load/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.2.0.tgz", + "integrity": "sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==", "dev": true, + "license": "MIT", "optional": true, "engines": { - "node": ">=8" + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=3" + } + }, + "node_modules/@commitlint/load/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@commitlint/load/node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, "node_modules/@commitlint/resolve-extends": { @@ -1396,6 +1503,7 @@ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.3.0.tgz", "integrity": "sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@commitlint/config-validator": "^17.1.0", @@ -1409,21 +1517,12 @@ "node": ">=v14" } }, - "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@commitlint/types": { "version": "17.0.0", "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.0.0.tgz", "integrity": "sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "chalk": "^4.1.0" @@ -1437,6 +1536,7 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -1450,12 +1550,86 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@cush/relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@cush/relative/-/relative-1.0.0.tgz", + "integrity": "sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@esbuild-plugins/node-globals-polyfill": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz", + "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", + "dev": true, + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/@esbuild-plugins/node-modules-polyfill": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz", + "integrity": "sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0", + "rollup-plugin-node-polyfills": "^0.2.1" + }, + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/@esbuild-plugins/node-modules-polyfill/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.16.tgz", + "integrity": "sha512-nyB6CH++2mSgx3GbnrJsZSxzne5K0HMyNIWafDHqYy7IwxFc4fd/CgHVZXr8Eh+Q3KbIAcAe3vGyqIPhGblvMQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.16.tgz", + "integrity": "sha512-SDLfP1uoB0HZ14CdVYgagllgrG7Mdxhkt4jDJOKl/MldKrkQ6vDJMZKl2+5XsEY/Lzz37fjgLQoJBGuAw/x8kQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -1516,6 +1690,12 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -1554,6 +1734,300 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@mdx-js/mdx": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.5.tgz", + "integrity": "sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/mdx": "^2.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@miniflare/cache": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.10.0.tgz", + "integrity": "sha512-nzEqFVPnD7Yf0HMDv7gCPpf4NSXfjhc+zg3gSwUS4Dad5bWV10B1ujTZW6HxQulW3CBHIg616mTjXIiaimVuEQ==", + "dev": true, + "dependencies": { + "@miniflare/core": "2.10.0", + "@miniflare/shared": "2.10.0", + "http-cache-semantics": "^4.1.0", + "undici": "5.9.1" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/cli-parser": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.10.0.tgz", + "integrity": "sha512-NAiCtqlHTUKCmV+Jl9af+ixGmMhiGhIyIfr/vCdbismNEBxEsrQGg3sQYTNfvCkdHtODurQqayQreFq21OuEow==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0", + "kleur": "^4.1.4" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/core": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.10.0.tgz", + "integrity": "sha512-Jx1M5oXQua0jzsJVdZSq07baVRmGC/6JkglrPQGAlZ7gQ1sunVZzq9fjxFqj0bqfEuYS0Wy6+lvK4rOAHISIjw==", + "dev": true, + "dependencies": { + "@iarna/toml": "^2.2.5", + "@miniflare/queues": "2.10.0", + "@miniflare/shared": "2.10.0", + "@miniflare/watcher": "2.10.0", + "busboy": "^1.6.0", + "dotenv": "^10.0.0", + "kleur": "^4.1.4", + "set-cookie-parser": "^2.4.8", + "undici": "5.9.1", + "urlpattern-polyfill": "^4.0.3" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/core/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@miniflare/d1": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/d1/-/d1-2.10.0.tgz", + "integrity": "sha512-mOYZSmpTthH0tmFTQ+O9G0Q+iDAd7oiUtoIBianlKa9QiqYAoO7EBUPy6kUgDHXapOcN5Ri1u3J5UTpxXvw3qg==", + "dev": true, + "dependencies": { + "@miniflare/core": "2.10.0", + "@miniflare/shared": "2.10.0" + }, + "engines": { + "node": ">=16.7" + } + }, + "node_modules/@miniflare/durable-objects": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.10.0.tgz", + "integrity": "sha512-gU45f52gveFtCasm0ixYnt0mHI1lHrPomtmF+89oZGKBzOqUfO5diDs6wmoRSnovOWZCwtmwQGRoorAQN7AmoA==", + "dev": true, + "dependencies": { + "@miniflare/core": "2.10.0", + "@miniflare/shared": "2.10.0", + "@miniflare/storage-memory": "2.10.0", + "undici": "5.9.1" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/html-rewriter": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.10.0.tgz", + "integrity": "sha512-hCdG99L8+Ros4dn3B5H37PlQPBH0859EoRslzNTd4jzGIkwdiawpJvrvesL8056GjbUjeJN1zh7OPBRuMgyGLw==", + "dev": true, + "dependencies": { + "@miniflare/core": "2.10.0", + "@miniflare/shared": "2.10.0", + "html-rewriter-wasm": "^0.4.1", + "undici": "5.9.1" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/http-server": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.10.0.tgz", + "integrity": "sha512-cm6hwkONucll93yoY8dteMp//Knvmb7n6zAgeHrtuNYKn//lAL6bRY//VLTttrMmfWxZFi1C7WpOeCv8Mn6/ug==", + "dev": true, + "dependencies": { + "@miniflare/core": "2.10.0", + "@miniflare/shared": "2.10.0", + "@miniflare/web-sockets": "2.10.0", + "kleur": "^4.1.4", + "selfsigned": "^2.0.0", + "undici": "5.9.1", + "ws": "^8.2.2", + "youch": "^2.2.2" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/kv": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.10.0.tgz", + "integrity": "sha512-3+u1lO77FnlS0lQ6b1VgM1E/ZgQ/zy/FU+SdBG5LUOIiv3x522VYHOApeJLnSEo0KtZUB22Ni0fWQM6DgpaREg==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/queues": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/queues/-/queues-2.10.0.tgz", + "integrity": "sha512-WKdO6qI9rfS96KlCjazzPFf+qj6DPov4vONyf18+jzbRjRJh/xwWSk1/1h5A+gDPwVNG8TsNRPh9DW5OKBGNjw==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0" + }, + "engines": { + "node": ">=16.7" + } + }, + "node_modules/@miniflare/r2": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/r2/-/r2-2.10.0.tgz", + "integrity": "sha512-uC1CCWbwM1t8DdpZgrveg6+CkZLfTq+wUMqs20BC5rCT8u8UyRv6ZVRQ7pTPiswLyt1oYDTXsZJK7tjV0U0zew==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0", + "undici": "5.9.1" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/runner-vm": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.10.0.tgz", + "integrity": "sha512-oTsHitQdQ1B1kT3G/6n9AEXsMd/sT1D8tLGzc7Xr79ZrxYxwRO0ATF3cdkxk4dUjUqg/RUqvOJV4YjJGyqvctg==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/scheduler": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.10.0.tgz", + "integrity": "sha512-eGt2cZFE/yo585nT8xINQwdbTotZfeRIh6FUWmZkbva1i5SW0zTiOojr5a95vAGBF3TzwWGsUuzJpLhBB69a/g==", + "dev": true, + "dependencies": { + "@miniflare/core": "2.10.0", + "@miniflare/shared": "2.10.0", + "cron-schedule": "^3.0.4" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/shared": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.10.0.tgz", + "integrity": "sha512-GDSweEhJ3nNtStGm6taZGUNytM0QTQ/sjZSedAKyF1/aHRaZUcD9cuKAMgIbSpKfvgGdLMNS7Bhd8jb249TO7g==", + "dev": true, + "dependencies": { + "@types/better-sqlite3": "^7.6.0", + "kleur": "^4.1.4", + "npx-import": "^1.1.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/sites": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.10.0.tgz", + "integrity": "sha512-1NVAT6+JS2OubL+pOOR5E/6MMddxQHWMi/yIDSumyyfXmj7Sm7n5dE1FvNPetggMP4f8+AjoyT9AYvdd1wkspQ==", + "dev": true, + "dependencies": { + "@miniflare/kv": "2.10.0", + "@miniflare/shared": "2.10.0", + "@miniflare/storage-file": "2.10.0" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/storage-file": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.10.0.tgz", + "integrity": "sha512-K/cRIWiTl4+Z+VO6tl4VfuYXA3NLJgvGPV+BCRYD7uTKuPYHqDMErtD1BI1I7nc3WJhwIXfzJrAR3XXhSKKWQQ==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0", + "@miniflare/storage-memory": "2.10.0" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/storage-memory": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.10.0.tgz", + "integrity": "sha512-ZATU+qZtJ9yG0umgTrOEUi9SU//YyDb8nYXMgqT4JHODYA3RTz1SyyiQSOOz589upJPdu1LN+0j8W24WGRwwxQ==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/watcher": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.10.0.tgz", + "integrity": "sha512-X9CFYYyszfSYDzs07KhbWC2i08Dpyh3D60fPonYZcoZAfa5h9eATHUdRGvNCdax7awYp4b8bvU8upAI//OPlMg==", + "dev": true, + "dependencies": { + "@miniflare/shared": "2.10.0" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@miniflare/web-sockets": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.10.0.tgz", + "integrity": "sha512-W+PrapdQqNEEFeD+amENgPQWcETGDp7OEh6JAoSzCRhHA0OoMe8DG0xb5a5+2FjGW/J7FFKsv84wkURpmFT4dQ==", + "dev": true, + "dependencies": { + "@miniflare/core": "2.10.0", + "@miniflare/shared": "2.10.0", + "undici": "5.9.1", + "ws": "^8.2.2" + }, + "engines": { + "node": ">=16.13" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1628,6 +2102,13 @@ "balanced-match": "^1.0.0" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/plugin-commonjs/node_modules/glob": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", @@ -1753,11 +2234,19 @@ } } }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/@tsconfig/node12": { @@ -1765,6 +2254,7 @@ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/@tsconfig/node14": { @@ -1772,6 +2262,7 @@ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/@tsconfig/node16": { @@ -1779,8 +2270,49 @@ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true, + "license": "MIT", "optional": true }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/better-sqlite3": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.2.tgz", + "integrity": "sha512-RgmaapusqTq6IMAr4McMyAsC6RshYTCjXCnzwVV59WctUxC8bNPyUfT9t5F81lKcU41lLurhjqjoMHfauzfqGg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", @@ -1788,6 +2320,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", + "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/fs-extra": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz", @@ -1809,6 +2351,16 @@ "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -1816,6 +2368,30 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.3.tgz", + "integrity": "sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -1823,6 +2399,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", @@ -1834,6 +2417,7 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/@types/resolve": { @@ -1843,6 +2427,26 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stack-trace": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz", + "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -1859,6 +2463,105 @@ "@types/webidl-conversions": "*" } }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz", + "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz", + "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz", + "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz", + "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.43.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/acorn": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", @@ -1887,6 +2590,7 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.4.0" @@ -1914,6 +2618,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -1929,6 +2634,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -1962,11 +2668,32 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/argparse": { @@ -1986,15 +2713,37 @@ "node": ">=8" } }, + "node_modules/astring": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", + "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==", + "dev": true, + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2022,17 +2771,37 @@ ], "license": "MIT" }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", + "dev": true + }, + "node_modules/bot-whatsapp-docs": { + "resolved": "packages/docs", + "link": true + }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -2100,6 +2869,12 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -2113,6 +2888,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/c8": { "version": "7.12.0", "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", @@ -2145,6 +2941,7 @@ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2159,6 +2956,17 @@ "node": ">=6" } }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2176,17 +2984,102 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -2199,6 +3092,7 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -2211,6 +3105,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10" } @@ -2232,6 +3127,7 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -2263,11 +3159,33 @@ "dev": true, "license": "MIT" }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/commitizen": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.2.5.tgz", "integrity": "sha512-9sXju8Qrz1B4Tw7kC5KhnvwYQN88qs2zbiB8oyMsnXZyJ24PPGiNM3nHr73d32dnE3i8VJEXddBFIbOgYSEXtQ==", "dev": true, + "license": "MIT", "dependencies": { "cachedir": "2.3.0", "cz-conventional-changelog": "3.3.0", @@ -2293,42 +3211,6 @@ "node": ">= 12" } }, - "node_modules/commitizen/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/commitizen/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/commitizen/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -2347,7 +3229,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/convert-source-map": { "version": "1.9.0", @@ -2356,11 +3239,21 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/parse-json": "^4.0.0", @@ -2373,30 +3266,20 @@ "node": ">=10" } }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.2.0.tgz", - "integrity": "sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "ts-node": ">=10", - "typescript": ">=3" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, + "license": "MIT", "optional": true }, + "node_modules/cron-schedule": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/cron-schedule/-/cron-schedule-3.0.6.tgz", + "integrity": "sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==", + "dev": true + }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -2436,6 +3319,7 @@ "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.4.1", "commitizen": "^4.0.3", @@ -2456,6 +3340,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -2468,6 +3353,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2482,6 +3368,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -2490,22 +3377,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "license": "MIT" }, "node_modules/cz-conventional-changelog/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -2515,6 +3395,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -2522,6 +3403,16 @@ "node": ">=4" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2540,11 +3431,26 @@ } } }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-is": { "version": "0.1.4", @@ -2568,6 +3474,7 @@ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -2599,6 +3506,7 @@ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2608,6 +3516,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2665,6 +3574,7 @@ "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" } @@ -2681,11 +3591,675 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "is-arrayish": "^0.2.1" } }, + "node_modules/esbuild": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.16.tgz", + "integrity": "sha512-o6iS9zxdHrrojjlj6pNGC2NAg86ECZqIETswTM5KmJitq+R1YmahhWtMumeQp9lHqJaROGnsBi2RLawGnfo5ZQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.16", + "@esbuild/linux-loong64": "0.15.16", + "esbuild-android-64": "0.15.16", + "esbuild-android-arm64": "0.15.16", + "esbuild-darwin-64": "0.15.16", + "esbuild-darwin-arm64": "0.15.16", + "esbuild-freebsd-64": "0.15.16", + "esbuild-freebsd-arm64": "0.15.16", + "esbuild-linux-32": "0.15.16", + "esbuild-linux-64": "0.15.16", + "esbuild-linux-arm": "0.15.16", + "esbuild-linux-arm64": "0.15.16", + "esbuild-linux-mips64le": "0.15.16", + "esbuild-linux-ppc64le": "0.15.16", + "esbuild-linux-riscv64": "0.15.16", + "esbuild-linux-s390x": "0.15.16", + "esbuild-netbsd-64": "0.15.16", + "esbuild-openbsd-64": "0.15.16", + "esbuild-sunos-64": "0.15.16", + "esbuild-windows-32": "0.15.16", + "esbuild-windows-64": "0.15.16", + "esbuild-windows-arm64": "0.15.16" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz", + "integrity": "sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz", + "integrity": "sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz", + "integrity": "sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz", + "integrity": "sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz", + "integrity": "sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz", + "integrity": "sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz", + "integrity": "sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz", + "integrity": "sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz", + "integrity": "sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz", + "integrity": "sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz", + "integrity": "sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz", + "integrity": "sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz", + "integrity": "sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz", + "integrity": "sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz", + "integrity": "sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz", + "integrity": "sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz", + "integrity": "sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz", + "integrity": "sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.16.tgz", + "integrity": "sha512-HjW1hHRLSncnM3MBCP7iquatHVJq9l0S2xxsHHj4yzf4nm9TU4Z7k4NkeMlD/dHQ4jPlQQhwcMvwbJiOefSuZw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz", + "integrity": "sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-android-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.16.tgz", + "integrity": "sha512-Vwkv/sT0zMSgPSVO3Jlt1pUbnZuOgtOQJkJkyyJFAlLe7BiT8e9ESzo0zQSx4c3wW4T6kGChmKDPMbWTgtliQA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-android-arm64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.16.tgz", + "integrity": "sha512-lqfKuofMExL5niNV3gnhMUYacSXfsvzTa/58sDlBET/hCOG99Zmeh+lz6kvdgvGOsImeo6J9SW21rFCogNPLxg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-darwin-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.16.tgz", + "integrity": "sha512-wo2VWk/n/9V2TmqUZ/KpzRjCEcr00n7yahEdmtzlrfQ3lfMCf3Wa+0sqHAbjk3C6CKkR3WKK/whkMq5Gj4Da9g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-darwin-arm64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.16.tgz", + "integrity": "sha512-fMXaUr5ou0M4WnewBKsspMtX++C1yIa3nJ5R2LSbLCfJT3uFdcRoU/NZjoM4kOMKyOD9Sa/2vlgN8G07K3SJnw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-freebsd-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.16.tgz", + "integrity": "sha512-UzIc0xlRx5x9kRuMr+E3+hlSOxa/aRqfuMfiYBXu2jJ8Mzej4lGL7+o6F5hzhLqWfWm1GWHNakIdlqg1ayaTNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-freebsd-arm64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.16.tgz", + "integrity": "sha512-8xyiYuGc0DLZphFQIiYaLHlfoP+hAN9RHbE+Ibh8EUcDNHAqbQgUrQg7pE7Bo00rXmQ5Ap6KFgcR0b4ALZls1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-32": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.16.tgz", + "integrity": "sha512-iGijUTV+0kIMyUVoynK0v+32Oi8yyp0xwMzX69GX+5+AniNy/C/AL1MjFTsozRp/3xQPl7jVux/PLe2ds10/2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.16.tgz", + "integrity": "sha512-tuSOjXdLw7VzaUj89fIdAaQT7zFGbKBcz4YxbWrOiXkwscYgE7HtTxUavreBbnRkGxKwr9iT/gmeJWNm4djy/g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-arm": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.16.tgz", + "integrity": "sha512-XKcrxCEXDTOuoRj5l12tJnkvuxXBMKwEC5j0JISw3ziLf0j4zIwXbKbTmUrKFWbo6ZgvNpa7Y5dnbsjVvH39bQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-arm64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.16.tgz", + "integrity": "sha512-mPYksnfHnemNrvjrDhZyixL/AfbJN0Xn9S34ZOHYdh6/jJcNd8iTsv3JwJoEvTJqjMggjMhGUPJAdjnFBHoH8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-mips64le": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.16.tgz", + "integrity": "sha512-kSJO2PXaxfm0pWY39+YX+QtpFqyyrcp0ZeI8QPTrcFVQoWEPiPVtOfTZeS3ZKedfH+Ga38c4DSzmKMQJocQv6A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-ppc64le": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.16.tgz", + "integrity": "sha512-NimPikwkBY0yGABw6SlhKrtT35sU4O23xkhlrTT/O6lSxv3Pm5iSc6OYaqVAHWkLdVf31bF4UDVFO+D990WpAA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-riscv64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.16.tgz", + "integrity": "sha512-ty2YUHZlwFOwp7pR+J87M4CVrXJIf5ZZtU/umpxgVJBXvWjhziSLEQxvl30SYfUPq0nzeWKBGw5i/DieiHeKfw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-s390x": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.16.tgz", + "integrity": "sha512-VkZaGssvPDQtx4fvVdZ9czezmyWyzpQhEbSNsHZZN0BHvxRLOYAQ7sjay8nMQwYswP6O2KlZluRMNPYefFRs+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-netbsd-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.16.tgz", + "integrity": "sha512-ElQ9rhdY51et6MJTWrCPbqOd/YuPowD7Cxx3ee8wlmXQQVW7UvQI6nSprJ9uVFQISqSF5e5EWpwWqXZsECLvXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-openbsd-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.16.tgz", + "integrity": "sha512-KgxMHyxMCT+NdLQE1zVJEsLSt2QQBAvJfmUGDmgEq8Fvjrf6vSKB00dVHUEDKcJwMID6CdgCpvYNt999tIYhqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-sunos-64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.16.tgz", + "integrity": "sha512-exSAx8Phj7QylXHlMfIyEfNrmqnLxFqLxdQF6MBHPdHAjT7fsKaX6XIJn+aQEFiOcE4X8e7VvdMCJ+WDZxjSRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-windows-32": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.16.tgz", + "integrity": "sha512-zQgWpY5pUCSTOwqKQ6/vOCJfRssTvxFuEkpB4f2VUGPBpdddZfdj8hbZuFRdZRPIVHvN7juGcpgCA/XCF37mAQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-windows-arm64": { + "version": "0.15.16", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.16.tgz", + "integrity": "sha512-oCcUKrJaMn04Vxy9Ekd8x23O8LoU01+4NOkQ2iBToKgnGj5eo1vU9i27NQZ9qC8NFZgnQQZg5oZWAejmbsppNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2697,16 +4271,13 @@ } }, "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/eslint": { @@ -2832,6 +4403,19 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", @@ -2886,10 +4470,82 @@ "node": ">=4.0" } }, + "node_modules/estree-util-attach-comments": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz", + "integrity": "sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz", + "integrity": "sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", + "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz", + "integrity": "sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.0.tgz", + "integrity": "sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", + "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==", "dev": true, "license": "MIT" }, @@ -2932,6 +4588,7 @@ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" }, @@ -2939,11 +4596,19 @@ "node": ">=0.10.0" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -3031,11 +4696,36 @@ "reusify": "^1.0.4" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -3046,15 +4736,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -3086,6 +4767,7 @@ "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", "dev": true, + "license": "MIT", "dependencies": { "findup-sync": "^4.0.0", "merge": "^2.1.1" @@ -3095,7 +4777,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", @@ -3119,6 +4802,7 @@ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", "dev": true, + "license": "MIT", "dependencies": { "detect-file": "^1.0.0", "is-glob": "^4.0.0", @@ -3164,19 +4848,46 @@ "node": ">=8.0.0" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "fetch-blob": "^3.1.2" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=12.20.0" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, "node_modules/fs.realpath": { @@ -3186,6 +4897,20 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3250,11 +4975,18 @@ "node": ">=10.13.0" } }, + "node_modules/glob-regex": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/glob-regex/-/glob-regex-0.3.2.tgz", + "integrity": "sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw==", + "dev": true + }, "node_modules/global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "ini": "^1.3.4" @@ -3268,6 +5000,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -3282,6 +5015,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -3298,6 +5032,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3341,6 +5076,13 @@ "node": ">=8" } }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -3378,11 +5120,51 @@ "node": ">=8" } }, + "node_modules/hast-util-to-estree": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz", + "integrity": "sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -3397,6 +5179,18 @@ "dev": true, "license": "MIT" }, + "node_modules/html-rewriter-wasm": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/html-rewriter-wasm/-/html-rewriter-wasm-0.4.1.tgz", + "integrity": "sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -3412,6 +5206,7 @@ "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", "dev": true, + "license": "MIT", "bin": { "husky": "lib/bin.js" }, @@ -3427,6 +5222,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -3481,6 +5277,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3513,13 +5319,22 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dev": true, + "license": "MIT" }, "node_modules/inquirer": { "version": "8.2.4", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -3547,13 +5362,76 @@ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "license": "MIT" }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, + "license": "MIT", "optional": true }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/is-builtin-module": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", @@ -3583,6 +5461,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3616,11 +5505,23 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3652,6 +5553,19 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-object": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", @@ -3690,6 +5604,7 @@ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3701,13 +5616,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3795,6 +5712,7 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/js-yaml": { @@ -3815,6 +5733,7 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/json-schema-traverse": { @@ -3831,6 +5750,19 @@ "dev": true, "license": "MIT" }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -3870,7 +5802,7 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, - "optional": true + "license": "MIT" }, "node_modules/locate-path": { "version": "6.0.0", @@ -3892,20 +5824,23 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/lodash.map": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -3919,6 +5854,7 @@ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/lodash.uniq": { @@ -3926,6 +5862,7 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/log-symbols": { @@ -3933,6 +5870,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -3949,10 +5887,35 @@ "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/magic-string": { "version": "0.26.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", @@ -3982,13 +5945,203 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, + "license": "ISC", "optional": true }, + "node_modules/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz", + "integrity": "sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz", + "integrity": "sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz", + "integrity": "sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz", + "integrity": "sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.2.4", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", + "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -4000,7 +6153,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge-stream": { "version": "2.0.0", @@ -4019,6 +6173,627 @@ "node": ">= 8" } }, + "node_modules/micromark": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", + "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz", + "integrity": "sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz", + "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/acorn": "^4.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz", + "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz", + "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^1.0.0", + "micromark-extension-mdx-jsx": "^1.0.0", + "micromark-extension-mdx-md": "^1.0.0", + "micromark-extension-mdxjs-esm": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz", + "integrity": "sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.1.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz", + "integrity": "sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.0.tgz", + "integrity": "sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "estree-util-visit": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-location": "^4.0.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", + "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -4033,6 +6808,18 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -4043,6 +6830,57 @@ "node": ">=6" } }, + "node_modules/miniflare": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.10.0.tgz", + "integrity": "sha512-WPveqChVDdmDGv+wFqXjFqEZlZ5/aBlAKX37h/e4TAjl2XsK5nPfQATP8jZXwNDEC5iE29bYZymOqeZkp+t7OA==", + "dev": true, + "dependencies": { + "@miniflare/cache": "2.10.0", + "@miniflare/cli-parser": "2.10.0", + "@miniflare/core": "2.10.0", + "@miniflare/d1": "2.10.0", + "@miniflare/durable-objects": "2.10.0", + "@miniflare/html-rewriter": "2.10.0", + "@miniflare/http-server": "2.10.0", + "@miniflare/kv": "2.10.0", + "@miniflare/queues": "2.10.0", + "@miniflare/r2": "2.10.0", + "@miniflare/runner-vm": "2.10.0", + "@miniflare/scheduler": "2.10.0", + "@miniflare/shared": "2.10.0", + "@miniflare/sites": "2.10.0", + "@miniflare/storage-file": "2.10.0", + "@miniflare/storage-memory": "2.10.0", + "@miniflare/web-sockets": "2.10.0", + "kleur": "^4.1.4", + "semiver": "^1.1.0", + "source-map-support": "^0.5.20", + "undici": "5.9.1" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "@miniflare/storage-redis": "2.10.0", + "cron-schedule": "^3.0.4", + "ioredis": "^4.27.9" + }, + "peerDependenciesMeta": { + "@miniflare/storage-redis": { + "optional": true + }, + "cron-schedule": { + "optional": true + }, + "ioredis": { + "optional": true + } + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4060,7 +6898,8 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mongodb": { "version": "4.11.0", @@ -4108,11 +6947,46 @@ "dev": true, "license": "MIT" }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "bin": { + "mustache": "bin/mustache" + } + }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, "node_modules/natural-compare": { "version": "1.4.0", @@ -4121,6 +6995,70 @@ "dev": true, "license": "MIT" }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", + "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -4134,6 +7072,138 @@ "node": ">=8" } }, + "node_modules/npx-import": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/npx-import/-/npx-import-1.1.4.tgz", + "integrity": "sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==", + "dev": true, + "dependencies": { + "execa": "^6.1.0", + "parse-package-name": "^1.0.0", + "semver": "^7.3.7", + "validate-npm-package-name": "^4.0.0" + } + }, + "node_modules/npx-import/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/npx-import/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/npx-import/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npx-import/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npx-import/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npx-import/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npx-import/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npx-import/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4183,6 +7253,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -4206,6 +7277,7 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4255,11 +7327,33 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.0.tgz", + "integrity": "sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@babel/code-frame": "^7.0.0", @@ -4274,11 +7368,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-package-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-package-name/-/parse-package-name-1.0.0.tgz", + "integrity": "sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==", + "dev": true + }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4320,6 +7421,12 @@ "dev": true, "license": "MIT" }, + "node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4340,6 +7447,34 @@ "node": ">=6.14" } }, + "node_modules/periscopic": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.0.4.tgz", + "integrity": "sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/periscopic/node_modules/is-reference": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", + "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -4353,6 +7488,41 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4403,6 +7573,17 @@ "node": ">=6" } }, + "node_modules/property-information": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", + "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4444,6 +7625,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4453,6 +7635,39 @@ "node": ">= 6" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recrawl-sync": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recrawl-sync/-/recrawl-sync-2.2.3.tgz", + "integrity": "sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cush/relative": "^1.0.0", + "glob-regex": "^0.3.0", + "slash": "^3.0.0", + "sucrase": "^3.20.3", + "tslib": "^1.9.3" + } + }, + "node_modules/recrawl-sync/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -4466,6 +7681,54 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/remark-mdx": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.5.tgz", + "integrity": "sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4481,6 +7744,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" @@ -4509,6 +7773,7 @@ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -4518,13 +7783,14 @@ } }, "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", + "optional": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/resolve-global": { @@ -4532,6 +7798,7 @@ "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "global-dirs": "^0.1.1" @@ -4545,6 +7812,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -4631,6 +7899,67 @@ "node": ">=8.3" } }, + "node_modules/rollup-plugin-copy/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/rollup-plugin-inject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", + "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1", + "magic-string": "^0.25.3", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-inject/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/rollup-plugin-inject/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/rollup-plugin-node-polyfills": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", + "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", + "dev": true, + "dependencies": { + "rollup-plugin-inject": "^3.0.0" + } + }, "node_modules/rollup-pluginutils": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", @@ -4653,6 +7982,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -4686,6 +8016,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -4721,13 +8052,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/saslprep": { "version": "1.0.3", @@ -4742,16 +8075,49 @@ "node": ">=6" } }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semiver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", + "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4833,6 +8199,45 @@ "npm": ">= 3.0.0" } }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -4840,6 +8245,17 @@ "dev": true, "license": "MIT" }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -4850,11 +8266,30 @@ "memory-pager": "^1.0.2" } }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -4874,6 +8309,21 @@ "node": ">=8" } }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4892,6 +8342,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4926,6 +8377,59 @@ "license": "MIT", "optional": true }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/sucrase": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz", + "integrity": "sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4974,17 +8478,42 @@ "dev": true, "license": "MIT" }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -5017,58 +8546,68 @@ "node": ">=12" } }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", "dev": true, - "optional": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", "dev": true, - "optional": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz", + "integrity": "sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, "engines": { - "node": ">=0.3.1" + "node": ">=6" + } + }, + "node_modules/tsconfig-paths/node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, "node_modules/tslib": { @@ -5078,6 +8617,29 @@ "devOptional": true, "license": "0BSD" }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5109,7 +8671,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true, - "optional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5118,14 +8680,167 @@ "node": ">=4.2.0" } }, + "node_modules/undici": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.9.1.tgz", + "integrity": "sha512-6fB3a+SNnWEm4CJbgo0/CWR8RGcOCQP68SF4X0mxtYTq2VNN8T88NYrWVBAeSX+zb7bny2dx2iYhP3XHi00omg==", + "dev": true, + "engines": { + "node": ">=12.18" + } + }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz", + "integrity": "sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz", + "integrity": "sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", + "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", + "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", + "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, "node_modules/uri-js": { @@ -5138,11 +8853,18 @@ "punycode": "^2.1.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-4.0.3.tgz", + "integrity": "sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==", + "dev": true + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/uuid": { "version": "8.3.2", @@ -5178,6 +8900,7 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/v8-to-istanbul": { @@ -5195,15 +8918,167 @@ "node": ">=10.12.0" } }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/vfile": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.6.tgz", + "integrity": "sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.3.tgz", + "integrity": "sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.4.tgz", + "integrity": "sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-3.5.0.tgz", + "integrity": "sha512-NKIubr7gXgh/3uniQaOytSg+aKWPrjquP6anAy+zCWEn6h9fB8z2/qdlfQrTgZWaXJ2pHVlllrSdRZltHn9P4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "recrawl-sync": "^2.0.3", + "tsconfig-paths": "^4.0.0" + }, + "peerDependencies": { + "vite": ">2.0.0-0" + } + }, + "node_modules/vite/node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -5252,6 +9127,90 @@ "node": ">=0.10.0" } }, + "node_modules/wrangler": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.4.4.tgz", + "integrity": "sha512-Of3O/7RzIcGWGmt7dd5JevvP419De55smr4Hi07REKt9oXYhMNeaFy4wX35fHlv5e0pVCyGB3Fna8mI4Ib2pew==", + "dev": true, + "dependencies": { + "@cloudflare/kv-asset-handler": "^0.2.0", + "@esbuild-plugins/node-globals-polyfill": "^0.1.1", + "@esbuild-plugins/node-modules-polyfill": "^0.1.4", + "@miniflare/core": "2.10.0", + "@miniflare/d1": "2.10.0", + "@miniflare/durable-objects": "2.10.0", + "blake3-wasm": "^2.1.5", + "chokidar": "^3.5.3", + "esbuild": "0.14.51", + "miniflare": "2.10.0", + "nanoid": "^3.3.3", + "path-to-regexp": "^6.2.0", + "selfsigned": "^2.0.1", + "source-map": "^0.7.4", + "xxhash-wasm": "^1.0.1" + }, + "bin": { + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/wrangler/node_modules/esbuild": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz", + "integrity": "sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.51", + "esbuild-android-arm64": "0.14.51", + "esbuild-darwin-64": "0.14.51", + "esbuild-darwin-arm64": "0.14.51", + "esbuild-freebsd-64": "0.14.51", + "esbuild-freebsd-arm64": "0.14.51", + "esbuild-linux-32": "0.14.51", + "esbuild-linux-64": "0.14.51", + "esbuild-linux-arm": "0.14.51", + "esbuild-linux-arm64": "0.14.51", + "esbuild-linux-mips64le": "0.14.51", + "esbuild-linux-ppc64le": "0.14.51", + "esbuild-linux-riscv64": "0.14.51", + "esbuild-linux-s390x": "0.14.51", + "esbuild-netbsd-64": "0.14.51", + "esbuild-openbsd-64": "0.14.51", + "esbuild-sunos-64": "0.14.51", + "esbuild-windows-32": "0.14.51", + "esbuild-windows-64": "0.14.51", + "esbuild-windows-arm64": "0.14.51" + } + }, + "node_modules/wrangler/node_modules/esbuild-windows-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz", + "integrity": "sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5277,6 +9236,33 @@ "dev": true, "license": "ISC" }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xxhash-wasm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", + "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", + "dev": true + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -5287,11 +9273,19 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "optional": true, "engines": { "node": ">= 6" @@ -5331,6 +9325,7 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -5349,6 +9344,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/youch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/youch/-/youch-2.2.2.tgz", + "integrity": "sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==", + "dev": true, + "dependencies": { + "@types/stack-trace": "0.0.29", + "cookie": "^0.4.1", + "mustache": "^4.2.0", + "stack-trace": "0.0.10" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "packages/bot": { "name": "@bot-whatsapp/bot", "version": "0.0.1", @@ -5386,6 +9404,253 @@ }, "devDependencies": {} }, + "packages/docs": { + "name": "bot-whatsapp-docs", + "version": "0.0.1", + "devDependencies": { + "@builder.io/qwik": "0.14.1", + "@builder.io/qwik-city": "0.0.127", + "@types/eslint": "8.4.10", + "@types/node": "latest", + "@typescript-eslint/eslint-plugin": "5.43.0", + "@typescript-eslint/parser": "5.43.0", + "eslint": "8.28.0", + "eslint-plugin-qwik": "0.14.1", + "node-fetch": "3.3.0", + "prettier": "2.7.1", + "typescript": "4.9.3", + "vite": "3.2.4", + "vite-tsconfig-paths": "3.5.0", + "wrangler": "latest" + }, + "engines": { + "node": ">=15.0.0" + } + }, + "packages/docs/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz", + "integrity": "sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/type-utils": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/docs/node_modules/@typescript-eslint/parser": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz", + "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/docs/node_modules/@typescript-eslint/type-utils": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz", + "integrity": "sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/docs/node_modules/@typescript-eslint/utils": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.43.0.tgz", + "integrity": "sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "packages/docs/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "packages/docs/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/docs/node_modules/eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/docs/node_modules/eslint-plugin-qwik": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-qwik/-/eslint-plugin-qwik-0.14.1.tgz", + "integrity": "sha512-cxwhUgsAxRehnZBcvdT08KWjY1yjmaNHKp4U8njC9fWUEH2qBDEileWVS3QSN+hnVHADPS2BvOvWBg+0wEuIcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": ">= 8" + } + }, + "packages/docs/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "packages/provider": { "name": "@bot-whatsapp/provider", "version": "0.0.1", diff --git a/package.json b/package.json index bc76e3f..46990a7 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,11 @@ "prepare": "husky install" }, "workspaces": [ - "packages/*", - "docs" + "packages/bot", + "packages/cli", + "packages/database", + "packages/provider", + "packages/docs" ], "keywords": [ "whatsapp", diff --git a/packages/docs/.eslintignore b/packages/docs/.eslintignore new file mode 100644 index 0000000..73d2683 --- /dev/null +++ b/packages/docs/.eslintignore @@ -0,0 +1,33 @@ +**/*.log +**/.DS_Store +*. +.vscode/settings.json +.history +.yarn +bazel-* +bazel-bin +bazel-out +bazel-qwik +bazel-testlogs +dist +dist-dev +lib +lib-types +etc +external +node_modules +temp +tsc-out +tsdoc-metadata.json +target +output +rollup.config.js +build +.cache +.vscode +.rollup.cache +dist +tsconfig.tsbuildinfo +vite.config.ts +*.spec.tsx +*.spec.ts diff --git a/packages/docs/.eslintrc.cjs b/packages/docs/.eslintrc.cjs new file mode 100644 index 0000000..c31c7a9 --- /dev/null +++ b/packages/docs/.eslintrc.cjs @@ -0,0 +1,40 @@ +module.exports = { + root: true, + env: { + browser: true, + es2021: true, + node: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:qwik/recommended', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.json'], + ecmaVersion: 2021, + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + plugins: ['@typescript-eslint'], + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-inferrable-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + 'prefer-spread': 'off', + 'no-case-declarations': 'off', + 'no-console': 'off', + '@typescript-eslint/no-unused-vars': ['error'], + }, +}; diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore new file mode 100644 index 0000000..b29623f --- /dev/null +++ b/packages/docs/.gitignore @@ -0,0 +1,41 @@ +# Build +/dist +/lib +/lib-types +/server + +# Development +node_modules + +# Cache +.cache +.mf +.vscode +.rollup.cache +tsconfig.tsbuildinfo + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +# Editor +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Yarn +.yarn/* +!.yarn/releases + +# Cloudflare +functions/**/*.js diff --git a/packages/docs/.node-version b/packages/docs/.node-version new file mode 100644 index 0000000..b6a7d89 --- /dev/null +++ b/packages/docs/.node-version @@ -0,0 +1 @@ +16 diff --git a/packages/docs/.prettierignore b/packages/docs/.prettierignore new file mode 100644 index 0000000..1592248 --- /dev/null +++ b/packages/docs/.prettierignore @@ -0,0 +1,6 @@ +# Files Prettier should not format +**/*.log +**/.DS_Store +*. +dist +node_modules diff --git a/packages/docs/README.md b/packages/docs/README.md new file mode 100644 index 0000000..3d62e32 --- /dev/null +++ b/packages/docs/README.md @@ -0,0 +1,112 @@ +# Qwik City App ⚡️ + +- [Qwik Docs](https://qwik.builder.io/) +- [Discord](https://qwik.builder.io/chat) +- [Qwik GitHub](https://github.com/BuilderIO/qwik) +- [@QwikDev](https://twitter.com/QwikDev) +- [Vite](https://vitejs.dev/) + +--- + +## Project Structure + +This project is using Qwik with [QwikCity](https://qwik.builder.io/qwikcity/overview/). QwikCity is just a extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more. + +Inside your project, you'll see the following directory structure: + +``` +├── public/ +│ └── ... +└── src/ + ├── components/ + │ └── ... + └── routes/ + └── ... +``` + +- `src/routes`: Provides the directory based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.builder.io/qwikcity/routing/overview/) for more info. + +- `src/components`: Recommended directory for components. + +- `public`: Any static assets, like images, can be placed in the public directory. Please see the [Vite public directory](https://vitejs.dev/guide/assets.html#the-public-directory) for more info. + +## Add Integrations and deployment + +Use the `npm run qwik add` command to add additional integrations. Some examples of integrations include: Cloudflare, Netlify or Express server, and the [Static Site Generator (SSG)](https://qwik.builder.io/qwikcity/static-site-generation/static-site-config/). + +```shell +npm run qwik add # or `yarn qwik add` +``` + +## Development + +Development mode uses [Vite's development server](https://vitejs.dev/). During development, the `dev` command will server-side render (SSR) the output. + +```shell +npm start # or `yarn start` +``` + +> Note: during dev mode, Vite may request a significant number of `.js` files. This does not represent a Qwik production build. + +## Preview + +The preview command will create a production build of the client modules, a production build of `src/entry.preview.tsx`, and run a local server. The preview server is only for convenience to locally preview a production build, and it should not be used as a production server. + +```shell +npm run preview # or `yarn preview` +``` + +## Production + +The production build will generate client and server modules by running both client and server build commands. Additionally, the build command will use Typescript to run a type check on the source code. + +```shell +npm run build # or `yarn build` +``` + +## Cloudflare Pages + +Cloudflare's [wrangler](https://github.com/cloudflare/wrangler) CLI can be used to preview a production build locally. To start a local server, run: + +``` +npm run serve +``` + +Then visit [http://localhost:8787/](http://localhost:8787/) + +### Deployments + +[Cloudflare Pages](https://pages.cloudflare.com/) are deployable through their [Git provider integrations](https://developers.cloudflare.com/pages/platform/git-integration/). + +If you don't already have an account, then [create a Cloudflare account here](https://dash.cloudflare.com/sign-up/pages). Next go to your dashboard and follow the [Cloudflare Pages deployment guide](https://developers.cloudflare.com/pages/framework-guides/deploy-anything/). + +Within the projects "Settings" for "Build and deployments", the "Build command" should be `npm run build`, and the "Build output directory" should be set to `dist`. + +### Function Invocation Routes + +Cloudflare Page's [function-invocation-routes config](https://developers.cloudflare.com/pages/platform/functions/function-invocation-routes/) can be used to include, or exclude, certain paths to be used by the worker functions. Having a `_routes.json` file gives developers more granular control over when your Function is invoked. +This is useful to determine if a page response should be Server-Side Rendered (SSR) or if the response should use a static-site generated (SSG) `index.html` file. + +By default, the Cloudflare pages adaptor _does not_ include a `public/_routes.json` config, but rather it is auto-generated from the build by the Cloudflare adaptor. An example of an auto-generate `dist/_routes.json` would be: + +``` +{ + "include": [ + "/*" + ], + "exclude": [ + "/_headers", + "/_redirects", + "/build/*", + "/favicon.ico", + "/manifest.json", + "/service-worker.js", + "/about" + ], + "version": 1 +} +``` + +In the above example, it's saying _all_ pages should be SSR'd. However, the root static files such as `/favicon.ico` and any static assets in `/build/*` should be excluded from the Functions, and instead treated as a static file. + +In most cases the generated `dist/_routes.json` file is ideal. However, if you need more granular control over each path, you can instead provide you're own `public/_routes.json` file. When the project provides its own `public/_routes.json` file, then the Cloudflare adaptor will not auto-generate the routes config and instead use the committed one within the `public` directory. diff --git a/packages/docs/adaptors/cloudflare-pages/vite.config.ts b/packages/docs/adaptors/cloudflare-pages/vite.config.ts new file mode 100644 index 0000000..b03956f --- /dev/null +++ b/packages/docs/adaptors/cloudflare-pages/vite.config.ts @@ -0,0 +1,19 @@ +import { cloudflarePagesAdaptor } from '@builder.io/qwik-city/adaptors/cloudflare-pages/vite'; +import { extendConfig } from '@builder.io/qwik-city/vite'; +import baseConfig from '../../vite.config'; + +export default extendConfig(baseConfig, () => { + return { + build: { + ssr: true, + rollupOptions: { + input: ['src/entry.cloudflare-pages.tsx', '@qwik-city-plan'], + }, + }, + plugins: [ + cloudflarePagesAdaptor({ + staticGenerate: true, + }), + ], + }; +}); diff --git a/packages/docs/functions/[[path]].ts b/packages/docs/functions/[[path]].ts new file mode 100644 index 0000000..66013ad --- /dev/null +++ b/packages/docs/functions/[[path]].ts @@ -0,0 +1,5 @@ +// @ts-ignore + +// Cloudflare Pages Functions +// https://developers.cloudflare.com/pages/platform/functions/ +export { onRequest } from '../server/entry.cloudflare-pages'; diff --git a/packages/docs/package.json b/packages/docs/package.json new file mode 100644 index 0000000..a4425cc --- /dev/null +++ b/packages/docs/package.json @@ -0,0 +1,41 @@ +{ + "name": "bot-whatsapp-docs", + "version": "0.0.1", + "description": "Basic start point to build a docs site with Qwik", + "engines": { + "node": ">=15.0.0" + }, + "private": true, + "scripts": { + "build": "qwik build", + "build.client": "vite build", + "build.preview": "vite build --ssr src/entry.preview.tsx", + "build.server": "vite build -c adaptors/cloudflare-pages/vite.config.ts", + "build.types": "tsc --incremental --noEmit", + "deploy": "wrangler pages dev ./dist", + "dev": "vite --mode ssr", + "dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force", + "fmt": "prettier --write .", + "fmt.check": "prettier --check .", + "lint": "eslint \"src/**/*.ts*\"", + "preview": "qwik build preview && vite preview --open", + "start": "vite --open --mode ssr", + "qwik": "qwik" + }, + "devDependencies": { + "@builder.io/qwik": "0.14.1", + "@builder.io/qwik-city": "0.0.127", + "@types/eslint": "8.4.10", + "@types/node": "latest", + "@typescript-eslint/eslint-plugin": "5.43.0", + "@typescript-eslint/parser": "5.43.0", + "eslint": "8.28.0", + "eslint-plugin-qwik": "0.14.1", + "node-fetch": "3.3.0", + "prettier": "2.7.1", + "typescript": "4.9.3", + "vite": "3.2.4", + "vite-tsconfig-paths": "3.5.0", + "wrangler": "latest" + } +} diff --git a/packages/docs/public/_headers b/packages/docs/public/_headers new file mode 100644 index 0000000..0690cb4 --- /dev/null +++ b/packages/docs/public/_headers @@ -0,0 +1,4 @@ +# https://developers.cloudflare.com/pages/platform/headers/ + +/build/* + Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable diff --git a/packages/docs/public/_redirects b/packages/docs/public/_redirects new file mode 100644 index 0000000..e274610 --- /dev/null +++ b/packages/docs/public/_redirects @@ -0,0 +1 @@ +# https://developers.cloudflare.com/pages/platform/redirects/ diff --git a/packages/docs/public/favicon.svg b/packages/docs/public/favicon.svg new file mode 100644 index 0000000..0ded7c1 --- /dev/null +++ b/packages/docs/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/docs/public/manifest.json b/packages/docs/public/manifest.json new file mode 100644 index 0000000..c18e75f --- /dev/null +++ b/packages/docs/public/manifest.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/web-manifest-combined.json", + "name": "qwik-project-name", + "short_name": "Welcome to Qwik", + "start_url": ".", + "display": "standalone", + "background_color": "#fff", + "description": "A Qwik project app." +} diff --git a/packages/docs/public/robots.txt b/packages/docs/public/robots.txt new file mode 100644 index 0000000..e69de29 diff --git a/packages/docs/src/components/breadcrumbs/breadcrumbs.css b/packages/docs/src/components/breadcrumbs/breadcrumbs.css new file mode 100644 index 0000000..c278f51 --- /dev/null +++ b/packages/docs/src/components/breadcrumbs/breadcrumbs.css @@ -0,0 +1,25 @@ +nav.breadcrumbs { + padding: 5px; + border-bottom: 1px solid #ddd; +} + +nav.breadcrumbs > span { + display: inline-block; + padding: 5px 0; + font-size: 12px; +} + +nav.breadcrumbs > span a { + text-decoration: none; + color: inherit; +} + +nav.breadcrumbs > span::after { + content: '>'; + padding: 0 5px; + opacity: 0.4; +} + +nav.breadcrumbs > span:last-child::after { + display: none; +} diff --git a/packages/docs/src/components/breadcrumbs/breadcrumbs.tsx b/packages/docs/src/components/breadcrumbs/breadcrumbs.tsx new file mode 100644 index 0000000..36de82f --- /dev/null +++ b/packages/docs/src/components/breadcrumbs/breadcrumbs.tsx @@ -0,0 +1,74 @@ +import { component$, useStyles$ } from '@builder.io/qwik'; +import { useContent, useLocation, ContentMenu } from '@builder.io/qwik-city'; +import styles from './breadcrumbs.css?inline'; + +export const Breadcrumbs = component$(() => { + useStyles$(styles); + + const { menu } = useContent(); + const loc = useLocation(); + + const breadcrumbs = createBreadcrumbs(menu, loc.pathname); + if (breadcrumbs.length === 0) { + return null; + } + + return ( +

    + ); +}); + +export function createBreadcrumbs(menu: ContentMenu | undefined, pathname: string) { + if (menu?.items) { + for (const indexA of menu.items) { + const breadcrumbA: ContentBreadcrumb = { + text: indexA.text, + }; + if (typeof indexA.href === 'string') { + breadcrumbA.href = indexA.href; + } + if (indexA.href === pathname) { + return [breadcrumbA]; + } + + if (indexA.items) { + for (const indexB of indexA.items) { + const breadcrumbB: ContentBreadcrumb = { + text: indexB.text, + }; + if (typeof indexB.href === 'string') { + breadcrumbB.href = indexB.href; + } + if (indexB.href === pathname) { + return [breadcrumbA, breadcrumbB]; + } + + if (indexB.items) { + for (const indexC of indexB.items) { + const breadcrumbC: ContentBreadcrumb = { + text: indexC.text, + }; + if (typeof indexC.href === 'string') { + breadcrumbC.href = indexC.href; + } + if (indexC.href === pathname) { + return [breadcrumbA, breadcrumbB, breadcrumbC]; + } + } + } + } + } + } + } + + return []; +} + +interface ContentBreadcrumb { + text: string; + href?: string; +} diff --git a/packages/docs/src/components/footer/footer.css b/packages/docs/src/components/footer/footer.css new file mode 100644 index 0000000..2e037e8 --- /dev/null +++ b/packages/docs/src/components/footer/footer.css @@ -0,0 +1,22 @@ +footer { + border-top: 0.5px solid #ddd; + margin-top: 40px; + padding: 20px; + text-align: center; +} + +footer a { + color: #9e9e9e; + font-size: 12px; +} + +footer ul { + list-style: none; + margin: 0; + padding: 0; +} + +footer li { + display: inline-block; + padding: 6px 12px; +} diff --git a/packages/docs/src/components/footer/footer.tsx b/packages/docs/src/components/footer/footer.tsx new file mode 100644 index 0000000..ce84ac1 --- /dev/null +++ b/packages/docs/src/components/footer/footer.tsx @@ -0,0 +1,36 @@ +import { component$, useStyles$ } from '@builder.io/qwik'; +import styles from './footer.css?inline'; + +export default component$(() => { + useStyles$(styles); + + return ( + + ); +}); diff --git a/packages/docs/src/components/header/header.css b/packages/docs/src/components/header/header.css new file mode 100644 index 0000000..fe3a1f6 --- /dev/null +++ b/packages/docs/src/components/header/header.css @@ -0,0 +1,34 @@ +header { + position: sticky; + top: 0; + z-index: 11; + display: grid; + grid-template-columns: minmax(130px, auto) 1fr; + gap: 30px; + height: 80px; + width: 100%; + padding: 10px; + background-color: white; + overflow: hidden; +} + +header a.logo { + display: block; +} + +header a { + text-decoration: none; +} + +header nav { + text-align: right; +} + +header nav a { + display: inline-block; + padding: 5px 15px; +} + +header nav a:hover { + text-decoration: underline; +} diff --git a/packages/docs/src/components/header/header.tsx b/packages/docs/src/components/header/header.tsx new file mode 100644 index 0000000..a4c3798 --- /dev/null +++ b/packages/docs/src/components/header/header.tsx @@ -0,0 +1,26 @@ +import { component$, useStyles$ } from '@builder.io/qwik'; +import { useLocation } from '@builder.io/qwik-city'; +import { QwikLogo } from '../icons/qwik'; +import styles from './header.css?inline'; + +export default component$(() => { + useStyles$(styles); + + const { pathname } = useLocation(); + + return ( +
    + + +
    + ); +}); diff --git a/packages/docs/src/components/icons/qwik.tsx b/packages/docs/src/components/icons/qwik.tsx new file mode 100644 index 0000000..984eb66 --- /dev/null +++ b/packages/docs/src/components/icons/qwik.tsx @@ -0,0 +1,20 @@ +export const QwikLogo = () => ( + + + + + + +); diff --git a/packages/docs/src/components/menu/menu.css b/packages/docs/src/components/menu/menu.css new file mode 100644 index 0000000..6b786ae --- /dev/null +++ b/packages/docs/src/components/menu/menu.css @@ -0,0 +1,13 @@ +.menu { + background: #eee; + padding: 20px 10px; +} + +.menu h5 { + margin: 0; +} + +.menu ul { + padding-left: 20px; + margin: 5px 0 25px 0; +} diff --git a/packages/docs/src/components/menu/menu.tsx b/packages/docs/src/components/menu/menu.tsx new file mode 100644 index 0000000..8ced9e0 --- /dev/null +++ b/packages/docs/src/components/menu/menu.tsx @@ -0,0 +1,36 @@ +import { component$, useStyles$ } from '@builder.io/qwik'; +import { useContent, Link, useLocation } from '@builder.io/qwik-city'; +import styles from './menu.css?inline'; + +export default component$(() => { + useStyles$(styles); + + const { menu } = useContent(); + const loc = useLocation(); + + return ( + + ); +}); diff --git a/packages/docs/src/components/on-this-page/on-this-page.css b/packages/docs/src/components/on-this-page/on-this-page.css new file mode 100644 index 0000000..e54fe02 --- /dev/null +++ b/packages/docs/src/components/on-this-page/on-this-page.css @@ -0,0 +1,33 @@ +.on-this-page { + padding-bottom: 20px; + font-size: 0.9em; +} + +.on-this-page h6 { + margin: 10px 0; + font-weight: bold; + text-transform: uppercase; +} + +.on-this-page ul { + margin: 0; + padding: 0 0 20px 0; + list-style: none; +} + +.on-this-page a { + position: relative; + display: block; + border: 0 solid #ddd; + border-left-width: 2px; + padding: 4px 2px 4px 8px; + text-decoration: none; +} + +.on-this-page a.indent { + padding-left: 30px; +} + +.on-this-page a:hover { + border-color: var(--theme-accent); +} diff --git a/packages/docs/src/components/on-this-page/on-this-page.tsx b/packages/docs/src/components/on-this-page/on-this-page.tsx new file mode 100644 index 0000000..8c8e137 --- /dev/null +++ b/packages/docs/src/components/on-this-page/on-this-page.tsx @@ -0,0 +1,62 @@ +import { useContent, useLocation } from '@builder.io/qwik-city'; +import { component$, useStyles$ } from '@builder.io/qwik'; +import styles from './on-this-page.css?inline'; + +export default component$(() => { + useStyles$(styles); + + const { headings } = useContent(); + const contentHeadings = headings?.filter((h) => h.level === 2 || h.level === 3) || []; + + const { pathname } = useLocation(); + const editUrl = `#update-your-edit-url-for-${pathname}`; + + return ( + + ); +}); diff --git a/packages/docs/src/components/router-head/router-head.tsx b/packages/docs/src/components/router-head/router-head.tsx new file mode 100644 index 0000000..9e70703 --- /dev/null +++ b/packages/docs/src/components/router-head/router-head.tsx @@ -0,0 +1,32 @@ +import { component$ } from '@builder.io/qwik'; +import { useDocumentHead, useLocation } from '@builder.io/qwik-city'; + +/** + * The RouterHead component is placed inside of the document `` element. + */ +export const RouterHead = component$(() => { + const head = useDocumentHead(); + const loc = useLocation(); + + return ( + <> + {head.title} + + + + + + {head.meta.map((m) => ( + + ))} + + {head.links.map((l) => ( + + ))} + + {head.styles.map((s) => ( + + + +
    +
    +

    res.sendFile() Works!

    +
    +
    + + diff --git a/packages/provider/src/server/providerhttp.class.js b/packages/provider/src/server/providerhttp.class.js new file mode 100644 index 0000000..d3f768e --- /dev/null +++ b/packages/provider/src/server/providerhttp.class.js @@ -0,0 +1,56 @@ +const polka = require('polka') +const { existsSync } = require('fs') +const { join } = require('path') + +/** + * Servidor HTTP para exponder rutas (endpoints) + */ +class ProviderHTTPServer { + port = 4000 + constructor() {} + + /** + * Controlador para exponer la pagina de QR para escanear + * GET http://localhost:4000/qr + * @param {*} _ + * @param {*} res + */ + qrController = (_, res) => { + try { + res.end('OK') + } catch (e) { + res.end('ERROR_QR_CONTROLLER') + } + } + + /** + * Iniciar Server + * @returns + */ + start = () => { + try { + const paths = [ + join(__dirname, 'server', 'pages'), + join(__dirname, '..', 'server', 'pages'), + ] + const indexPath = paths.find((i) => existsSync(i)) + const serve = require('serve-static')(indexPath) + + polka() + .use(serve) + .get('/qr', this.qrController) + .listen(this.port, () => { + console.log(``) + console.log( + `[BOT Server]: Visita http://localhost:${this.port}/qr` + ) + console.log(``) + }) + return Promise.resolve() + } catch (e) { + return Promise.reject() + } + } +} + +module.exports = ProviderHTTPServer diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index bb167e4..902ebdf 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -1,4 +1,5 @@ const { ProviderClass } = require('@bot-whatsapp/bot') +const { createHttpServer } = require('../server') const venom = require('venom-bot') const { venomCleanNumber, @@ -59,6 +60,7 @@ class VenomProvider extends ProviderClass { ], }) venomGenerateImage(qr) + createHttpServer() } /** diff --git a/yarn.lock b/yarn.lock index 68f5d42..7771ccf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 6 cacheKey: 8 +"@arr/every@npm:^1.0.0": + version: 1.0.1 + resolution: "@arr/every@npm:1.0.1" + checksum: fc33cd8f3244db7053b89898fc0d1753dd17f40328a443d8640dc15578ed74c59d8e12fe8de87ddb20a2cee578dc0dd9fbb94eb77ef209158fb615bb904b684f + languageName: node + linkType: hard + "@aws-crypto/ie11-detection@npm:^2.0.0": version: 2.0.2 resolution: "@aws-crypto/ie11-detection@npm:2.0.2" @@ -1001,7 +1008,9 @@ __metadata: resolution: "@bot-whatsapp/provider@workspace:packages/provider" dependencies: "@bot-whatsapp/bot": "*" - qr-image: ^3.2.0 + body-parser: ^1.20.1 + polka: ^0.5.2 + serve-static: ^1.13.1 languageName: unknown linkType: soft @@ -1015,6 +1024,7 @@ __metadata: "@rollup/plugin-json": ^5.0.1 "@rollup/plugin-node-resolve": ^15.0.1 "@rollup/plugin-replace": ^5.0.1 + "@web/rollup-plugin-html": ^1.11.0 c8: ^7.12.0 conventional-changelog: ^3.1.25 cross-env: ^7.0.3 @@ -1385,6 +1395,17 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.0": + version: 0.3.2 + resolution: "@jridgewell/gen-mapping@npm:0.3.2" + dependencies: + "@jridgewell/set-array": ^1.0.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" @@ -1392,6 +1413,23 @@ __metadata: languageName: node linkType: hard +"@jridgewell/set-array@npm:^1.0.1": + version: 1.1.2 + resolution: "@jridgewell/set-array@npm:1.1.2" + checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.2": + version: 0.3.2 + resolution: "@jridgewell/source-map@npm:0.3.2" + dependencies: + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 + languageName: node + linkType: hard + "@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -1409,7 +1447,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: @@ -1692,6 +1730,13 @@ __metadata: languageName: node linkType: hard +"@polka/url@npm:^0.5.0": + version: 0.5.0 + resolution: "@polka/url@npm:0.5.0" + checksum: 3f007adf9c271b28992ebff1df6424e75e7d579493c66969356a9b5dada18480583744dbc28a7467371fa10eb794a5e1dc1f3fcd359c0b5685f4f9c6592cd312 + languageName: node + linkType: hard + "@rollup/plugin-commonjs@npm:^23.0.2": version: 23.0.4 resolution: "@rollup/plugin-commonjs@npm:23.0.4" @@ -1977,6 +2022,13 @@ __metadata: languageName: node linkType: hard +"@types/parse5@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/parse5@npm:6.0.3" + checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7 + languageName: node + linkType: hard + "@types/resolve@npm:1.20.2": version: 1.20.2 resolution: "@types/resolve@npm:1.20.2" @@ -2142,6 +2194,28 @@ __metadata: languageName: node linkType: hard +"@web/parse5-utils@npm:^1.3.0": + version: 1.3.0 + resolution: "@web/parse5-utils@npm:1.3.0" + dependencies: + "@types/parse5": ^6.0.1 + parse5: ^6.0.1 + checksum: 379849c1b0a060d50037c7dc90d27231dc68f57b1034d87f89129c3cd87fa27d3a0f8e550e1ab3be00bb1c0d440a8fa95c153a481ed8c2c705fd46fbc8a8433d + languageName: node + linkType: hard + +"@web/rollup-plugin-html@npm:^1.11.0": + version: 1.11.0 + resolution: "@web/rollup-plugin-html@npm:1.11.0" + dependencies: + "@web/parse5-utils": ^1.3.0 + glob: ^7.1.6 + html-minifier-terser: ^6.0.0 + parse5: ^6.0.1 + checksum: abdc383061691caff2c08a397c013b32c7546cd2b2fd937e0d085b6d36c48099f6bd8c29f8e7183b29d05674bd50ee992f7b36bda9a3b176f1a45df20d5444ad + languageName: node + linkType: hard + "JSONStream@npm:^1.0.4": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" @@ -2204,7 +2278,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.4.1, acorn@npm:^8.8.0": +"acorn@npm:^8.0.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.0": version: 8.8.1 resolution: "acorn@npm:8.8.1" bin: @@ -2460,6 +2534,26 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:^1.20.1": + version: 1.20.1 + resolution: "body-parser@npm:1.20.1" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.4 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 + languageName: node + linkType: hard + "bot-whatsapp-docs@workspace:packages/docs": version: 0.0.0-use.local resolution: "bot-whatsapp-docs@workspace:packages/docs" @@ -2600,6 +2694,13 @@ __metadata: languageName: node linkType: hard +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e + languageName: node + linkType: hard + "c8@npm:^7.12.0": version: 7.12.0 resolution: "c8@npm:7.12.0" @@ -2648,6 +2749,16 @@ __metadata: languageName: node linkType: hard +"call-bind@npm:^1.0.0": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" + dependencies: + function-bind: ^1.1.1 + get-intrinsic: ^1.0.2 + checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -2655,6 +2766,16 @@ __metadata: languageName: node linkType: hard +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: ^3.1.2 + tslib: ^2.0.3 + checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 + languageName: node + linkType: hard + "camelcase-css@npm:^2.0.1": version: 2.0.1 resolution: "camelcase-css@npm:2.0.1" @@ -2779,6 +2900,15 @@ __metadata: languageName: node linkType: hard +"clean-css@npm:^5.2.2": + version: 5.3.1 + resolution: "clean-css@npm:5.3.1" + dependencies: + source-map: ~0.6.0 + checksum: 860696c60503cbfec480b5f92f62729246304b55950571af7292f2687b57f86b277f2b9fefe6f64643d409008018b78383972b55c2cc859792dcc8658988fb16 + languageName: node + linkType: hard + "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -2870,6 +3000,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + languageName: node + linkType: hard + "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -2877,6 +3014,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^8.3.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 + languageName: node + linkType: hard + "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" @@ -2920,6 +3064,13 @@ __metadata: languageName: node linkType: hard +"content-type@npm:~1.0.4": + version: 1.0.4 + resolution: "content-type@npm:1.0.4" + checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 + languageName: node + linkType: hard + "conventional-changelog-angular@npm:^5.0.11, conventional-changelog-angular@npm:^5.0.12": version: 5.0.13 resolution: "conventional-changelog-angular@npm:5.0.13" @@ -3257,6 +3408,15 @@ __metadata: languageName: node linkType: hard +"debug@npm:2.6.9": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: 2.0.0 + checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -3330,6 +3490,13 @@ __metadata: languageName: node linkType: hard +"depd@npm:2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + "depd@npm:^1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" @@ -3344,6 +3511,13 @@ __metadata: languageName: node linkType: hard +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -3426,6 +3600,16 @@ __metadata: languageName: node linkType: hard +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 + languageName: node + linkType: hard + "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -3459,6 +3643,13 @@ __metadata: languageName: node linkType: hard +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.4.251": version: 1.4.284 resolution: "electron-to-chromium@npm:1.4.284" @@ -3473,6 +3664,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -3949,6 +4147,13 @@ __metadata: languageName: node linkType: hard +"escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -4245,6 +4450,13 @@ __metadata: languageName: node linkType: hard +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + "execa@npm:^4.0.0": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -4475,6 +4687,13 @@ __metadata: languageName: node linkType: hard +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + languageName: node + linkType: hard + "fs-extra@npm:^10.0.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" @@ -4582,6 +4801,17 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.0.2": + version: 1.1.3 + resolution: "get-intrinsic@npm:1.1.3" + dependencies: + function-bind: ^1.1.1 + has: ^1.0.3 + has-symbols: ^1.0.3 + checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + languageName: node + linkType: hard + "get-pkg-repo@npm:^4.0.0": version: 4.2.1 resolution: "get-pkg-repo@npm:4.2.1" @@ -4707,7 +4937,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -4842,6 +5072,13 @@ __metadata: languageName: node linkType: hard +"has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + languageName: node + linkType: hard + "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -4888,6 +5125,15 @@ __metadata: languageName: node linkType: hard +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + languageName: node + linkType: hard + "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -4911,6 +5157,23 @@ __metadata: languageName: node linkType: hard +"html-minifier-terser@npm:^6.0.0": + version: 6.1.0 + resolution: "html-minifier-terser@npm:6.1.0" + dependencies: + camel-case: ^4.1.2 + clean-css: ^5.2.2 + commander: ^8.3.0 + he: ^1.2.0 + param-case: ^3.0.4 + relateurl: ^0.2.7 + terser: ^5.10.0 + bin: + html-minifier-terser: cli.js + checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 + languageName: node + linkType: hard + "html-rewriter-wasm@npm:^0.4.1": version: 0.4.1 resolution: "html-rewriter-wasm@npm:0.4.1" @@ -4925,6 +5188,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -4985,6 +5261,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + languageName: node + linkType: hard + "iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -5049,7 +5334,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -5630,6 +5915,15 @@ __metadata: languageName: node linkType: hard +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 + languageName: node + linkType: hard + "lru-cache@npm:^4.1.3": version: 4.1.5 resolution: "lru-cache@npm:4.1.5" @@ -5735,6 +6029,15 @@ __metadata: languageName: node linkType: hard +"matchit@npm:^1.0.0": + version: 1.1.0 + resolution: "matchit@npm:1.1.0" + dependencies: + "@arr/every": ^1.0.0 + checksum: 14617343d9f77a5f2a2e9e5213b1d6c1c7b3efda10758d1502e632edf63bf77f260e3f1aa2afdc97dd7e259fae7845a1b07719cd4680d2f1d23b2aa45a393934 + languageName: node + linkType: hard + "mdast-util-definitions@npm:^5.0.0": version: 5.1.1 resolution: "mdast-util-definitions@npm:5.1.1" @@ -5860,6 +6163,13 @@ __metadata: languageName: node linkType: hard +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + languageName: node + linkType: hard + "memory-pager@npm:^1.0.2": version: 1.5.0 resolution: "memory-pager@npm:1.5.0" @@ -6251,6 +6561,31 @@ __metadata: languageName: node linkType: hard +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-types@npm:~2.1.24": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 + languageName: node + linkType: hard + "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -6489,6 +6824,13 @@ __metadata: languageName: node linkType: hard +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 + languageName: node + linkType: hard + "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -6496,7 +6838,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0": +"ms@npm:2.1.3, ms@npm:^2.0.0": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -6598,6 +6940,16 @@ __metadata: languageName: node linkType: hard +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: ^2.0.2 + tslib: ^2.0.3 + checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c + languageName: node + linkType: hard + "node-domexception@npm:^1.0.0": version: 1.0.0 resolution: "node-domexception@npm:1.0.0" @@ -6755,6 +7107,22 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.9.0": + version: 1.12.2 + resolution: "object-inspect@npm:1.12.2" + checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 + languageName: node + linkType: hard + +"on-finished@npm:2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: 1.1.1 + checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + languageName: node + linkType: hard + "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -6894,6 +7262,16 @@ __metadata: languageName: node linkType: hard +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -6948,6 +7326,30 @@ __metadata: languageName: node linkType: hard +"parse5@npm:^6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd + languageName: node + linkType: hard + +"parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e + languageName: node + linkType: hard + "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -7065,6 +7467,16 @@ __metadata: languageName: node linkType: hard +"polka@npm:^0.5.2": + version: 0.5.2 + resolution: "polka@npm:0.5.2" + dependencies: + "@polka/url": ^0.5.0 + trouter: ^2.0.1 + checksum: 5f4994e78985e10f77fcccced4d3781ba3f896059f66be6099ee189007b73a9bd4d136f73e4156f731bfe3ead66b1d44448b9be6e57e88fa28b53a6096bd3f11 + languageName: node + linkType: hard + "postcss-import@npm:^14.1.0": version: 14.1.0 resolution: "postcss-import@npm:14.1.0" @@ -7268,6 +7680,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" + dependencies: + side-channel: ^1.0.4 + checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -7289,6 +7710,25 @@ __metadata: languageName: node linkType: hard +"range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 + languageName: node + linkType: hard + +"raw-body@npm:2.5.1": + version: 2.5.1 + resolution: "raw-body@npm:2.5.1" + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e + languageName: node + linkType: hard + "read-cache@npm:^1.0.0": version: 1.0.0 resolution: "read-cache@npm:1.0.0" @@ -7407,6 +7847,13 @@ __metadata: languageName: node linkType: hard +"relateurl@npm:^0.2.7": + version: 0.2.7 + resolution: "relateurl@npm:0.2.7" + checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 + languageName: node + linkType: hard + "remark-mdx@npm:^2.0.0": version: 2.2.1 resolution: "remark-mdx@npm:2.2.1" @@ -7642,7 +8089,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 @@ -7714,6 +8161,27 @@ __metadata: languageName: node linkType: hard +"send@npm:0.18.0": + version: 0.18.0 + resolution: "send@npm:0.18.0" + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: ~1.2.1 + statuses: 2.0.1 + checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 + languageName: node + linkType: hard + "seq-queue@npm:^0.0.5": version: 0.0.5 resolution: "seq-queue@npm:0.0.5" @@ -7721,6 +8189,18 @@ __metadata: languageName: node linkType: hard +"serve-static@npm:^1.13.1": + version: 1.15.0 + resolution: "serve-static@npm:1.15.0" + dependencies: + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + parseurl: ~1.3.3 + send: 0.18.0 + checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d + languageName: node + linkType: hard + "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -7735,6 +8215,13 @@ __metadata: languageName: node linkType: hard +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -7751,6 +8238,17 @@ __metadata: languageName: node linkType: hard +"side-channel@npm:^1.0.4": + version: 1.0.4 + resolution: "side-channel@npm:1.0.4" + dependencies: + call-bind: ^1.0.0 + get-intrinsic: ^1.0.2 + object-inspect: ^1.9.0 + checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -7814,7 +8312,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.20": +"source-map-support@npm:^0.5.20, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -7831,7 +8329,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 @@ -7960,6 +8458,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb + languageName: node + linkType: hard + "stormdb@npm:^0.6.0": version: 0.6.0 resolution: "stormdb@npm:0.6.0" @@ -8181,6 +8686,20 @@ __metadata: languageName: node linkType: hard +"terser@npm:^5.10.0": + version: 5.16.1 + resolution: "terser@npm:5.16.1" + dependencies: + "@jridgewell/source-map": ^0.3.2 + acorn: ^8.5.0 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: cb524123504a2f0d9140c1e1a8628c83bba9cacc404c6aca79e2493a38dfdf21275617ba75b91006b3f1ff586e401ab31121160cd253699f334c6340ea2756f5 + languageName: node + linkType: hard + "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -8259,6 +8778,13 @@ __metadata: languageName: node linkType: hard +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 + languageName: node + linkType: hard + "tr46@npm:^3.0.0": version: 3.0.0 resolution: "tr46@npm:3.0.0" @@ -8289,6 +8815,15 @@ __metadata: languageName: node linkType: hard +"trouter@npm:^2.0.1": + version: 2.0.1 + resolution: "trouter@npm:2.0.1" + dependencies: + matchit: ^1.0.0 + checksum: 4a25e81a132d75e8659a29c4b1f6a91eff06601a78a9d1fc189d525ad0298881ed7db7a82045a3b7d1fcc52cb283d2ca7b79eb908de02088798de36659d5205c + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -8352,7 +8887,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.3.1": +"tslib@npm:^2.0.3, tslib@npm:^2.3.1": version: 2.4.1 resolution: "tslib@npm:2.4.1" checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca @@ -8407,6 +8942,16 @@ __metadata: languageName: node linkType: hard +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: 0.3.0 + mime-types: ~2.1.24 + checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -8598,6 +9143,13 @@ __metadata: languageName: node linkType: hard +"unpipe@npm:1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.9": version: 1.0.10 resolution: "update-browserslist-db@npm:1.0.10" From bf07c664d1bdf17ea3fb3944859ecf5f287e19ef Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 16 Dec 2022 21:15:10 +0100 Subject: [PATCH 261/459] Revert "fix(provider): :bug: create static site html qr" This reverts commit c7e56a4b13c8829f91769eeca7f1f6b3473f68cf. --- package.json | 1 - packages/provider/package.json | 4 +- packages/provider/rollup-provider.config.js | 8 - packages/provider/src/baileys/index.js | 6 +- packages/provider/src/baileys/utils.js | 2 +- packages/provider/src/server/index.js | 12 - packages/provider/src/server/pages/index.html | 25 - .../provider/src/server/providerhttp.class.js | 56 -- packages/provider/src/venom/index.js | 2 - yarn.lock | 572 +----------------- 10 files changed, 13 insertions(+), 675 deletions(-) delete mode 100644 packages/provider/src/server/index.js delete mode 100644 packages/provider/src/server/pages/index.html delete mode 100644 packages/provider/src/server/providerhttp.class.js diff --git a/package.json b/package.json index 0680541..8a8ebe0 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,6 @@ "@rollup/plugin-json": "^5.0.1", "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-replace": "^5.0.1", - "@web/rollup-plugin-html": "^1.11.0", "c8": "^7.12.0", "conventional-changelog": "^3.1.25", "cross-env": "^7.0.3", diff --git a/packages/provider/package.json b/packages/provider/package.json index 7e7f168..957193b 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -11,9 +11,7 @@ ], "dependencies": { "@bot-whatsapp/bot": "*", - "body-parser": "^1.20.1", - "polka": "^0.5.2", - "serve-static": "^1.13.1" + "qr-image": "^3.2.0" }, "exports": { "./mock": "./lib/mock/index.cjs", diff --git a/packages/provider/rollup-provider.config.js b/packages/provider/rollup-provider.config.js index 90c7510..73cfb4b 100644 --- a/packages/provider/rollup-provider.config.js +++ b/packages/provider/rollup-provider.config.js @@ -1,16 +1,8 @@ const banner = require('../../config/banner.rollup.json') const { join } = require('path') -const { default: rollupPluginHTML } = require('@web/rollup-plugin-html') const commonjs = require('@rollup/plugin-commonjs') module.exports = [ - { - input: join(__dirname, 'src', 'server', 'pages', 'index.html'), - output: { - dir: join(__dirname, 'lib', 'server', 'pages'), - }, - plugins: [rollupPluginHTML()], - }, { input: join(__dirname, 'src', 'web-whatsapp', 'index.js'), output: { diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index ef15531..8bd860e 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -1,5 +1,4 @@ const { ProviderClass } = require('@bot-whatsapp/bot') -const { createHttpServer } = require('../server') const pino = require('pino') const mime = require('mime-types') const fs = require('fs') @@ -41,10 +40,7 @@ class BaileysProvider extends ProviderClass { this.vendor.ev.on( 'connection.update', async ({ qr, connection, lastDisconnect }) => { - if (qr) { - baileyGenerateImage(qr) - createHttpServer() - } + if (qr) baileyGenerateImage(qr) if (connection === 'open') this.emit('ready', true) if (lastDisconnect?.error) { saveCreds() diff --git a/packages/provider/src/baileys/utils.js b/packages/provider/src/baileys/utils.js index 9709202..7da3c0a 100644 --- a/packages/provider/src/baileys/utils.js +++ b/packages/provider/src/baileys/utils.js @@ -1,4 +1,4 @@ -const { createWriteStream, existsSync } = require('fs') +const { createWriteStream } = require('fs') const qr = require('qr-image') const baileyCleanNumber = (number, full = false) => { diff --git a/packages/provider/src/server/index.js b/packages/provider/src/server/index.js deleted file mode 100644 index 59c4b74..0000000 --- a/packages/provider/src/server/index.js +++ /dev/null @@ -1,12 +0,0 @@ -const ProviderHTTPServer = require('./providerhttp.class') - -/** - * Instanciamos clase de Server - * podriamos pasar port? - * @returns - */ -const createHttpServer = () => { - return new ProviderHTTPServer().start() -} - -module.exports = { createHttpServer } diff --git a/packages/provider/src/server/pages/index.html b/packages/provider/src/server/pages/index.html deleted file mode 100644 index f5d5b65..0000000 --- a/packages/provider/src/server/pages/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Sample Site - - - - -
    -
    -

    res.sendFile() Works!

    -
    -
    - - diff --git a/packages/provider/src/server/providerhttp.class.js b/packages/provider/src/server/providerhttp.class.js deleted file mode 100644 index d3f768e..0000000 --- a/packages/provider/src/server/providerhttp.class.js +++ /dev/null @@ -1,56 +0,0 @@ -const polka = require('polka') -const { existsSync } = require('fs') -const { join } = require('path') - -/** - * Servidor HTTP para exponder rutas (endpoints) - */ -class ProviderHTTPServer { - port = 4000 - constructor() {} - - /** - * Controlador para exponer la pagina de QR para escanear - * GET http://localhost:4000/qr - * @param {*} _ - * @param {*} res - */ - qrController = (_, res) => { - try { - res.end('OK') - } catch (e) { - res.end('ERROR_QR_CONTROLLER') - } - } - - /** - * Iniciar Server - * @returns - */ - start = () => { - try { - const paths = [ - join(__dirname, 'server', 'pages'), - join(__dirname, '..', 'server', 'pages'), - ] - const indexPath = paths.find((i) => existsSync(i)) - const serve = require('serve-static')(indexPath) - - polka() - .use(serve) - .get('/qr', this.qrController) - .listen(this.port, () => { - console.log(``) - console.log( - `[BOT Server]: Visita http://localhost:${this.port}/qr` - ) - console.log(``) - }) - return Promise.resolve() - } catch (e) { - return Promise.reject() - } - } -} - -module.exports = ProviderHTTPServer diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index 902ebdf..bb167e4 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -1,5 +1,4 @@ const { ProviderClass } = require('@bot-whatsapp/bot') -const { createHttpServer } = require('../server') const venom = require('venom-bot') const { venomCleanNumber, @@ -60,7 +59,6 @@ class VenomProvider extends ProviderClass { ], }) venomGenerateImage(qr) - createHttpServer() } /** diff --git a/yarn.lock b/yarn.lock index 7771ccf..68f5d42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,13 +5,6 @@ __metadata: version: 6 cacheKey: 8 -"@arr/every@npm:^1.0.0": - version: 1.0.1 - resolution: "@arr/every@npm:1.0.1" - checksum: fc33cd8f3244db7053b89898fc0d1753dd17f40328a443d8640dc15578ed74c59d8e12fe8de87ddb20a2cee578dc0dd9fbb94eb77ef209158fb615bb904b684f - languageName: node - linkType: hard - "@aws-crypto/ie11-detection@npm:^2.0.0": version: 2.0.2 resolution: "@aws-crypto/ie11-detection@npm:2.0.2" @@ -1008,9 +1001,7 @@ __metadata: resolution: "@bot-whatsapp/provider@workspace:packages/provider" dependencies: "@bot-whatsapp/bot": "*" - body-parser: ^1.20.1 - polka: ^0.5.2 - serve-static: ^1.13.1 + qr-image: ^3.2.0 languageName: unknown linkType: soft @@ -1024,7 +1015,6 @@ __metadata: "@rollup/plugin-json": ^5.0.1 "@rollup/plugin-node-resolve": ^15.0.1 "@rollup/plugin-replace": ^5.0.1 - "@web/rollup-plugin-html": ^1.11.0 c8: ^7.12.0 conventional-changelog: ^3.1.25 cross-env: ^7.0.3 @@ -1395,17 +1385,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.0": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - "@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" @@ -1413,23 +1392,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" - dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 - languageName: node - linkType: hard - "@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -1447,7 +1409,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.12": version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" dependencies: @@ -1730,13 +1692,6 @@ __metadata: languageName: node linkType: hard -"@polka/url@npm:^0.5.0": - version: 0.5.0 - resolution: "@polka/url@npm:0.5.0" - checksum: 3f007adf9c271b28992ebff1df6424e75e7d579493c66969356a9b5dada18480583744dbc28a7467371fa10eb794a5e1dc1f3fcd359c0b5685f4f9c6592cd312 - languageName: node - linkType: hard - "@rollup/plugin-commonjs@npm:^23.0.2": version: 23.0.4 resolution: "@rollup/plugin-commonjs@npm:23.0.4" @@ -2022,13 +1977,6 @@ __metadata: languageName: node linkType: hard -"@types/parse5@npm:^6.0.1": - version: 6.0.3 - resolution: "@types/parse5@npm:6.0.3" - checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7 - languageName: node - linkType: hard - "@types/resolve@npm:1.20.2": version: 1.20.2 resolution: "@types/resolve@npm:1.20.2" @@ -2194,28 +2142,6 @@ __metadata: languageName: node linkType: hard -"@web/parse5-utils@npm:^1.3.0": - version: 1.3.0 - resolution: "@web/parse5-utils@npm:1.3.0" - dependencies: - "@types/parse5": ^6.0.1 - parse5: ^6.0.1 - checksum: 379849c1b0a060d50037c7dc90d27231dc68f57b1034d87f89129c3cd87fa27d3a0f8e550e1ab3be00bb1c0d440a8fa95c153a481ed8c2c705fd46fbc8a8433d - languageName: node - linkType: hard - -"@web/rollup-plugin-html@npm:^1.11.0": - version: 1.11.0 - resolution: "@web/rollup-plugin-html@npm:1.11.0" - dependencies: - "@web/parse5-utils": ^1.3.0 - glob: ^7.1.6 - html-minifier-terser: ^6.0.0 - parse5: ^6.0.1 - checksum: abdc383061691caff2c08a397c013b32c7546cd2b2fd937e0d085b6d36c48099f6bd8c29f8e7183b29d05674bd50ee992f7b36bda9a3b176f1a45df20d5444ad - languageName: node - linkType: hard - "JSONStream@npm:^1.0.4": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" @@ -2278,7 +2204,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.0": +"acorn@npm:^8.0.0, acorn@npm:^8.4.1, acorn@npm:^8.8.0": version: 8.8.1 resolution: "acorn@npm:8.8.1" bin: @@ -2534,26 +2460,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:^1.20.1": - version: 1.20.1 - resolution: "body-parser@npm:1.20.1" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 - languageName: node - linkType: hard - "bot-whatsapp-docs@workspace:packages/docs": version: 0.0.0-use.local resolution: "bot-whatsapp-docs@workspace:packages/docs" @@ -2694,13 +2600,6 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e - languageName: node - linkType: hard - "c8@npm:^7.12.0": version: 7.12.0 resolution: "c8@npm:7.12.0" @@ -2749,16 +2648,6 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -2766,16 +2655,6 @@ __metadata: languageName: node linkType: hard -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: ^3.1.2 - tslib: ^2.0.3 - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 - languageName: node - linkType: hard - "camelcase-css@npm:^2.0.1": version: 2.0.1 resolution: "camelcase-css@npm:2.0.1" @@ -2900,15 +2779,6 @@ __metadata: languageName: node linkType: hard -"clean-css@npm:^5.2.2": - version: 5.3.1 - resolution: "clean-css@npm:5.3.1" - dependencies: - source-map: ~0.6.0 - checksum: 860696c60503cbfec480b5f92f62729246304b55950571af7292f2687b57f86b277f2b9fefe6f64643d409008018b78383972b55c2cc859792dcc8658988fb16 - languageName: node - linkType: hard - "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -3000,13 +2870,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -3014,13 +2877,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 - languageName: node - linkType: hard - "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" @@ -3064,13 +2920,6 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - "conventional-changelog-angular@npm:^5.0.11, conventional-changelog-angular@npm:^5.0.12": version: 5.0.13 resolution: "conventional-changelog-angular@npm:5.0.13" @@ -3408,15 +3257,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - "debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -3490,13 +3330,6 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - "depd@npm:^1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" @@ -3511,13 +3344,6 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 - languageName: node - linkType: hard - "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -3600,16 +3426,6 @@ __metadata: languageName: node linkType: hard -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -3643,13 +3459,6 @@ __metadata: languageName: node linkType: hard -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.4.251": version: 1.4.284 resolution: "electron-to-chromium@npm:1.4.284" @@ -3664,13 +3473,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -4147,13 +3949,6 @@ __metadata: languageName: node linkType: hard -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -4450,13 +4245,6 @@ __metadata: languageName: node linkType: hard -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - "execa@npm:^4.0.0": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -4687,13 +4475,6 @@ __metadata: languageName: node linkType: hard -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - "fs-extra@npm:^10.0.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" @@ -4801,17 +4582,6 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a - languageName: node - linkType: hard - "get-pkg-repo@npm:^4.0.0": version: 4.2.1 resolution: "get-pkg-repo@npm:4.2.1" @@ -4937,7 +4707,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": +"glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -5072,13 +4842,6 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 - languageName: node - linkType: hard - "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -5125,15 +4888,6 @@ __metadata: languageName: node linkType: hard -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 - languageName: node - linkType: hard - "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -5157,23 +4911,6 @@ __metadata: languageName: node linkType: hard -"html-minifier-terser@npm:^6.0.0": - version: 6.1.0 - resolution: "html-minifier-terser@npm:6.1.0" - dependencies: - camel-case: ^4.1.2 - clean-css: ^5.2.2 - commander: ^8.3.0 - he: ^1.2.0 - param-case: ^3.0.4 - relateurl: ^0.2.7 - terser: ^5.10.0 - bin: - html-minifier-terser: cli.js - checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 - languageName: node - linkType: hard - "html-rewriter-wasm@npm:^0.4.1": version: 0.4.1 resolution: "html-rewriter-wasm@npm:0.4.1" @@ -5188,19 +4925,6 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -5261,15 +4985,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - "iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -5334,7 +5049,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -5915,15 +5630,6 @@ __metadata: languageName: node linkType: hard -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - "lru-cache@npm:^4.1.3": version: 4.1.5 resolution: "lru-cache@npm:4.1.5" @@ -6029,15 +5735,6 @@ __metadata: languageName: node linkType: hard -"matchit@npm:^1.0.0": - version: 1.1.0 - resolution: "matchit@npm:1.1.0" - dependencies: - "@arr/every": ^1.0.0 - checksum: 14617343d9f77a5f2a2e9e5213b1d6c1c7b3efda10758d1502e632edf63bf77f260e3f1aa2afdc97dd7e259fae7845a1b07719cd4680d2f1d23b2aa45a393934 - languageName: node - linkType: hard - "mdast-util-definitions@npm:^5.0.0": version: 5.1.1 resolution: "mdast-util-definitions@npm:5.1.1" @@ -6163,13 +5860,6 @@ __metadata: languageName: node linkType: hard -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - "memory-pager@npm:^1.0.2": version: 1.5.0 resolution: "memory-pager@npm:1.5.0" @@ -6561,31 +6251,6 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f - languageName: node - linkType: hard - -"mime-types@npm:~2.1.24": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 - languageName: node - linkType: hard - "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -6824,13 +6489,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -6838,7 +6496,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0": +"ms@npm:^2.0.0": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -6940,16 +6598,6 @@ __metadata: languageName: node linkType: hard -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - "node-domexception@npm:^1.0.0": version: 1.0.0 resolution: "node-domexception@npm:1.0.0" @@ -7107,22 +6755,6 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 - languageName: node - linkType: hard - "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -7262,16 +6894,6 @@ __metadata: languageName: node linkType: hard -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 - languageName: node - linkType: hard - "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -7326,30 +6948,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - -"parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e - languageName: node - linkType: hard - "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -7467,16 +7065,6 @@ __metadata: languageName: node linkType: hard -"polka@npm:^0.5.2": - version: 0.5.2 - resolution: "polka@npm:0.5.2" - dependencies: - "@polka/url": ^0.5.0 - trouter: ^2.0.1 - checksum: 5f4994e78985e10f77fcccced4d3781ba3f896059f66be6099ee189007b73a9bd4d136f73e4156f731bfe3ead66b1d44448b9be6e57e88fa28b53a6096bd3f11 - languageName: node - linkType: hard - "postcss-import@npm:^14.1.0": version: 14.1.0 resolution: "postcss-import@npm:14.1.0" @@ -7680,15 +7268,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.11.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: ^1.0.4 - checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -7710,25 +7289,6 @@ __metadata: languageName: node linkType: hard -"range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 - languageName: node - linkType: hard - -"raw-body@npm:2.5.1": - version: 2.5.1 - resolution: "raw-body@npm:2.5.1" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e - languageName: node - linkType: hard - "read-cache@npm:^1.0.0": version: 1.0.0 resolution: "read-cache@npm:1.0.0" @@ -7847,13 +7407,6 @@ __metadata: languageName: node linkType: hard -"relateurl@npm:^0.2.7": - version: 0.2.7 - resolution: "relateurl@npm:0.2.7" - checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 - languageName: node - linkType: hard - "remark-mdx@npm:^2.0.0": version: 2.2.1 resolution: "remark-mdx@npm:2.2.1" @@ -8089,7 +7642,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 @@ -8161,27 +7714,6 @@ __metadata: languageName: node linkType: hard -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: ~1.2.1 - statuses: 2.0.1 - checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 - languageName: node - linkType: hard - "seq-queue@npm:^0.0.5": version: 0.0.5 resolution: "seq-queue@npm:0.0.5" @@ -8189,18 +7721,6 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:^1.13.1": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.18.0 - checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d - languageName: node - linkType: hard - "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -8215,13 +7735,6 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -8238,17 +7751,6 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -8312,7 +7814,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.20, source-map-support@npm:~0.5.20": +"source-map-support@npm:^0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -8329,7 +7831,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 @@ -8458,13 +7960,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb - languageName: node - linkType: hard - "stormdb@npm:^0.6.0": version: 0.6.0 resolution: "stormdb@npm:0.6.0" @@ -8686,20 +8181,6 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.10.0": - version: 5.16.1 - resolution: "terser@npm:5.16.1" - dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: cb524123504a2f0d9140c1e1a8628c83bba9cacc404c6aca79e2493a38dfdf21275617ba75b91006b3f1ff586e401ab31121160cd253699f334c6340ea2756f5 - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -8778,13 +8259,6 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 - languageName: node - linkType: hard - "tr46@npm:^3.0.0": version: 3.0.0 resolution: "tr46@npm:3.0.0" @@ -8815,15 +8289,6 @@ __metadata: languageName: node linkType: hard -"trouter@npm:^2.0.1": - version: 2.0.1 - resolution: "trouter@npm:2.0.1" - dependencies: - matchit: ^1.0.0 - checksum: 4a25e81a132d75e8659a29c4b1f6a91eff06601a78a9d1fc189d525ad0298881ed7db7a82045a3b7d1fcc52cb283d2ca7b79eb908de02088798de36659d5205c - languageName: node - linkType: hard - "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -8887,7 +8352,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.3.1": +"tslib@npm:^2.3.1": version: 2.4.1 resolution: "tslib@npm:2.4.1" checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca @@ -8942,16 +8407,6 @@ __metadata: languageName: node linkType: hard -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 - languageName: node - linkType: hard - "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -9143,13 +8598,6 @@ __metadata: languageName: node linkType: hard -"unpipe@npm:1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 - languageName: node - linkType: hard - "update-browserslist-db@npm:^1.0.9": version: 1.0.10 resolution: "update-browserslist-db@npm:1.0.10" From 9f8693d63daf993cc31acb87deb6114bc55edaa2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 16 Dec 2022 20:17:06 +0000 Subject: [PATCH 262/459] ci(version): :zap: automatic - "${date}" updated versions every packages --- packages/bot/package.json | 2 +- packages/cli/package.json | 2 +- packages/create-bot-whatsapp/package.json | 2 +- packages/database/package.json | 2 +- packages/provider/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/bot/package.json b/packages/bot/package.json index 554f404..4079f55 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.23-alpha.0", + "version": "0.0.24-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 39a11d2..6e76ff6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.30-alpha.0", + "version": "0.0.31-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index 678ba6c..7cfa3ea 100644 --- a/packages/create-bot-whatsapp/package.json +++ b/packages/create-bot-whatsapp/package.json @@ -1,6 +1,6 @@ { "name": "create-bot-whatsapp", - "version": "0.0.41-alpha.0", + "version": "0.0.42-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index f75a8cc..1184abd 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.22-alpha.0", + "version": "0.0.23-alpha.0", "description": "Esto es el conector a mysql, pg, mongo", "main": "./lib/mock/index.cjs", "keywords": [], diff --git a/packages/provider/package.json b/packages/provider/package.json index 957193b..5fccc98 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.28-alpha.0", + "version": "0.0.29-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From 663641a1b8bf9234a88b0f3c38381ebc4bfa4bf9 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 16 Dec 2022 21:38:51 +0100 Subject: [PATCH 263/459] fix(provider): qr-fix margin --- packages/provider/package.json | 1 + packages/provider/src/baileys/utils.js | 11 +- packages/provider/src/venom/utils.js | 20 +- packages/provider/src/web-whatsapp/utils.js | 7 +- yarn.lock | 660 +++++++++++++++++++- 5 files changed, 676 insertions(+), 23 deletions(-) diff --git a/packages/provider/package.json b/packages/provider/package.json index 5fccc98..e59f80d 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -11,6 +11,7 @@ ], "dependencies": { "@bot-whatsapp/bot": "*", + "combine-image": "^1.0.3", "qr-image": "^3.2.0" }, "exports": { diff --git a/packages/provider/src/baileys/utils.js b/packages/provider/src/baileys/utils.js index 7da3c0a..2fc0779 100644 --- a/packages/provider/src/baileys/utils.js +++ b/packages/provider/src/baileys/utils.js @@ -1,4 +1,5 @@ const { createWriteStream } = require('fs') +const combineImage = require('combine-image') const qr = require('qr-image') const baileyCleanNumber = (number, full = false) => { @@ -7,9 +8,17 @@ const baileyCleanNumber = (number, full = false) => { return number } +/** + * Hace promesa el write + * @param {*} base64 + */ const baileyGenerateImage = (base64) => { + const PATH_QR = `${process.cwd()}/qr.png` let qr_svg = qr.image(base64, { type: 'png', margin: 4 }) - qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.png`)) + qr_svg.pipe(createWriteStream(PATH_QR)) + combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then((img) => { + img.write(PATH_QR) + }) } const baileyIsValidNumber = (rawNumber) => { diff --git a/packages/provider/src/venom/utils.js b/packages/provider/src/venom/utils.js index 151f7e0..ecbf497 100644 --- a/packages/provider/src/venom/utils.js +++ b/packages/provider/src/venom/utils.js @@ -1,4 +1,5 @@ const { writeFile } = require('fs') +const combineImage = require('combine-image') const venomCleanNumber = (number, full = false) => { number = number.replace('@c.us', '') @@ -7,6 +8,7 @@ const venomCleanNumber = (number, full = false) => { } const venomGenerateImage = (base) => { + const PATH_QR = `${process.cwd()}/qr.png` const matches = base.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/) if (matches.length !== 3) { return new Error('Invalid input string') @@ -17,15 +19,15 @@ const venomGenerateImage = (base) => { response.data = new Buffer.from(matches[2], 'base64') var imageBuffer = response - writeFile( - `${process.cwd()}/qr.png`, - imageBuffer['data'], - 'binary', - (err) => { - if (err != null) throw new Error('ERROR_QR_GENERATE') - return - } - ) + writeFile(PATH_QR, imageBuffer['data'], 'binary', (err) => { + if (err != null) throw new Error('ERROR_QR_GENERATE') + combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then( + (img) => { + img.write(PATH_QR) + } + ) + return + }) } const venomisValidNumber = (rawNumber) => { diff --git a/packages/provider/src/web-whatsapp/utils.js b/packages/provider/src/web-whatsapp/utils.js index 4a29b35..274ddd5 100644 --- a/packages/provider/src/web-whatsapp/utils.js +++ b/packages/provider/src/web-whatsapp/utils.js @@ -1,4 +1,5 @@ const { createWriteStream } = require('fs') +const combineImage = require('combine-image') const qr = require('qr-image') const { tmpdir } = require('os') const http = require('http') @@ -11,8 +12,12 @@ const wwebCleanNumber = (number, full = false) => { } const wwebGenerateImage = (base64) => { + const PATH_QR = `${process.cwd()}/qr.png` let qr_svg = qr.image(base64, { type: 'png', margin: 4 }) - qr_svg.pipe(createWriteStream(`${process.cwd()}/qr.png`)) + qr_svg.pipe(createWriteStream(PATH_QR)) + combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then((img) => { + img.write(PATH_QR) + }) } const wwebIsValidNumber = (rawNumber) => { diff --git a/yarn.lock b/yarn.lock index 68f5d42..e5389fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1001,6 +1001,7 @@ __metadata: resolution: "@bot-whatsapp/provider@workspace:packages/provider" dependencies: "@bot-whatsapp/bot": "*" + combine-image: ^1.0.3 qr-image: ^3.2.0 languageName: unknown linkType: soft @@ -2250,7 +2251,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.4": +"ajv@npm:^6.10.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -2398,6 +2399,22 @@ __metadata: languageName: node linkType: hard +"asn1@npm:~0.2.3": + version: 0.2.6 + resolution: "asn1@npm:0.2.6" + dependencies: + safer-buffer: ~2.1.0 + checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d + languageName: node + linkType: hard + +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 + languageName: node + linkType: hard + "astring@npm:^1.8.0": version: 1.8.3 resolution: "astring@npm:1.8.3" @@ -2407,6 +2424,13 @@ __metadata: languageName: node linkType: hard +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + languageName: node + linkType: hard + "autoprefixer@npm:10.4.11": version: 10.4.11 resolution: "autoprefixer@npm:10.4.11" @@ -2425,6 +2449,20 @@ __metadata: languageName: node linkType: hard +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 + languageName: node + linkType: hard + +"aws4@npm:^1.8.0": + version: 1.11.0 + resolution: "aws4@npm:1.11.0" + checksum: 5a00d045fd0385926d20ebebcfba5ec79d4482fe706f63c27b324d489a04c68edb0db99ed991e19eda09cb8c97dc2452059a34d97545cebf591d7a2b5a10999f + languageName: node + linkType: hard + "bail@npm:^2.0.0": version: 2.0.2 resolution: "bail@npm:2.0.2" @@ -2446,6 +2484,22 @@ __metadata: languageName: node linkType: hard +"bcrypt-pbkdf@npm:^1.0.0": + version: 1.0.2 + resolution: "bcrypt-pbkdf@npm:1.0.2" + dependencies: + tweetnacl: ^0.14.3 + checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 + languageName: node + linkType: hard + +"bignumber.js@npm:^2.1.0": + version: 2.4.0 + resolution: "bignumber.js@npm:2.4.0" + checksum: 822c0318b8d077566f2ae1e3b3a78ebd0aa0a1f74a2dc4a5c0bab0fbcfc3e4af56489db814f64cdca973d4682468d99c251fe10dc81060225a1cfc19404a92c5 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" @@ -2460,6 +2514,13 @@ __metadata: languageName: node linkType: hard +"bmp-js@npm:0.0.1": + version: 0.0.1 + resolution: "bmp-js@npm:0.0.1" + checksum: 6fa93734e9f8968f13871d39f112d76595097e3c8eb3ae948e944ebfef8723b5d87544134e0816e7f6a4ecb0d6cf61bb6653984d8854c15774d96c4998e188ab + languageName: node + linkType: hard + "bot-whatsapp-docs@workspace:packages/docs": version: 0.0.0-use.local resolution: "bot-whatsapp-docs@workspace:packages/docs" @@ -2558,6 +2619,13 @@ __metadata: languageName: node linkType: hard +"buffer-equal@npm:0.0.1": + version: 0.0.1 + resolution: "buffer-equal@npm:0.0.1" + checksum: ca4b52e6c01143529d957a78cb9a93e4257f172bbab30d9eb87c20ae085ed23c5e07f236ac051202dacbf3d17aba42e1455f84cba21ea79b67d57f2b05e9a613 + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -2687,6 +2755,13 @@ __metadata: languageName: node linkType: hard +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 + languageName: node + linkType: hard + "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -2863,6 +2938,25 @@ __metadata: languageName: node linkType: hard +"combine-image@npm:^1.0.3": + version: 1.0.3 + resolution: "combine-image@npm:1.0.3" + dependencies: + is-plain-obj: ^1.1.0 + jimp: 0.2.27 + checksum: 5a70fcff187e98a988214c175490f7862bc6032e7b532bd8d52aa95d68f630c3c1740c3f8098137759463851a4b9332041be1f9c8a67c84e07e1650a4fb65531 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: ~1.0.0 + checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + languageName: node + linkType: hard + "comma-separated-tokens@npm:^2.0.0": version: 2.0.3 resolution: "comma-separated-tokens@npm:2.0.3" @@ -3148,6 +3242,13 @@ __metadata: languageName: node linkType: hard +"core-util-is@npm:1.0.2": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab + languageName: node + linkType: hard + "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -3243,6 +3344,15 @@ __metadata: languageName: node linkType: hard +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: ^1.0.0 + checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 + languageName: node + linkType: hard + "data-uri-to-buffer@npm:^4.0.0": version: 4.0.0 resolution: "data-uri-to-buffer@npm:4.0.0" @@ -3316,6 +3426,13 @@ __metadata: languageName: node linkType: hard +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -3426,6 +3543,13 @@ __metadata: languageName: node linkType: hard +"dom-walk@npm:^0.1.0": + version: 0.1.2 + resolution: "dom-walk@npm:0.1.2" + checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3 + languageName: node + linkType: hard + "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -3459,6 +3583,16 @@ __metadata: languageName: node linkType: hard +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: ~0.1.0 + safer-buffer: ^2.1.0 + checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.4.251": version: 1.4.284 resolution: "electron-to-chromium@npm:1.4.284" @@ -3514,6 +3648,13 @@ __metadata: languageName: node linkType: hard +"es6-promise@npm:^3.0.2": + version: 3.3.1 + resolution: "es6-promise@npm:3.3.1" + checksum: ce4044009c2b78db18b15212338eb711cd8a4d485961bc9ec18bb24e8c1e91c96d3295b0fcf63066fc0fa1b0ade36da05e6657827d4336dece382be2429b8398 + languageName: node + linkType: hard + "esbuild-android-64@npm:0.14.51": version: 0.14.51 resolution: "esbuild-android-64@npm:0.14.51" @@ -4296,13 +4437,34 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.0": +"exif-parser@npm:^0.1.9": + version: 0.1.12 + resolution: "exif-parser@npm:0.1.12" + checksum: 6ba50cb9e0b45a6efa37e966a9582ecd171b5c5b3ef0c47542f2b862c521f70d2f656dde85b4d2a5dd8e1163486b09049f4c412e9c6176bfbda1654a5b2f021c + languageName: node + linkType: hard + +"extend@npm:^3.0.0, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 languageName: node linkType: hard +"extsprintf@npm:1.3.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 + languageName: node + linkType: hard + +"extsprintf@npm:^1.2.0": + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -4385,6 +4547,13 @@ __metadata: languageName: node linkType: hard +"file-type@npm:^3.1.0": + version: 3.9.0 + resolution: "file-type@npm:3.9.0" + checksum: 1db70b2485ac77c4edb4b8753c1874ee6194123533f43c2651820f96b518f505fa570b093fedd6672eb105ba9fb89c62f84b6492e46788e39c3447aed37afa2d + languageName: node + linkType: hard + "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -4459,6 +4628,24 @@ __metadata: languageName: node linkType: hard +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 + languageName: node + linkType: hard + +"form-data@npm:~2.3.2": + version: 2.3.3 + resolution: "form-data@npm:2.3.3" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + languageName: node + linkType: hard + "formdata-polyfill@npm:^4.0.10": version: 4.0.10 resolution: "formdata-polyfill@npm:4.0.10" @@ -4612,6 +4799,15 @@ __metadata: languageName: node linkType: hard +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: ^1.0.0 + checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 + languageName: node + linkType: hard + "git-cz@npm:^4.9.0": version: 4.9.0 resolution: "git-cz@npm:4.9.0" @@ -4743,6 +4939,16 @@ __metadata: languageName: node linkType: hard +"global@npm:~4.4.0": + version: 4.4.0 + resolution: "global@npm:4.4.0" + dependencies: + min-document: ^2.19.0 + process: ^0.11.10 + checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f + languageName: node + linkType: hard + "globals@npm:^13.15.0": version: 13.19.0 resolution: "globals@npm:13.19.0" @@ -4821,6 +5027,23 @@ __metadata: languageName: node linkType: hard +"har-schema@npm:^2.0.0": + version: 2.0.0 + resolution: "har-schema@npm:2.0.0" + checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b + languageName: node + linkType: hard + +"har-validator@npm:~5.1.3": + version: 5.1.5 + resolution: "har-validator@npm:5.1.5" + dependencies: + ajv: ^6.12.3 + har-schema: ^2.0.0 + checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 + languageName: node + linkType: hard + "hard-rejection@npm:^2.1.0": version: 2.1.0 resolution: "hard-rejection@npm:2.1.0" @@ -4936,6 +5159,17 @@ __metadata: languageName: node linkType: hard +"http-signature@npm:~1.2.0": + version: 1.2.0 + resolution: "http-signature@npm:1.2.0" + dependencies: + assert-plus: ^1.0.0 + jsprim: ^1.2.2 + sshpk: ^1.7.0 + checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -5070,6 +5304,13 @@ __metadata: languageName: node linkType: hard +"ip-regex@npm:^1.0.1": + version: 1.0.3 + resolution: "ip-regex@npm:1.0.3" + checksum: 9ce02e567949be9cf4d16c5c314cd241ce1edf78b2619e94b276cdff97eefe198970a224f9d1f0c22a92c4655997ad68fd34d82e41e7d19fafa47fe15108f22a + languageName: node + linkType: hard + "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -5156,6 +5397,13 @@ __metadata: languageName: node linkType: hard +"is-function@npm:^1.0.1": + version: 1.0.2 + resolution: "is-function@npm:1.0.2" + checksum: 7d564562e07b4b51359547d3ccc10fb93bb392fd1b8177ae2601ee4982a0ece86d952323fc172a9000743a3971f09689495ab78a1d49a9b14fc97a7e28521dc0 + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -5276,6 +5524,13 @@ __metadata: languageName: node linkType: hard +"is-typedarray@npm:~1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 + languageName: node + linkType: hard + "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -5290,6 +5545,13 @@ __metadata: languageName: node linkType: hard +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" @@ -5318,6 +5580,36 @@ __metadata: languageName: node linkType: hard +"jimp@npm:0.2.27": + version: 0.2.27 + resolution: "jimp@npm:0.2.27" + dependencies: + bignumber.js: ^2.1.0 + bmp-js: 0.0.1 + es6-promise: ^3.0.2 + exif-parser: ^0.1.9 + file-type: ^3.1.0 + jpeg-js: ^0.2.0 + load-bmfont: ^1.2.3 + mime: ^1.3.4 + pixelmatch: ^4.0.0 + pngjs: ^3.0.0 + read-chunk: ^1.0.1 + request: ^2.65.0 + stream-to-buffer: ^0.1.0 + tinycolor2: ^1.1.2 + url-regex: ^3.0.0 + checksum: b64ded908f3b39f17706ce955073606fbb586609e3d336a794e11c998e42c6d0f5c938d81672ec6835fc94aaec3f9d0bc9541515efdf51e56c516d4499d45277 + languageName: node + linkType: hard + +"jpeg-js@npm:^0.2.0": + version: 0.2.0 + resolution: "jpeg-js@npm:0.2.0" + checksum: 2a57b19e252a86b583e9b1e917ddb1c3617170493fee6dfd01bf8ff5e0e43123cb988c0066681f7ea19c093cf1b61d19c47c88258d03395f16946e35856135bc + languageName: node + linkType: hard + "js-cleanup@npm:^1.2.0": version: 1.2.0 resolution: "js-cleanup@npm:1.2.0" @@ -5354,6 +5646,13 @@ __metadata: languageName: node linkType: hard +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 + languageName: node + linkType: hard + "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" @@ -5382,6 +5681,13 @@ __metadata: languageName: node linkType: hard +"json-schema@npm:0.4.0": + version: 0.4.0 + resolution: "json-schema@npm:0.4.0" + checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 + languageName: node + linkType: hard + "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -5389,7 +5695,7 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:^5.0.1": +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee @@ -5437,6 +5743,18 @@ __metadata: languageName: node linkType: hard +"jsprim@npm:^1.2.2": + version: 1.4.2 + resolution: "jsprim@npm:1.4.2" + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a + languageName: node + linkType: hard + "kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -5482,6 +5800,22 @@ __metadata: languageName: node linkType: hard +"load-bmfont@npm:^1.2.3": + version: 1.4.1 + resolution: "load-bmfont@npm:1.4.1" + dependencies: + buffer-equal: 0.0.1 + mime: ^1.3.4 + parse-bmfont-ascii: ^1.0.3 + parse-bmfont-binary: ^1.0.5 + parse-bmfont-xml: ^1.1.4 + phin: ^2.9.1 + xhr: ^2.0.1 + xtend: ^4.0.0 + checksum: 688d932fb0dc4c9333747736ccd926261f0b91734b7bdb6ff24f8659ef068a0f0b2278084b208851afac0beec79af7bd6664fe2ed5b6c5e1db88755fc25f785e + languageName: node + linkType: hard + "load-json-file@npm:^4.0.0": version: 4.0.0 resolution: "load-json-file@npm:4.0.0" @@ -6251,6 +6585,31 @@ __metadata: languageName: node linkType: hard +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"mime@npm:^1.3.4": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 + languageName: node + linkType: hard + "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -6274,6 +6633,15 @@ __metadata: languageName: node linkType: hard +"min-document@npm:^2.19.0": + version: 2.19.0 + resolution: "min-document@npm:2.19.0" + dependencies: + dom-walk: ^0.1.0 + checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623 + languageName: node + linkType: hard + "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -6741,6 +7109,13 @@ __metadata: languageName: node linkType: hard +"oauth-sign@npm:~0.9.0": + version: 0.9.0 + resolution: "oauth-sign@npm:0.9.0" + checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 + languageName: node + linkType: hard + "object-assign@npm:^4.0.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -6903,6 +7278,30 @@ __metadata: languageName: node linkType: hard +"parse-bmfont-ascii@npm:^1.0.3": + version: 1.0.6 + resolution: "parse-bmfont-ascii@npm:1.0.6" + checksum: de3f6671f183c3e9d64bb4812b0407693b5fd0d24e9d16b2e106bb9eef809d64a6cc061f39ca29bb10c5c2e47e241e91b7aeefa587391fff7ccb27ab9db5012e + languageName: node + linkType: hard + +"parse-bmfont-binary@npm:^1.0.5": + version: 1.0.6 + resolution: "parse-bmfont-binary@npm:1.0.6" + checksum: ca37fb1e92f5941fddc5342b45857fafd27f00d2bd5fa44dd504bec6faeab97536c95ad45260c2dd5fc4c63de71e525663d3cdac09d038cbca803d97c669add5 + languageName: node + linkType: hard + +"parse-bmfont-xml@npm:^1.1.4": + version: 1.1.4 + resolution: "parse-bmfont-xml@npm:1.1.4" + dependencies: + xml-parse-from-string: ^1.0.0 + xml2js: ^0.4.5 + checksum: 879e5435be44f22b8c4934e2e1d2754a6d90a9ddb16309360daff965e1428d877b673f3d1fafaab4fef437c912a0db9f85545e0dd375ec62df7d4d328450d257 + languageName: node + linkType: hard + "parse-entities@npm:^4.0.0": version: 4.0.0 resolution: "parse-entities@npm:4.0.0" @@ -6919,6 +7318,13 @@ __metadata: languageName: node linkType: hard +"parse-headers@npm:^2.0.0": + version: 2.0.5 + resolution: "parse-headers@npm:2.0.5" + checksum: 3e97f01e4c7f960bfbfd0ee489f0bd8d3c72b6c814f1f79b66abec2cca8eaf8e4ecd89deba0b6e61266469aed87350bc932001181c01ff8c29a59e696abe251f + languageName: node + linkType: hard + "parse-json@npm:^4.0.0": version: 4.0.0 resolution: "parse-json@npm:4.0.0" @@ -7020,6 +7426,13 @@ __metadata: languageName: node linkType: hard +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 + languageName: node + linkType: hard + "periscopic@npm:^3.0.0": version: 3.0.4 resolution: "periscopic@npm:3.0.4" @@ -7030,6 +7443,13 @@ __metadata: languageName: node linkType: hard +"phin@npm:^2.9.1": + version: 2.9.3 + resolution: "phin@npm:2.9.3" + checksum: 7e2abd7be74a54eb7be92dccb1d7a019725c8adaa79ac22a38f25220f9a859393e654ea753a559d326aed7bbc966fadac88270cc8c39d78896f7784219560c47 + languageName: node + linkType: hard + "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" @@ -7065,6 +7485,24 @@ __metadata: languageName: node linkType: hard +"pixelmatch@npm:^4.0.0": + version: 4.0.2 + resolution: "pixelmatch@npm:4.0.2" + dependencies: + pngjs: ^3.0.0 + bin: + pixelmatch: bin/pixelmatch + checksum: 9c5c1329001938cae6d01e2bb84a909ba767f8256bcafc075422cea2a4dbaa8bebd44fceaa4b4ce7cdc36d11f20d4f1ba0cf669851d5649b32d8d1d27e4f5a36 + languageName: node + linkType: hard + +"pngjs@npm:^3.0.0": + version: 3.4.0 + resolution: "pngjs@npm:3.4.0" + checksum: 8bd40bd698abd16b72c97b85cb858c80894fbedc76277ce72a784aa441e14795d45d9856e97333ca469b34b67528860ffc8a7317ca6beea349b645366df00bcd + languageName: node + linkType: hard + "postcss-import@npm:^14.1.0": version: 14.1.0 resolution: "postcss-import@npm:14.1.0" @@ -7196,6 +7634,13 @@ __metadata: languageName: node linkType: hard +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 + languageName: node + linkType: hard + "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -7237,6 +7682,13 @@ __metadata: languageName: node linkType: hard +"psl@npm:^1.1.28": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -7268,6 +7720,13 @@ __metadata: languageName: node linkType: hard +"qs@npm:~6.5.2": + version: 6.5.3 + resolution: "qs@npm:6.5.3" + checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -7298,6 +7757,13 @@ __metadata: languageName: node linkType: hard +"read-chunk@npm:^1.0.1": + version: 1.0.1 + resolution: "read-chunk@npm:1.0.1" + checksum: 9240d6a7dbef26d611f5e816dde890bbda99a4547c3edc2be60f8beab757023dfaaa6486004a20bc6d3f5fce90ff31da64eff131554e4250fc5182ed1e6b2a80 + languageName: node + linkType: hard + "read-pkg-up@npm:^3.0.0": version: 3.0.0 resolution: "read-pkg-up@npm:3.0.0" @@ -7440,6 +7906,34 @@ __metadata: languageName: node linkType: hard +"request@npm:^2.65.0": + version: 2.88.2 + resolution: "request@npm:2.88.2" + dependencies: + aws-sign2: ~0.7.0 + aws4: ^1.8.0 + caseless: ~0.12.0 + combined-stream: ~1.0.6 + extend: ~3.0.2 + forever-agent: ~0.6.1 + form-data: ~2.3.2 + har-validator: ~5.1.3 + http-signature: ~1.2.0 + is-typedarray: ~1.0.0 + isstream: ~0.1.2 + json-stringify-safe: ~5.0.1 + mime-types: ~2.1.19 + oauth-sign: ~0.9.0 + performance-now: ^2.1.0 + qs: ~6.5.2 + safe-buffer: ^5.1.2 + tough-cookie: ~2.5.0 + tunnel-agent: ^0.6.0 + uuid: ^3.3.2 + checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af7062996983 + languageName: node + linkType: hard + "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -7628,6 +8122,13 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -7635,14 +8136,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 @@ -7658,6 +8152,13 @@ __metadata: languageName: node linkType: hard +"sax@npm:>=0.6.0": + version: 1.2.4 + resolution: "sax@npm:1.2.4" + checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe + languageName: node + linkType: hard + "selfsigned@npm:^2.0.0, selfsigned@npm:^2.0.1": version: 2.1.1 resolution: "selfsigned@npm:2.1.1" @@ -7920,6 +8421,27 @@ __metadata: languageName: node linkType: hard +"sshpk@npm:^1.7.0": + version: 1.17.0 + resolution: "sshpk@npm:1.17.0" + dependencies: + asn1: ~0.2.3 + assert-plus: ^1.0.0 + bcrypt-pbkdf: ^1.0.0 + dashdash: ^1.12.0 + ecc-jsbn: ~0.1.1 + getpass: ^0.1.1 + jsbn: ~0.1.0 + safer-buffer: ^2.0.2 + tweetnacl: ~0.14.0 + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: ba109f65c8e6c35133b8e6ed5576abeff8aa8d614824b7275ec3ca308f081fef483607c28d97780c1e235818b0f93ed8c8b56d0a5968d5a23fd6af57718c7597 + languageName: node + linkType: hard + "ssri@npm:^9.0.0": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -7967,6 +8489,22 @@ __metadata: languageName: node linkType: hard +"stream-to-buffer@npm:^0.1.0": + version: 0.1.0 + resolution: "stream-to-buffer@npm:0.1.0" + dependencies: + stream-to: ~0.2.0 + checksum: 9adf4eadf245ac4bd2ce1b4cd879170714221d185798637b1b5e4f53aef304d5dccbbd180380932d6f3618f7e1972a0529732618ae5c8e33beb0ca51d6907aec + languageName: node + linkType: hard + +"stream-to@npm:~0.2.0": + version: 0.2.2 + resolution: "stream-to@npm:0.2.2" + checksum: 06a3f163cfc609a7dc6952f0d953e67f5dabf68c75a7349cc0656ed4e211806e58c69ba1270263ec33c288aaf1468386c3055d592e18b76bc0f13e322ab78068 + languageName: node + linkType: hard + "streamsearch@npm:^1.1.0": version: 1.1.0 resolution: "streamsearch@npm:1.1.0" @@ -8250,6 +8788,13 @@ __metadata: languageName: node linkType: hard +"tinycolor2@npm:^1.1.2": + version: 1.4.2 + resolution: "tinycolor2@npm:1.4.2" + checksum: 57ed262e08815a4ab0ed933edafdbc6555a17081781766149813b44a080ecbe58b3ee281e81c0e75b42e4d41679f138cfa98eabf043f829e0683c04adb12c031 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -8259,6 +8804,16 @@ __metadata: languageName: node linkType: hard +"tough-cookie@npm:~2.5.0": + version: 2.5.0 + resolution: "tough-cookie@npm:2.5.0" + dependencies: + psl: ^1.1.28 + punycode: ^2.1.1 + checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 + languageName: node + linkType: hard + "tr46@npm:^3.0.0": version: 3.0.0 resolution: "tr46@npm:3.0.0" @@ -8370,6 +8925,22 @@ __metadata: languageName: node linkType: hard +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: ^5.0.1 + checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 + languageName: node + linkType: hard + +"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": + version: 0.14.5 + resolution: "tweetnacl@npm:0.14.5" + checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -8621,6 +9192,15 @@ __metadata: languageName: node linkType: hard +"url-regex@npm:^3.0.0": + version: 3.2.0 + resolution: "url-regex@npm:3.2.0" + dependencies: + ip-regex: ^1.0.1 + checksum: 667c8b079491ea76360f54c707d3cbd486a9ec29d6723e47fcbf6b8515a8dcb347bf94c7b1bac8b5af5ce7a5eacb2211d2096aa82fd4f077e559fc70cab8abd0 + languageName: node + linkType: hard + "urlpattern-polyfill@npm:^4.0.3": version: 4.0.3 resolution: "urlpattern-polyfill@npm:4.0.3" @@ -8635,6 +9215,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^3.3.2": + version: 3.4.0 + resolution: "uuid@npm:3.4.0" + bin: + uuid: ./bin/uuid + checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f + languageName: node + linkType: hard + "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -8695,6 +9284,17 @@ __metadata: languageName: node linkType: hard +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: ^1.0.0 + core-util-is: 1.0.2 + extsprintf: ^1.2.0 + checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea + languageName: node + linkType: hard + "vfile-location@npm:^4.0.0": version: 4.0.1 resolution: "vfile-location@npm:4.0.1" @@ -8916,7 +9516,43 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.2, xtend@npm:~4.0.1": +"xhr@npm:^2.0.1": + version: 2.6.0 + resolution: "xhr@npm:2.6.0" + dependencies: + global: ~4.4.0 + is-function: ^1.0.1 + parse-headers: ^2.0.0 + xtend: ^4.0.0 + checksum: a1db277e37737caf3ed363d2a33ce4b4ea5b5fc190b663a6f70bc252799185b840ccaa166eaeeea4841c9c60b87741f0a24e29cbcf6708dd425986d4df186d2f + languageName: node + linkType: hard + +"xml-parse-from-string@npm:^1.0.0": + version: 1.0.1 + resolution: "xml-parse-from-string@npm:1.0.1" + checksum: 5155cb98e428409829f4060ce542c55438b2f7646d11fd306d850eaf12d35c06ffd9e86d76aa5230121a533b958fd1a319d6f90a5c113391853d0ff01f4da7bb + languageName: node + linkType: hard + +"xml2js@npm:^0.4.5": + version: 0.4.23 + resolution: "xml2js@npm:0.4.23" + dependencies: + sax: ">=0.6.0" + xmlbuilder: ~11.0.0 + checksum: ca0cf2dfbf6deeaae878a891c8fbc0db6fd04398087084edf143cdc83d0509ad0fe199b890f62f39c4415cf60268a27a6aed0d343f0658f8779bd7add690fa98 + languageName: node + linkType: hard + +"xmlbuilder@npm:~11.0.0": + version: 11.0.1 + resolution: "xmlbuilder@npm:11.0.1" + checksum: 7152695e16f1a9976658215abab27e55d08b1b97bca901d58b048d2b6e106b5af31efccbdecf9b07af37c8377d8e7e821b494af10b3a68b0ff4ae60331b415b0 + languageName: node + linkType: hard + +"xtend@npm:^4.0.0, xtend@npm:^4.0.2, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a From 68dd1820f05d04780824b318072d053eaf7db654 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 17 Dec 2022 13:36:01 +0100 Subject: [PATCH 264/459] fix(provider): :zap: edit starter --- .vscode/bot.code-snippets | 26 ++++++++++++++++++++ packages/database/src/mongo/index.js | 13 ++++------ packages/database/src/mysql/index.js | 2 +- starters/apps/base-bailey-mongo/app.js | 14 ++++++++--- starters/apps/base-bailey-mongo/package.json | 7 +++--- starters/apps/base-bailey-mysql/app.js | 17 +++++++++++-- starters/apps/base-bailey-mysql/package.json | 7 +++--- 7 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 .vscode/bot.code-snippets diff --git a/.vscode/bot.code-snippets b/.vscode/bot.code-snippets new file mode 100644 index 0000000..951f52e --- /dev/null +++ b/.vscode/bot.code-snippets @@ -0,0 +1,26 @@ +{ + "Flow Bot (simple)": { + "scope": "javascript", + "prefix": "bot:flow", + "description": "Crear un flujo simple", + "body": [ + "export const ${1:${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}}Flow = addKeyword(['hola', 'buenas'])", + " .addAnswer('Hola! 🚀 Bienvenido a este CHATBOT')", + " .addAnswer('¿Como puedo ayudarte?', {", + " delay: 1500", + "})" + ] + }, + "Flow Bot (completo)": { + "scope": "javascript", + "prefix": "bot:flow completo", + "description": "Crear un flujo completo", + "body": [ + "export const ${1:${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}}Flow = addKeyword(['hola', 'buenas'])", + " .addAnswer('Hola! 🚀 Bienvenido a este CHATBOT')", + " .addAnswer('¿Como puedo ayudarte?', {", + " delay: 1500", + "})" + ] + } +} diff --git a/packages/database/src/mongo/index.js b/packages/database/src/mongo/index.js index 21b7cf1..6af68f0 100644 --- a/packages/database/src/mongo/index.js +++ b/packages/database/src/mongo/index.js @@ -1,23 +1,20 @@ -require('dotenv').config() const { MongoClient } = require('mongodb') -const DB_URI = process.env.DB_URI || 'mongodb://0.0.0.0:27017' -const DB_NAME = process.env.DB_NAME || 'db_bot' - class MongoAdapter { db listHistory = [] - - constructor() { + credentials = { dbUri: null, dbName: null } + constructor(_credentials) { + this.credentials = _credentials this.init().then() } init = async () => { try { - const client = new MongoClient(DB_URI, {}) + const client = new MongoClient(this.credentials.dbUri, {}) await client.connect() console.log('🆗 Conexión Correcta DB') - const db = client.db(DB_NAME) + const db = client.db(this.credentials.dbName) this.db = db return true } catch (e) { diff --git a/packages/database/src/mysql/index.js b/packages/database/src/mysql/index.js index a557f3e..e01b55a 100644 --- a/packages/database/src/mysql/index.js +++ b/packages/database/src/mysql/index.js @@ -3,7 +3,7 @@ const mysql = require('mysql2') class MyslAdapter { db listHistory = [] - credentials = { host: null, user: null, database: null } + credentials = { host: null, user: null, database: null, password: null } constructor(_credentials) { this.credentials = _credentials diff --git a/starters/apps/base-bailey-mongo/app.js b/starters/apps/base-bailey-mongo/app.js index fdc0fdd..698b828 100644 --- a/starters/apps/base-bailey-mongo/app.js +++ b/starters/apps/base-bailey-mongo/app.js @@ -7,12 +7,17 @@ const { } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MongoAdapter = require('@bot-whatsapp/database/mock') + +/** + * Declaramos las conexiones de Mongo + */ +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' /** * Declarando flujo hijo */ - const flowBolsos2 = addKeyword(['bolsos2', '2']) .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') @@ -69,7 +74,10 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MongoAdapter({ + dbUri: MONGO_DB_URI, + dbName: MONGO_DB_NAME, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(BaileysProvider) createBot({ diff --git a/starters/apps/base-bailey-mongo/package.json b/starters/apps/base-bailey-mongo/package.json index ad14f04..64660e7 100644 --- a/starters/apps/base-bailey-mongo/package.json +++ b/starters/apps/base-bailey-mongo/package.json @@ -9,12 +9,13 @@ }, "keywords": [], "dependencies": { - "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "@adiwajshing/baileys": "^4.4.0", + "mime-types": "^2.1.35", + "mongodb": "^4.12.1" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mysql/app.js b/starters/apps/base-bailey-mysql/app.js index fdc0fdd..41c0cd4 100644 --- a/starters/apps/base-bailey-mysql/app.js +++ b/starters/apps/base-bailey-mysql/app.js @@ -7,7 +7,15 @@ const { } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MySQLAdapter = require('@bot-whatsapp/database/mysql') + +/** + * Declaramos las conexiones de Mongo + */ +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' /** * Declarando flujo hijo @@ -69,7 +77,12 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MySQLAdapter({ + host: MYSQL_DB_HOST, + user: MYSQL_DB_USER, + database: MYSQL_DB_NAME, + password: MYSQL_DB_PASSWORD, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(BaileysProvider) createBot({ diff --git a/starters/apps/base-bailey-mysql/package.json b/starters/apps/base-bailey-mysql/package.json index c8c66de..cbf2eb5 100644 --- a/starters/apps/base-bailey-mysql/package.json +++ b/starters/apps/base-bailey-mysql/package.json @@ -9,12 +9,13 @@ }, "keywords": [], "dependencies": { - "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "@adiwajshing/baileys": "^4.4.0", + "mime-types": "^2.1.35", + "mysql2": "^2.3.3" }, "author": "", "license": "ISC" From 91bfdc46301207cbc5274308da6f39c7b4652c63 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 17 Dec 2022 14:01:32 +0100 Subject: [PATCH 265/459] fix(provider): :bug: qr code accurate --- packages/provider/src/baileys/index.js | 2 +- packages/provider/src/baileys/utils.js | 19 ++++++++++++---- packages/provider/src/venom/index.js | 4 ++-- packages/provider/src/venom/utils.js | 25 ++++++++++++--------- packages/provider/src/web-whatsapp/index.js | 4 ++-- packages/provider/src/web-whatsapp/utils.js | 19 ++++++++++++---- 6 files changed, 50 insertions(+), 23 deletions(-) diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 8bd860e..3855043 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -70,7 +70,7 @@ class BaileysProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - baileyGenerateImage(qr) + await baileyGenerateImage(qr) } if (lastDisconnect?.error) { diff --git a/packages/provider/src/baileys/utils.js b/packages/provider/src/baileys/utils.js index 2fc0779..40efa61 100644 --- a/packages/provider/src/baileys/utils.js +++ b/packages/provider/src/baileys/utils.js @@ -12,13 +12,24 @@ const baileyCleanNumber = (number, full = false) => { * Hace promesa el write * @param {*} base64 */ -const baileyGenerateImage = (base64) => { +const baileyGenerateImage = async (base64) => { const PATH_QR = `${process.cwd()}/qr.png` let qr_svg = qr.image(base64, { type: 'png', margin: 4 }) - qr_svg.pipe(createWriteStream(PATH_QR)) - combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then((img) => { - img.write(PATH_QR) + + const writeFilePromise = () => + new Promise((resolve, reject) => { + const file = qr_svg.pipe(createWriteStream(PATH_QR)) + file.on('finish', () => resolve(true)) + file.on('error', reject) + }) + + await writeFilePromise() + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, }) + cleanImage.write(PATH_QR) } const baileyIsValidNumber = (rawNumber) => { diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index bb167e4..1aafd80 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -49,7 +49,7 @@ class VenomProvider extends ProviderClass { /** * Generamos QR Code pra escanear con el Whatsapp */ - generateQr = (qr) => { + generateQr = async (qr) => { console.clear() this.emit('require_action', { instructions: [ @@ -58,7 +58,7 @@ class VenomProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - venomGenerateImage(qr) + await venomGenerateImage(qr) } /** diff --git a/packages/provider/src/venom/utils.js b/packages/provider/src/venom/utils.js index ecbf497..ff1d733 100644 --- a/packages/provider/src/venom/utils.js +++ b/packages/provider/src/venom/utils.js @@ -7,7 +7,7 @@ const venomCleanNumber = (number, full = false) => { return number } -const venomGenerateImage = (base) => { +const venomGenerateImage = async (base) => { const PATH_QR = `${process.cwd()}/qr.png` const matches = base.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/) if (matches.length !== 3) { @@ -18,16 +18,21 @@ const venomGenerateImage = (base) => { response.type = matches[1] response.data = new Buffer.from(matches[2], 'base64') - var imageBuffer = response - writeFile(PATH_QR, imageBuffer['data'], 'binary', (err) => { - if (err != null) throw new Error('ERROR_QR_GENERATE') - combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then( - (img) => { - img.write(PATH_QR) - } - ) - return + const writeFilePromise = () => + new Promise((resolve, reject) => { + writeFile(PATH_QR, response['data'], 'binary', (err) => { + if (err != null) reject('ERROR_QR_GENERATE') + resolve(true) + }) + }) + + await writeFilePromise() + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, }) + cleanImage.write(PATH_QR) } const venomisValidNumber = (rawNumber) => { diff --git a/packages/provider/src/web-whatsapp/index.js b/packages/provider/src/web-whatsapp/index.js index ae8747e..ef9427f 100644 --- a/packages/provider/src/web-whatsapp/index.js +++ b/packages/provider/src/web-whatsapp/index.js @@ -57,7 +57,7 @@ class WebWhatsappProvider extends ProviderClass { }, { event: 'qr', - func: (qr) => { + func: async (qr) => { this.emit('require_action', { instructions: [ `Debes escanear el QR Code para iniciar session reivsa qr.png`, @@ -65,7 +65,7 @@ class WebWhatsappProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - wwebGenerateImage(qr) + await wwebGenerateImage(qr) }, }, { diff --git a/packages/provider/src/web-whatsapp/utils.js b/packages/provider/src/web-whatsapp/utils.js index 274ddd5..e70bd65 100644 --- a/packages/provider/src/web-whatsapp/utils.js +++ b/packages/provider/src/web-whatsapp/utils.js @@ -11,13 +11,24 @@ const wwebCleanNumber = (number, full = false) => { return number } -const wwebGenerateImage = (base64) => { +const wwebGenerateImage = async (base64) => { const PATH_QR = `${process.cwd()}/qr.png` let qr_svg = qr.image(base64, { type: 'png', margin: 4 }) - qr_svg.pipe(createWriteStream(PATH_QR)) - combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then((img) => { - img.write(PATH_QR) + + const writeFilePromise = () => + new Promise((resolve, reject) => { + const file = qr_svg.pipe(createWriteStream(PATH_QR)) + file.on('finish', () => resolve(true)) + file.on('error', reject) + }) + + await writeFilePromise() + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, }) + cleanImage.write(PATH_QR) } const wwebIsValidNumber = (rawNumber) => { From b59d4fcdd7462cde3f68ab5746d49960b547a592 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sat, 17 Dec 2022 07:40:27 -0600 Subject: [PATCH 266/459] fix: fix del db provider mysql Se pusieron correctamente los datos de mysql en app.js y packaje.json --- starters/apps/base-bailey-mysql/app.js | 9 +++++++-- starters/apps/base-bailey-mysql/package.json | 3 ++- starters/apps/base-twilio-mysql/app.js | 9 +++++++-- starters/apps/base-twilio-mysql/package.json | 3 ++- starters/apps/base-venom-mysql/app.js | 9 +++++++-- starters/apps/base-venom-mysql/package.json | 3 ++- starters/apps/base-wweb-mysql/app.js | 9 +++++++-- starters/apps/base-wweb-mysql/package.json | 3 ++- 8 files changed, 36 insertions(+), 12 deletions(-) diff --git a/starters/apps/base-bailey-mysql/app.js b/starters/apps/base-bailey-mysql/app.js index 0a1863b..d459929 100644 --- a/starters/apps/base-bailey-mysql/app.js +++ b/starters/apps/base-bailey-mysql/app.js @@ -7,7 +7,7 @@ const { } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MySQLAdapter = require('@bot-whatsapp/database/mysql') /** * Declarando flujo hijo @@ -68,7 +68,12 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MySQLAdapter({ + host: MYSQL_DB_HOST, + user: MYSQL_DB_USER, + database: MYSQL_DB_NAME, + password: MYSQL_DB_PASSWORD, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(BaileysProvider) createBot({ diff --git a/starters/apps/base-bailey-mysql/package.json b/starters/apps/base-bailey-mysql/package.json index c8c66de..ac13ecd 100644 --- a/starters/apps/base-bailey-mysql/package.json +++ b/starters/apps/base-bailey-mysql/package.json @@ -14,7 +14,8 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "mysql2": "^2.3.3" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-twilio-mysql/app.js b/starters/apps/base-twilio-mysql/app.js index 8bf6198..90f8fea 100644 --- a/starters/apps/base-twilio-mysql/app.js +++ b/starters/apps/base-twilio-mysql/app.js @@ -7,7 +7,7 @@ const { } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MySQLAdapter = require('@bot-whatsapp/database/mysql') /** * Declarando flujo hijo @@ -68,7 +68,12 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MySQLAdapter({ + host: MYSQL_DB_HOST, + user: MYSQL_DB_USER, + database: MYSQL_DB_NAME, + password: MYSQL_DB_PASSWORD, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(TwilioProvider, { accountSid: 'YOUR_ACCOUNT_SID', diff --git a/starters/apps/base-twilio-mysql/package.json b/starters/apps/base-twilio-mysql/package.json index 14f73dd..1f5e5d0 100644 --- a/starters/apps/base-twilio-mysql/package.json +++ b/starters/apps/base-twilio-mysql/package.json @@ -15,7 +15,8 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "mysql2": "^2.3.3" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-venom-mysql/app.js b/starters/apps/base-venom-mysql/app.js index fff68c3..28dbbc5 100644 --- a/starters/apps/base-venom-mysql/app.js +++ b/starters/apps/base-venom-mysql/app.js @@ -7,7 +7,7 @@ const { } = require('@bot-whatsapp/bot') const VenomProvider = require('@bot-whatsapp/provider/venom') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MySQLAdapter = require('@bot-whatsapp/database/mysql') /** * Declarando flujo hijo @@ -68,7 +68,12 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MySQLAdapter({ + host: MYSQL_DB_HOST, + user: MYSQL_DB_USER, + database: MYSQL_DB_NAME, + password: MYSQL_DB_PASSWORD, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(VenomProvider) createBot({ diff --git a/starters/apps/base-venom-mysql/package.json b/starters/apps/base-venom-mysql/package.json index d08359a..c549d12 100644 --- a/starters/apps/base-venom-mysql/package.json +++ b/starters/apps/base-venom-mysql/package.json @@ -13,7 +13,8 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "mysql2": "^2.3.3" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-wweb-mysql/app.js b/starters/apps/base-wweb-mysql/app.js index c2828f2..ecebb45 100644 --- a/starters/apps/base-wweb-mysql/app.js +++ b/starters/apps/base-wweb-mysql/app.js @@ -7,7 +7,7 @@ const { } = require('@bot-whatsapp/bot') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MySQLAdapter = require('@bot-whatsapp/database/mysql') /** * Declarando flujo hijo @@ -68,7 +68,12 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MySQLAdapter({ + host: MYSQL_DB_HOST, + user: MYSQL_DB_USER, + database: MYSQL_DB_NAME, + password: MYSQL_DB_PASSWORD, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(WebWhatsappProvider) createBot({ diff --git a/starters/apps/base-wweb-mysql/package.json b/starters/apps/base-wweb-mysql/package.json index 329f3ef..3ab73d5 100644 --- a/starters/apps/base-wweb-mysql/package.json +++ b/starters/apps/base-wweb-mysql/package.json @@ -13,7 +13,8 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "mysql2": "^2.3.3" }, "author": "", "license": "ISC" From dcf65b87bc7e7e6381e6448e83118077986898e7 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sat, 17 Dec 2022 07:48:32 -0600 Subject: [PATCH 267/459] fix: agregamos variables para mysql Agregamos las variables para la conexion de MySQL en app.js --- starters/apps/base-twilio-mysql/app.js | 8 ++++++++ starters/apps/base-venom-mysql/app.js | 8 ++++++++ starters/apps/base-wweb-mysql/app.js | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/starters/apps/base-twilio-mysql/app.js b/starters/apps/base-twilio-mysql/app.js index 90f8fea..d901f8e 100644 --- a/starters/apps/base-twilio-mysql/app.js +++ b/starters/apps/base-twilio-mysql/app.js @@ -9,6 +9,14 @@ const { const TwilioProvider = require('@bot-whatsapp/provider/twilio') const MySQLAdapter = require('@bot-whatsapp/database/mysql') +/** + * Declaramos las conexiones de MySQL + */ +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' + /** * Declarando flujo hijo */ diff --git a/starters/apps/base-venom-mysql/app.js b/starters/apps/base-venom-mysql/app.js index 28dbbc5..da4ad99 100644 --- a/starters/apps/base-venom-mysql/app.js +++ b/starters/apps/base-venom-mysql/app.js @@ -9,6 +9,14 @@ const { const VenomProvider = require('@bot-whatsapp/provider/venom') const MySQLAdapter = require('@bot-whatsapp/database/mysql') +/** + * Declaramos las conexiones de MySQL + */ +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' + /** * Declarando flujo hijo */ diff --git a/starters/apps/base-wweb-mysql/app.js b/starters/apps/base-wweb-mysql/app.js index ecebb45..519f142 100644 --- a/starters/apps/base-wweb-mysql/app.js +++ b/starters/apps/base-wweb-mysql/app.js @@ -9,6 +9,14 @@ const { const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') const MySQLAdapter = require('@bot-whatsapp/database/mysql') +/** + * Declaramos las conexiones de MySQL + */ +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' + /** * Declarando flujo hijo */ From 8160d13c866b8ae17b0ec8e68eee1bc0373595b0 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sat, 17 Dec 2022 15:33:25 -0600 Subject: [PATCH 268/459] feat: se agregaron los datros del adapter mongo en app.js y package.json Se agregaron los datos del adaptador de Mongo en app.js y package.json --- starters/apps/base-bailey-mongo/app.js | 2 +- starters/apps/base-twilio-mongo/app.js | 13 +++++++++++-- starters/apps/base-twilio-mongo/package.json | 4 +++- starters/apps/base-venom-mongo/app.js | 13 +++++++++++-- starters/apps/base-venom-mongo/package.json | 4 +++- starters/apps/base-wweb-mongo/app.js | 13 +++++++++++-- starters/apps/base-wweb-mongo/package.json | 4 +++- 7 files changed, 43 insertions(+), 10 deletions(-) diff --git a/starters/apps/base-bailey-mongo/app.js b/starters/apps/base-bailey-mongo/app.js index ab5a46e..cc469c2 100644 --- a/starters/apps/base-bailey-mongo/app.js +++ b/starters/apps/base-bailey-mongo/app.js @@ -7,7 +7,7 @@ const { } = require('@bot-whatsapp/bot') const BaileysProvider = require('@bot-whatsapp/provider/baileys') -const MongoAdapter = require('@bot-whatsapp/database/mock') +const MongoAdapter = require('@bot-whatsapp/database/mongo') /** * Declaramos las conexiones de Mongo diff --git a/starters/apps/base-twilio-mongo/app.js b/starters/apps/base-twilio-mongo/app.js index 9f8584f..71024e1 100644 --- a/starters/apps/base-twilio-mongo/app.js +++ b/starters/apps/base-twilio-mongo/app.js @@ -7,7 +7,13 @@ const { } = require('@bot-whatsapp/bot') const TwilioProvider = require('@bot-whatsapp/provider/twilio') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MongoAdapter = require('@bot-whatsapp/database/mongo') + +/** + * Declaramos las conexiones de Mongo + */ +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' /** * Declarando flujo hijo @@ -68,7 +74,10 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MongoAdapter({ + dbUri: MONGO_DB_URI, + dbName: MONGO_DB_NAME, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(TwilioProvider, { accountSid: 'YOUR_ACCOUNT_SID', diff --git a/starters/apps/base-twilio-mongo/package.json b/starters/apps/base-twilio-mongo/package.json index 56f4600..c8ead10 100644 --- a/starters/apps/base-twilio-mongo/package.json +++ b/starters/apps/base-twilio-mongo/package.json @@ -15,7 +15,9 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "mime-types": "^2.1.35", + "mongodb": "^4.12.1" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-venom-mongo/app.js b/starters/apps/base-venom-mongo/app.js index fff68c3..90a41a4 100644 --- a/starters/apps/base-venom-mongo/app.js +++ b/starters/apps/base-venom-mongo/app.js @@ -7,7 +7,13 @@ const { } = require('@bot-whatsapp/bot') const VenomProvider = require('@bot-whatsapp/provider/venom') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MongoAdapter = require('@bot-whatsapp/database/mongo') + +/** + * Declaramos las conexiones de Mongo + */ +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' /** * Declarando flujo hijo @@ -68,7 +74,10 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MongoAdapter({ + dbUri: MONGO_DB_URI, + dbName: MONGO_DB_NAME, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(VenomProvider) createBot({ diff --git a/starters/apps/base-venom-mongo/package.json b/starters/apps/base-venom-mongo/package.json index d516b9d..6586c9f 100644 --- a/starters/apps/base-venom-mongo/package.json +++ b/starters/apps/base-venom-mongo/package.json @@ -13,7 +13,9 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "mime-types": "^2.1.35", + "mongodb": "^4.12.1" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-wweb-mongo/app.js b/starters/apps/base-wweb-mongo/app.js index c2828f2..bb77f07 100644 --- a/starters/apps/base-wweb-mongo/app.js +++ b/starters/apps/base-wweb-mongo/app.js @@ -7,7 +7,13 @@ const { } = require('@bot-whatsapp/bot') const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') -const MockAdapter = require('@bot-whatsapp/database/mock') +const MongoAdapter = require('@bot-whatsapp/database/mongo') + +/** + * Declaramos las conexiones de Mongo + */ +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' /** * Declarando flujo hijo @@ -68,7 +74,10 @@ const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) ) const main = async () => { - const adapterDB = new MockAdapter() + const adapterDB = new MongoAdapter({ + dbUri: MONGO_DB_URI, + dbName: MONGO_DB_NAME, + }) const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(WebWhatsappProvider) createBot({ diff --git a/starters/apps/base-wweb-mongo/package.json b/starters/apps/base-wweb-mongo/package.json index 390f6c9..9e323dd 100644 --- a/starters/apps/base-wweb-mongo/package.json +++ b/starters/apps/base-wweb-mongo/package.json @@ -13,7 +13,9 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "mime-types": "^2.1.35", + "mongodb": "^4.12.1" }, "author": "", "license": "ISC" From 96e220cd71ae2d26dac4b6cbc3a4c635d17a7dc5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 18 Dec 2022 10:56:23 +0100 Subject: [PATCH 269/459] Update --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4b1954d..3afc3f9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,7 @@ __Requerimientos:__ __Clonar repo rama dev__ ``` -git clone --branch dev https://github.com/leifermendez/bot-whatsapp +git clone --branch dev https://github.com/codigoencasa/bot-whatsapp ``` __Instalar dependencias__ ``` From a21633fb7cf348cc37f4e4714f51172b49b193b5 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 18 Dec 2022 14:14:16 +0100 Subject: [PATCH 270/459] fix(cli): :fire: update instructions --- .vscode/bot.code-snippets | 14 ++++++-------- CONTRIBUTING.md | 9 ++------- packages/cli/interactive/index.js | 4 ++-- packages/database/package.json | 2 +- packages/database/rollup-database.config.js | 4 ++-- packages/database/src/{json-file => json}/index.js | 7 +++---- 6 files changed, 16 insertions(+), 24 deletions(-) rename packages/database/src/{json-file => json}/index.js (88%) diff --git a/.vscode/bot.code-snippets b/.vscode/bot.code-snippets index 951f52e..062383f 100644 --- a/.vscode/bot.code-snippets +++ b/.vscode/bot.code-snippets @@ -4,11 +4,9 @@ "prefix": "bot:flow", "description": "Crear un flujo simple", "body": [ - "export const ${1:${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}}Flow = addKeyword(['hola', 'buenas'])", + "export const flow${1} = addKeyword(['hola', 'buenas'])", " .addAnswer('Hola! 🚀 Bienvenido a este CHATBOT')", - " .addAnswer('¿Como puedo ayudarte?', {", - " delay: 1500", - "})" + " .addAnswer('¿Como puedo ayudarte?')" ] }, "Flow Bot (completo)": { @@ -16,10 +14,10 @@ "prefix": "bot:flow completo", "description": "Crear un flujo completo", "body": [ - "export const ${1:${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}}Flow = addKeyword(['hola', 'buenas'])", - " .addAnswer('Hola! 🚀 Bienvenido a este CHATBOT')", - " .addAnswer('¿Como puedo ayudarte?', {", - " delay: 1500", + "export const flow${1} = addKeyword(['categorias'])", + " .addAnswer('⚡ Tenemos las siguientes categorias')", + " .addAnswer(['🚀 Computadoras', '🚀 Celulares', '🚀 Otros'], {", + " delay: 1500, //Milisegundo 1500 = 1.5segundos", "})" ] } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3afc3f9..33f98f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,13 +34,8 @@ Se ejecuta el CLI (Command Line Interface) para ayudarte a crear un app-bot de e yarn run cli ``` -Abrir carpeta __example-app-base__ y ejecutar -``` -cd example-app-base -npm i -npm run pre-copy -npm start -``` +__Seguir instrucciones__ +![](https://i.imgur.com/dC6lEwy.png) ### __Commit y Push__ diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js index f7360ce..3dc16c4 100644 --- a/packages/cli/interactive/index.js +++ b/packages/cli/interactive/index.js @@ -12,7 +12,7 @@ const bannerDone = () => { [ `[Agradecimientos]: Este es un proyecto OpenSource, si tienes intenciones de colaborar puedes hacerlo:`, `[😉] Comprando un cafe https://www.buymeacoffee.com/leifermendez`, - `[⭐] Dar estrella https://github.com/leifermendez/bot-whatsapp`, + `[⭐] Dar estrella https://github.com/codigoencasa/bot-whatsapp`, `[🚀] Realizando mejoras en el codigo`, ].join('\n') ) @@ -85,7 +85,7 @@ const startInteractive = async () => { const indexOfPath = possiblesPath.find((a) => existsSync(a)) await copyBaseApp(indexOfPath, join(process.cwd(), templateName)) console.log(``) - console.log(bgMagenta(`⚡⚡⚡INSTRUCCIONES⚡⚡⚡`)) + console.log(bgMagenta(`⚡⚡⚡ INSTRUCCIONES ⚡⚡⚡`)) console.log(yellow(`cd ${templateName}`)) console.log(yellow(`npm install`)) console.log(yellow(`npm start`)) diff --git a/packages/database/package.json b/packages/database/package.json index 1184abd..cfe467d 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -18,7 +18,7 @@ "exports": { "./mock": "./lib/mock/index.cjs", "./mongo": "./lib/mongo/index.cjs", - "./json-file": "./lib/json-file/index.cjs", + "./json": "./lib/json/index.cjs", "./mysql": "./lib/mysql/index.cjs" } } diff --git a/packages/database/rollup-database.config.js b/packages/database/rollup-database.config.js index 1eecdba..844d414 100644 --- a/packages/database/rollup-database.config.js +++ b/packages/database/rollup-database.config.js @@ -31,10 +31,10 @@ module.exports = [ plugins: [commonjs()], }, { - input: join(__dirname, 'src', 'json-file', 'index.js'), + input: join(__dirname, 'src', 'json', 'index.js'), output: { banner: banner['banner.output'].join(''), - file: join(__dirname, 'lib', 'json-file', 'index.cjs'), + file: join(__dirname, 'lib', 'json', 'index.cjs'), }, plugins: [commonjs()], }, diff --git a/packages/database/src/json-file/index.js b/packages/database/src/json/index.js similarity index 88% rename from packages/database/src/json-file/index.js rename to packages/database/src/json/index.js index af53df8..7aa8029 100644 --- a/packages/database/src/json-file/index.js +++ b/packages/database/src/json/index.js @@ -1,8 +1,7 @@ -const path = require('path') const StormDB = require('stormdb') -const engine = new StormDB.localFileEngine( - path.join(process.cwd(), './db.stormdb') -) +const { join } = require('path') + +const engine = new StormDB.localFileEngine(join(process.cwd(), './db.stormdb')) class JsonFileAdapter { db From ed36ce0a7796320c6a4a452f29c05a3f0f7368db Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 18 Dec 2022 14:48:21 +0100 Subject: [PATCH 271/459] fix(cli): :fire: update instructions --- CONTRIBUTING.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 33f98f3..e80b046 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,15 +35,15 @@ yarn run cli ``` __Seguir instrucciones__ +En la consola encontraras los pasos a seguir + ![](https://i.imgur.com/dC6lEwy.png) -### __Commit y Push__ - -El proyecto tiene implementado __[husky](https://typicode.github.io/husky/#/)__, es una herramienta que dispara unas acciones al momento de hacer commit y hacer push. - -__commit:__ Los commit son semánticos, esto quiere decir que deben cumplir un standar al momento de escribirlos ejemplo: ` feat(adapter): new adapter myqsl ` puede ver más info sobre esto __[aquí](https://github.com/conventional-changelog/commitlint/#what-is-commitlint)__ - -__push:__ Cada push ejecutar `yarn run test` el cual realiza los test internos que tienen que cumplir con __95% de cobertura__. +### 🤔 Preguntas frecuentes +- ¿Como puedo hacer aportaciones de código en el proyecto?: [Ver Video](https://youtu.be/Lxt8Acob6aU) +- ¿Como ejecutar el entorno de pruebas?: [Ver Video](https://youtu.be/Mf9V-dloBfk) +- ¿Como crear un nuevo proveedor?: [Ver Video](https://youtu.be/cahK9zH3SI8) +- ¿Que son los GithubActions?: [Ver Video](https://youtu.be/nYBEBFKLiqw) > Documento en constante actualización.... From e585e2f5f644ed0188dc9cd2b3c697c9d6050669 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 18 Dec 2022 14:48:49 +0100 Subject: [PATCH 272/459] fix(cli): :fire: update instructions --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e80b046..350f484 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,7 +46,7 @@ En la consola encontraras los pasos a seguir - ¿Que son los GithubActions?: [Ver Video](https://youtu.be/nYBEBFKLiqw) -> Documento en constante actualización.... +> __NOTA:__ Documento en constante actualización.... ------ - [Discord](https://link.codigoencasa.com/DISCORD) From 290812bf9a0ddcd621798001aa1f3a61911b2fcb Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sun, 18 Dec 2022 15:05:05 +0100 Subject: [PATCH 273/459] docs(starters): :memo: updated doc --- starters/apps/base-bailey-memory/README.md | 22 ++++++++++--- starters/apps/base-bailey-memory/package.json | 6 ++-- starters/apps/base-bailey-mongo/README.md | 29 ++++++++++++++--- starters/apps/base-bailey-mysql/README.md | 31 ++++++++++++++++--- starters/apps/base-meta-memory/README.md | 22 ++++++++++--- starters/apps/base-meta-memory/package.json | 1 - starters/apps/base-twilio-memory/README.md | 22 ++++++++++--- starters/apps/base-twilio-mongo/README.md | 29 ++++++++++++++--- starters/apps/base-twilio-mysql/README.md | 31 ++++++++++++++++--- starters/apps/base-venom-memory/README.md | 22 ++++++++++--- starters/apps/base-venom-mongo/README.md | 29 ++++++++++++++--- starters/apps/base-venom-mysql/README.md | 31 ++++++++++++++++--- starters/apps/base-wweb-memory/README.md | 22 ++++++++++--- starters/apps/base-wweb-mongo/README.md | 29 ++++++++++++++--- starters/apps/base-wweb-mysql/README.md | 31 ++++++++++++++++--- 15 files changed, 288 insertions(+), 69 deletions(-) diff --git a/starters/apps/base-bailey-memory/README.md b/starters/apps/base-bailey-memory/README.md index f8e0e90..4d1d6b2 100644 --- a/starters/apps/base-bailey-memory/README.md +++ b/starters/apps/base-bailey-memory/README.md @@ -1,12 +1,24 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-bailey-memory/package.json b/starters/apps/base-bailey-memory/package.json index ef0e2b3..5e3ee48 100644 --- a/starters/apps/base-bailey-memory/package.json +++ b/starters/apps/base-bailey-memory/package.json @@ -9,12 +9,12 @@ }, "keywords": [], "dependencies": { - "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "@adiwajshing/baileys": "^4.4.0", + "mime-types": "^2.1.35" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mongo/README.md b/starters/apps/base-bailey-mongo/README.md index f8e0e90..d5a4d67 100644 --- a/starters/apps/base-bailey-mongo/README.md +++ b/starters/apps/base-bailey-mongo/README.md @@ -1,12 +1,31 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-bailey-mysql/README.md b/starters/apps/base-bailey-mysql/README.md index f8e0e90..fbad3da 100644 --- a/starters/apps/base-bailey-mysql/README.md +++ b/starters/apps/base-bailey-mysql/README.md @@ -1,12 +1,33 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-meta-memory/README.md b/starters/apps/base-meta-memory/README.md index f8e0e90..4d1d6b2 100644 --- a/starters/apps/base-meta-memory/README.md +++ b/starters/apps/base-meta-memory/README.md @@ -1,12 +1,24 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-meta-memory/package.json b/starters/apps/base-meta-memory/package.json index d0af65c..af95cf3 100644 --- a/starters/apps/base-meta-memory/package.json +++ b/starters/apps/base-meta-memory/package.json @@ -11,7 +11,6 @@ "dependencies": { "body-parser": "^1.20.1", "polka": "^0.5.2", - "twilio": "^3.83.4", "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", diff --git a/starters/apps/base-twilio-memory/README.md b/starters/apps/base-twilio-memory/README.md index f8e0e90..4d1d6b2 100644 --- a/starters/apps/base-twilio-memory/README.md +++ b/starters/apps/base-twilio-memory/README.md @@ -1,12 +1,24 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-twilio-mongo/README.md b/starters/apps/base-twilio-mongo/README.md index f8e0e90..d5a4d67 100644 --- a/starters/apps/base-twilio-mongo/README.md +++ b/starters/apps/base-twilio-mongo/README.md @@ -1,12 +1,31 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-twilio-mysql/README.md b/starters/apps/base-twilio-mysql/README.md index f8e0e90..fbad3da 100644 --- a/starters/apps/base-twilio-mysql/README.md +++ b/starters/apps/base-twilio-mysql/README.md @@ -1,12 +1,33 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-venom-memory/README.md b/starters/apps/base-venom-memory/README.md index f8e0e90..4d1d6b2 100644 --- a/starters/apps/base-venom-memory/README.md +++ b/starters/apps/base-venom-memory/README.md @@ -1,12 +1,24 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-venom-mongo/README.md b/starters/apps/base-venom-mongo/README.md index f8e0e90..d5a4d67 100644 --- a/starters/apps/base-venom-mongo/README.md +++ b/starters/apps/base-venom-mongo/README.md @@ -1,12 +1,31 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-venom-mysql/README.md b/starters/apps/base-venom-mysql/README.md index f8e0e90..fbad3da 100644 --- a/starters/apps/base-venom-mysql/README.md +++ b/starters/apps/base-venom-mysql/README.md @@ -1,12 +1,33 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-wweb-memory/README.md b/starters/apps/base-wweb-memory/README.md index f8e0e90..4d1d6b2 100644 --- a/starters/apps/base-wweb-memory/README.md +++ b/starters/apps/base-wweb-memory/README.md @@ -1,12 +1,24 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-wweb-mongo/README.md b/starters/apps/base-wweb-mongo/README.md index f8e0e90..d5a4d67 100644 --- a/starters/apps/base-wweb-mongo/README.md +++ b/starters/apps/base-wweb-mongo/README.md @@ -1,12 +1,31 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' +const MONGO_DB_NAME = 'db_bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-wweb-mysql/README.md b/starters/apps/base-wweb-mysql/README.md index f8e0e90..fbad3da 100644 --- a/starters/apps/base-wweb-mysql/README.md +++ b/starters/apps/base-wweb-mysql/README.md @@ -1,12 +1,33 @@ -### BASE APP +### CHATBOT Whatsapp + +Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. - Bienvenido a mi tienda - Como puedo ayudarte? - Tengo: Zapatos Bolsos etc.. +__Iniciar__ +Recuerda configurar los parametros de conexion de la base de datos +```js +// app.js + +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' +``` + +``` +npm install +npm start +``` + +__¿Tienes problemas?:__ [Abrir Issue](https://github.com/codigoencasa/bot-whatsapp/issues/new/choose) + ------ -- [Discord](https://link.codigoencasa.com/DISCORD) -- [Twitter](https://twitter.com/leifermendez) -- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) -- [Telegram](https://t.me/leifermendez) +> ¿Quieres se parte de este proyecto? +> - [Discord](https://link.codigoencasa.com/DISCORD) +> - [Twitter](https://twitter.com/leifermendez) +> - [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +> - [Telegram](https://t.me/leifermendez) From 1f61e1a8ea0c5d605e71f3ce802023cd6fb8c934 Mon Sep 17 00:00:00 2001 From: jlferrete Date: Sun, 18 Dec 2022 15:52:17 +0100 Subject: [PATCH 274/459] docs(contributing): :memo: update MySQL integration tips --- CONTRIBUTING.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 350f484..fcc11e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,6 +39,16 @@ En la consola encontraras los pasos a seguir ![](https://i.imgur.com/dC6lEwy.png) +__Observaciones__ +Se debe tener en cuenta que si queremos utilizar una base de datos de MySQL, como muestra el ejemplo, será necesario actualizar las credenciales o crear previamente un usuario y una BBDD para que la conexión se realice correctamente. +Las credenciales que usará la aplicación por defecto se encuentran en el fichero app.js y serán las siguientes: +``` +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'user' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' +``` + ### 🤔 Preguntas frecuentes - ¿Como puedo hacer aportaciones de código en el proyecto?: [Ver Video](https://youtu.be/Lxt8Acob6aU) - ¿Como ejecutar el entorno de pruebas?: [Ver Video](https://youtu.be/Mf9V-dloBfk) From b2f13396104db9ccef5b3bad1c4e19c6a4bad2d4 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 18 Dec 2022 14:15:47 -0600 Subject: [PATCH 275/459] feat: se agrego informacion al ejemplo en app.js Se agrego informacion al ejemplo en app.js en el armado de los flujos secundarios --- starters/apps/base-bailey-memory/app.js | 26 +++++++++++++++-------- starters/apps/base-bailey-mongo/app.js | 28 +++++++++++++++++-------- starters/apps/base-bailey-mysql/app.js | 28 ++++++++++++++++--------- starters/apps/base-meta-memory/app.js | 27 +++++++++++++++--------- starters/apps/base-twilio-memory/app.js | 26 +++++++++++++++-------- starters/apps/base-twilio-mongo/app.js | 27 ++++++++++++++++-------- starters/apps/base-twilio-mysql/app.js | 27 ++++++++++++++++-------- starters/apps/base-venom-memory/app.js | 26 +++++++++++++++-------- starters/apps/base-venom-mongo/app.js | 27 ++++++++++++++++-------- starters/apps/base-venom-mysql/app.js | 27 ++++++++++++++++-------- starters/apps/base-wweb-memory/app.js | 26 +++++++++++++++-------- starters/apps/base-wweb-mongo/app.js | 27 ++++++++++++++++-------- starters/apps/base-wweb-mysql/app.js | 27 ++++++++++++++++-------- 13 files changed, 230 insertions(+), 119 deletions(-) diff --git a/starters/apps/base-bailey-memory/app.js b/starters/apps/base-bailey-memory/app.js index 0a1863b..624f70f 100644 --- a/starters/apps/base-bailey-memory/app.js +++ b/starters/apps/base-bailey-memory/app.js @@ -10,7 +10,15 @@ const BaileysProvider = require('@bot-whatsapp/provider/baileys') const MockAdapter = require('@bot-whatsapp/database/mock') /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -21,11 +29,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -35,11 +43,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -52,12 +60,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-bailey-mongo/app.js b/starters/apps/base-bailey-mongo/app.js index cc469c2..f71a425 100644 --- a/starters/apps/base-bailey-mongo/app.js +++ b/starters/apps/base-bailey-mongo/app.js @@ -12,12 +12,22 @@ const MongoAdapter = require('@bot-whatsapp/database/mongo') /** * Declaramos las conexiones de Mongo */ + const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ + const flowBolsos2 = addKeyword(['bolsos2', '2']) .addAnswer('🤯 *MUCHOS* bolsos ...') .addAnswer('y mas bolsos... bla bla') @@ -26,11 +36,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -40,11 +50,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -57,12 +67,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-bailey-mysql/app.js b/starters/apps/base-bailey-mysql/app.js index 1211654..88e1e11 100644 --- a/starters/apps/base-bailey-mysql/app.js +++ b/starters/apps/base-bailey-mysql/app.js @@ -13,12 +13,20 @@ const MySQLAdapter = require('@bot-whatsapp/database/mysql') * Declaramos las conexiones de MySQL */ const MYSQL_DB_HOST = 'localhost' -const MYSQL_DB_USER = 'user' +const MYSQL_DB_USER = 'usr' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -29,11 +37,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -43,11 +51,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -60,12 +68,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js index 6f932f0..ab26888 100644 --- a/starters/apps/base-meta-memory/app.js +++ b/starters/apps/base-meta-memory/app.js @@ -10,7 +10,15 @@ const TwilioProvider = require('@bot-whatsapp/provider/twilio') const MockAdapter = require('@bot-whatsapp/database/mock') /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -21,11 +29,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -35,11 +43,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -52,18 +60,17 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') console.log('Puedes enviar un mail, hook, etc..') console.log(ctx) - console.log(ctx['_data']['notifyName']) }, [...addChild(flowBolsos), ...addChild(flowZapatos)] ) diff --git a/starters/apps/base-twilio-memory/app.js b/starters/apps/base-twilio-memory/app.js index a0f1573..ab26888 100644 --- a/starters/apps/base-twilio-memory/app.js +++ b/starters/apps/base-twilio-memory/app.js @@ -10,7 +10,15 @@ const TwilioProvider = require('@bot-whatsapp/provider/twilio') const MockAdapter = require('@bot-whatsapp/database/mock') /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -21,11 +29,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -35,11 +43,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -52,12 +60,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-twilio-mongo/app.js b/starters/apps/base-twilio-mongo/app.js index 71024e1..f1e735c 100644 --- a/starters/apps/base-twilio-mongo/app.js +++ b/starters/apps/base-twilio-mongo/app.js @@ -12,11 +12,20 @@ const MongoAdapter = require('@bot-whatsapp/database/mongo') /** * Declaramos las conexiones de Mongo */ + const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -27,11 +36,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -41,11 +50,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -58,12 +67,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-twilio-mysql/app.js b/starters/apps/base-twilio-mysql/app.js index d901f8e..724b819 100644 --- a/starters/apps/base-twilio-mysql/app.js +++ b/starters/apps/base-twilio-mysql/app.js @@ -12,13 +12,22 @@ const MySQLAdapter = require('@bot-whatsapp/database/mysql') /** * Declaramos las conexiones de MySQL */ + const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -29,11 +38,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -43,11 +52,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -60,12 +69,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-venom-memory/app.js b/starters/apps/base-venom-memory/app.js index fff68c3..b785def 100644 --- a/starters/apps/base-venom-memory/app.js +++ b/starters/apps/base-venom-memory/app.js @@ -10,7 +10,15 @@ const VenomProvider = require('@bot-whatsapp/provider/venom') const MockAdapter = require('@bot-whatsapp/database/mock') /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -21,11 +29,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -35,11 +43,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -52,12 +60,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-venom-mongo/app.js b/starters/apps/base-venom-mongo/app.js index 90a41a4..d1ec8fc 100644 --- a/starters/apps/base-venom-mongo/app.js +++ b/starters/apps/base-venom-mongo/app.js @@ -12,11 +12,20 @@ const MongoAdapter = require('@bot-whatsapp/database/mongo') /** * Declaramos las conexiones de Mongo */ + const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -27,11 +36,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -41,11 +50,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -58,12 +67,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-venom-mysql/app.js b/starters/apps/base-venom-mysql/app.js index da4ad99..304e6fa 100644 --- a/starters/apps/base-venom-mysql/app.js +++ b/starters/apps/base-venom-mysql/app.js @@ -12,13 +12,22 @@ const MySQLAdapter = require('@bot-whatsapp/database/mysql') /** * Declaramos las conexiones de MySQL */ + const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -29,11 +38,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -43,11 +52,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -60,12 +69,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-wweb-memory/app.js b/starters/apps/base-wweb-memory/app.js index c2828f2..f968ba9 100644 --- a/starters/apps/base-wweb-memory/app.js +++ b/starters/apps/base-wweb-memory/app.js @@ -10,7 +10,15 @@ const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp') const MockAdapter = require('@bot-whatsapp/database/mock') /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -21,11 +29,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -35,11 +43,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -52,12 +60,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-wweb-mongo/app.js b/starters/apps/base-wweb-mongo/app.js index bb77f07..60f20e7 100644 --- a/starters/apps/base-wweb-mongo/app.js +++ b/starters/apps/base-wweb-mongo/app.js @@ -12,11 +12,20 @@ const MongoAdapter = require('@bot-whatsapp/database/mongo') /** * Declaramos las conexiones de Mongo */ + const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -27,11 +36,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -41,11 +50,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -58,12 +67,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') diff --git a/starters/apps/base-wweb-mysql/app.js b/starters/apps/base-wweb-mysql/app.js index 519f142..d8d6f80 100644 --- a/starters/apps/base-wweb-mysql/app.js +++ b/starters/apps/base-wweb-mysql/app.js @@ -12,13 +12,22 @@ const MySQLAdapter = require('@bot-whatsapp/database/mysql') /** * Declaramos las conexiones de MySQL */ + const MYSQL_DB_HOST = 'localhost' const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' /** - * Declarando flujo hijo + * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: + * + * Menu Principal + * - SubMenu 1 + * - Submenu 1.1 + * - Submenu 2 + * - Submenu 2.1 + * + * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. */ const flowBolsos2 = addKeyword(['bolsos2', '2']) @@ -29,11 +38,11 @@ const flowZapatos2 = addKeyword(['zapatos2', '2']) .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') .addAnswer('y algunas otras cosas.') -const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) +const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) .addAnswer('🤯 Veo que elegiste zapatos') .addAnswer('Tengo muchos zapatos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + ['Manda:', '*(2) Zapatos2*', 'para mas información'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -43,11 +52,11 @@ const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) [...addChild(flowZapatos2)] ) -const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) +const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) .addAnswer('🙌 Veo que elegiste bolsos') .addAnswer('Tengo muchos bolsos...bla bla') .addAnswer( - ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + ['Manda:', '*(2) Bolsos2*', 'para mas información.'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') @@ -60,12 +69,12 @@ const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) /** * Declarando flujo principal */ + const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer('Hola, bienvenido a mi tienda') - .addAnswer('Como puedo ayudarte?') - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) .addAnswer( - ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], { capture: true }, (ctx) => { console.log('Aqui puedes ver más info del usuario...') From aed0f76dfb66de4891639ef2bdb79b40928d9b31 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 18 Dec 2022 17:17:51 -0600 Subject: [PATCH 276/459] docs: cambios en CONTRIBUTING.MD Se ampliaron las instrucciones para quitarla las dependencias "latest" --- CONTRIBUTING.md | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 350f484..ceaf800 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,11 +34,36 @@ Se ejecuta el CLI (Command Line Interface) para ayudarte a crear un app-bot de e yarn run cli ``` -__Seguir instrucciones__ -En la consola encontraras los pasos a seguir +Selecionas (mediante las flechas arriba y abajo) el proveedor que quieras usar y cuando estes sobre el presiona la barra de espacio, igualmente selecciona la base de datos que quieras usar. + +Se creó un subdirecorio con el nombre del proveedor y base de datos que seleccionaste, ej: base-bailey-mysql + +Dentro de ese directorio necesitas editar el archivo package.json y borrar las siguientes lineas: +... + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest", +... + +Cambiate al directorio base-xxxxx-xxxx que se haya creado. +... +cd base-baileys-mysql +... +Ejecuta los comandos: +... +npm install +npm run pre-copy +npm start +... + + ![](https://i.imgur.com/dC6lEwy.png) +En el caso de MySql y Mongo es necesario especificar en app.js los datos de la conexión. + ### 🤔 Preguntas frecuentes - ¿Como puedo hacer aportaciones de código en el proyecto?: [Ver Video](https://youtu.be/Lxt8Acob6aU) - ¿Como ejecutar el entorno de pruebas?: [Ver Video](https://youtu.be/Mf9V-dloBfk) From 50c975c8bd941d7e2ef26598a4c165dc25791cc8 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 18 Dec 2022 17:21:16 -0600 Subject: [PATCH 277/459] docs: cambios a CONTRIBUTING.MD --- CONTRIBUTING.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ceaf800..ad639e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,26 +36,26 @@ yarn run cli Selecionas (mediante las flechas arriba y abajo) el proveedor que quieras usar y cuando estes sobre el presiona la barra de espacio, igualmente selecciona la base de datos que quieras usar. -Se creó un subdirecorio con el nombre del proveedor y base de datos que seleccionaste, ej: base-bailey-mysql +Se creó un subdirecorio con el nombre del proveedor y base de datos que seleccionaste, ej: `base-bailey-mysql` Dentro de ese directorio necesitas editar el archivo package.json y borrar las siguientes lineas: -... +``` "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", -... +``` Cambiate al directorio base-xxxxx-xxxx que se haya creado. -... +``` cd base-baileys-mysql -... +``` Ejecuta los comandos: -... +``` npm install npm run pre-copy npm start -... +``` From 42a1f6502ff1b5eacb1ff258b02b70aa5fb0e6bc Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 18 Dec 2022 17:25:24 -0600 Subject: [PATCH 278/459] docs: cambios a CONTRIBUTING.MD --- CONTRIBUTING.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ad639e2..176cfc7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,7 +36,7 @@ yarn run cli Selecionas (mediante las flechas arriba y abajo) el proveedor que quieras usar y cuando estes sobre el presiona la barra de espacio, igualmente selecciona la base de datos que quieras usar. -Se creó un subdirecorio con el nombre del proveedor y base de datos que seleccionaste, ej: `base-bailey-mysql` +Se creó un subdirecorio con el nombre del proveedor y base de datos que seleccionaste, ejemplo: `base-bailey-mysql` Dentro de ese directorio necesitas editar el archivo package.json y borrar las siguientes lineas: ``` @@ -46,7 +46,7 @@ Dentro de ese directorio necesitas editar el archivo package.json y borrar las s "@bot-whatsapp/provider": "latest", ``` -Cambiate al directorio base-xxxxx-xxxx que se haya creado. +Cambiate al directorio creado ejemplo: `base-bailey-mysql` ``` cd base-baileys-mysql ``` @@ -56,13 +56,24 @@ npm install npm run pre-copy npm start ``` +En el caso de MySql y Mongo es necesario especificar en app.js los datos de la conexión, ejemplo de MySql: +``` +const BaileysProvider = require('@bot-whatsapp/provider/baileys') +const MySQLAdapter = require('@bot-whatsapp/database/mysql') +/** + * Declaramos las conexiones de MySQL + */ +const MYSQL_DB_HOST = 'localhost' +const MYSQL_DB_USER = 'usr' +const MYSQL_DB_PASSWORD = 'pass' +const MYSQL_DB_NAME = 'bot' +``` ![](https://i.imgur.com/dC6lEwy.png) -En el caso de MySql y Mongo es necesario especificar en app.js los datos de la conexión. ### 🤔 Preguntas frecuentes - ¿Como puedo hacer aportaciones de código en el proyecto?: [Ver Video](https://youtu.be/Lxt8Acob6aU) From 4fc3a6332b8838362fb90318f5a41dd7e100d709 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 18 Dec 2022 17:58:56 -0600 Subject: [PATCH 279/459] docs: se agrego a README.md info de los flujos Se agrego a README.md informacion del orden de los flujos y conexiones. --- starters/apps/base-bailey-memory/README.md | 18 ++++++++++++++---- starters/apps/base-bailey-mongo/README.md | 21 ++++++++++++++++----- starters/apps/base-bailey-mysql/README.md | 21 ++++++++++++++++----- starters/apps/base-meta-memory/README.md | 18 ++++++++++++++---- starters/apps/base-twilio-memory/README.md | 18 ++++++++++++++---- starters/apps/base-twilio-mongo/README.md | 19 +++++++++++++++---- starters/apps/base-twilio-mysql/README.md | 20 +++++++++++++++----- starters/apps/base-venom-memory/README.md | 18 ++++++++++++++---- starters/apps/base-venom-mongo/README.md | 21 ++++++++++++++++----- starters/apps/base-venom-mysql/README.md | 20 +++++++++++++++----- starters/apps/base-wweb-memory/README.md | 18 ++++++++++++++---- starters/apps/base-wweb-mongo/README.md | 21 ++++++++++++++++----- starters/apps/base-wweb-mysql/README.md | 20 +++++++++++++++----- 13 files changed, 194 insertions(+), 59 deletions(-) diff --git a/starters/apps/base-bailey-memory/README.md b/starters/apps/base-bailey-memory/README.md index 4d1d6b2..d0e43d2 100644 --- a/starters/apps/base-bailey-memory/README.md +++ b/starters/apps/base-bailey-memory/README.md @@ -1,14 +1,24 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-bailey-mongo/README.md b/starters/apps/base-bailey-mongo/README.md index d5a4d67..a22e43b 100644 --- a/starters/apps/base-bailey-mongo/README.md +++ b/starters/apps/base-bailey-mongo/README.md @@ -1,14 +1,15 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ -Recuerda configurar los parametros de conexion de la base de datos + +Recuerda configurar los parametros de conexión de la base de datos: ```js // app.js @@ -16,6 +17,16 @@ const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' ``` + Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + + Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-bailey-mysql/README.md b/starters/apps/base-bailey-mysql/README.md index fbad3da..4a1cab2 100644 --- a/starters/apps/base-bailey-mysql/README.md +++ b/starters/apps/base-bailey-mysql/README.md @@ -1,14 +1,15 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ -Recuerda configurar los parametros de conexion de la base de datos + +Recuerda configurar los parametros de conexión de la base de datos ```js // app.js @@ -17,6 +18,16 @@ const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' ``` +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install diff --git a/starters/apps/base-meta-memory/README.md b/starters/apps/base-meta-memory/README.md index 4d1d6b2..d0e43d2 100644 --- a/starters/apps/base-meta-memory/README.md +++ b/starters/apps/base-meta-memory/README.md @@ -1,14 +1,24 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-twilio-memory/README.md b/starters/apps/base-twilio-memory/README.md index 4d1d6b2..d0e43d2 100644 --- a/starters/apps/base-twilio-memory/README.md +++ b/starters/apps/base-twilio-memory/README.md @@ -1,14 +1,24 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-twilio-mongo/README.md b/starters/apps/base-twilio-mongo/README.md index d5a4d67..0791742 100644 --- a/starters/apps/base-twilio-mongo/README.md +++ b/starters/apps/base-twilio-mongo/README.md @@ -1,13 +1,14 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ + Recuerda configurar los parametros de conexion de la base de datos ```js // app.js @@ -16,6 +17,16 @@ const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' ``` + Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + + Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-twilio-mysql/README.md b/starters/apps/base-twilio-mysql/README.md index fbad3da..ad304ee 100644 --- a/starters/apps/base-twilio-mysql/README.md +++ b/starters/apps/base-twilio-mysql/README.md @@ -1,14 +1,15 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ -Recuerda configurar los parametros de conexion de la base de datos + +Recuerda configurar los parametros de conexión de la base de datos ```js // app.js @@ -17,6 +18,15 @@ const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' ``` +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. ``` npm install diff --git a/starters/apps/base-venom-memory/README.md b/starters/apps/base-venom-memory/README.md index 4d1d6b2..d0e43d2 100644 --- a/starters/apps/base-venom-memory/README.md +++ b/starters/apps/base-venom-memory/README.md @@ -1,14 +1,24 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-venom-mongo/README.md b/starters/apps/base-venom-mongo/README.md index d5a4d67..b2bf791 100644 --- a/starters/apps/base-venom-mongo/README.md +++ b/starters/apps/base-venom-mongo/README.md @@ -1,14 +1,15 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ -Recuerda configurar los parametros de conexion de la base de datos + +Recuerda configurar los parametros de conexión de la base de datos. ```js // app.js @@ -16,6 +17,16 @@ const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' ``` + Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + + Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-venom-mysql/README.md b/starters/apps/base-venom-mysql/README.md index fbad3da..ad304ee 100644 --- a/starters/apps/base-venom-mysql/README.md +++ b/starters/apps/base-venom-mysql/README.md @@ -1,14 +1,15 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ -Recuerda configurar los parametros de conexion de la base de datos + +Recuerda configurar los parametros de conexión de la base de datos ```js // app.js @@ -17,6 +18,15 @@ const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' ``` +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. ``` npm install diff --git a/starters/apps/base-wweb-memory/README.md b/starters/apps/base-wweb-memory/README.md index 4d1d6b2..d0e43d2 100644 --- a/starters/apps/base-wweb-memory/README.md +++ b/starters/apps/base-wweb-memory/README.md @@ -1,14 +1,24 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-wweb-mongo/README.md b/starters/apps/base-wweb-mongo/README.md index d5a4d67..a22e43b 100644 --- a/starters/apps/base-wweb-mongo/README.md +++ b/starters/apps/base-wweb-mongo/README.md @@ -1,14 +1,15 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ -Recuerda configurar los parametros de conexion de la base de datos + +Recuerda configurar los parametros de conexión de la base de datos: ```js // app.js @@ -16,6 +17,16 @@ const MONGO_DB_URI = 'mongodb://0.0.0.0:27017' const MONGO_DB_NAME = 'db_bot' ``` + Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + + Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. + ``` npm install npm start diff --git a/starters/apps/base-wweb-mysql/README.md b/starters/apps/base-wweb-mysql/README.md index fbad3da..ad304ee 100644 --- a/starters/apps/base-wweb-mysql/README.md +++ b/starters/apps/base-wweb-mysql/README.md @@ -1,14 +1,15 @@ ### CHATBOT Whatsapp -Este bot es una aplicación que puedes vincular con tu whatsapp crear flujos para automatizar tareas en tu negocio o procesos repetitivos +Este bot es una aplicación que puedes vincular con tu whatsapp y crear flujos para automatizar tareas en tu negocio o procesos repetitivos. -Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +Este bot contiene un flujo básico en el cual una persona (cliente) escribe **"hola"** y el bot responde: - Bienvenido a mi tienda -- Como puedo ayudarte? -- Tengo: Zapatos Bolsos etc.. +- ¿Como puedo ayudarte? +- Tengo: Zapatos, Bolsos etc.. __Iniciar__ -Recuerda configurar los parametros de conexion de la base de datos + +Recuerda configurar los parametros de conexión de la base de datos ```js // app.js @@ -17,6 +18,15 @@ const MYSQL_DB_USER = 'user' const MYSQL_DB_PASSWORD = 'pass' const MYSQL_DB_NAME = 'bot' ``` +Los flujos se declaran de atrás para adelante, es decir que si tienes un flujo de este tipo: + + Menu Principal + - SubMenu 1 + - Submenu 1.1 + - Submenu 2 + - Submenu 2.1 + +Primero se declaran los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. ``` npm install From 964a074aa41324bd09d0c4e2e7aa663a0602b69c Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 19 Dec 2022 11:45:39 +0100 Subject: [PATCH 280/459] fix(bot): :ambulance: fix callback functions --- packages/bot/core/core.class.js | 17 ++++++++++++++--- packages/provider/src/baileys/index.js | 19 ++++++++++++++++--- packages/provider/src/venom/index.js | 15 +++++++++++---- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index e04bd13..7411954 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -92,14 +92,25 @@ class CoreClass { return refToContinue } - // 📄 [options: callback]: Si se tiene un callback se ejecuta - if (!fallBackFlag && refToContinue && prevMsg?.options?.callback) { - const indexFlow = this.flowClass.findIndexByRef(refToContinue?.ref) + // 📄 Se encarga de revisar si el contexto del mensaje tiene callback y ejecutarlo + const cbEveryCtx = (inRef) => { + const indexFlow = this.flowClass.findIndexByRef(inRef) this.flowClass.allCallbacks[indexFlow].callback(messageInComming, { fallBack, }) } + // 📄 [options: callback]: Si se tiene un callback se ejecuta + if (!fallBackFlag) { + if (refToContinue && prevMsg?.options?.callback) { + cbEveryCtx(refToContinue?.ref) + } else { + for (const ite of this.flowClass.find(body)) { + cbEveryCtx(ite?.ref) + } + } + } + // 📄🤘(tiene return) [options: nested(array)]: Si se tiene flujos hijos los implementa if (!fallBackFlag && prevMsg?.options?.nested?.length) { const nestedRef = prevMsg.options.nested diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 3855043..a0c8a84 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -1,7 +1,9 @@ const { ProviderClass } = require('@bot-whatsapp/bot') const pino = require('pino') const mime = require('mime-types') -const fs = require('fs') +const { existsSync, createWriteStream } = require('fs') +const { Console } = require('console') + const { default: makeWASocket, useMultiFileAuthState, @@ -12,6 +14,10 @@ const { baileyIsValidNumber, } = require('./utils') +const logger = new Console({ + stdout: createWriteStream(`${process.cwd()}/baileys.log`), +}) + /** * ⚙️ BaileysProvider: Es una clase tipo adaptor * que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas) @@ -49,7 +55,14 @@ class BaileysProvider extends ProviderClass { } ) } catch (e) { - this.emit('error', e) + logger.log(e) + this.emit('auth_failure', [ + `Algo inesperado ha ocurrido NO entres en pánico`, + `Reinicia el BOT`, + `Tambien puedes mirar un log que se ha creado baileys.log`, + `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, + `(Puedes abrir un ISSUE) https://github.com/codigoencasa/bot-whatsapp/issues/new/choose`, + ]) } } @@ -177,7 +190,7 @@ class BaileysProvider extends ProviderClass { */ sendFile = async (number, filePath) => { - if (fs.existsSync(filePath)) { + if (existsSync(filePath)) { const mimeType = mime.lookup(filePath) const numberClean = number.replace('+', '') const fileName = filePath.split('/').pop() diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index 1aafd80..8780e84 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -1,11 +1,18 @@ const { ProviderClass } = require('@bot-whatsapp/bot') const venom = require('venom-bot') +const { createWriteStream } = require('fs') +const { Console } = require('console') + const { venomCleanNumber, venomGenerateImage, venomisValidNumber, } = require('./utils') +const logger = new Console({ + stdout: createWriteStream(`${process.cwd()}/venom.log`), +}) + /** * ⚙️ VenomProvider: Es una clase tipo adaptor * que extiende clases de ProviderClass (la cual es como interfaz para sber que funciones rqueridas) @@ -34,13 +41,13 @@ class VenomProvider extends ProviderClass { ) this.vendor = client } catch (e) { + logger.log(e) this.emit('auth_failure', { instructions: [ `Ocurrio un error con la inicializacion de venom`, - `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, - `(Puedes abrir un ISSUE) https://github.com/leifermendez/bot-whatsapp/issues/new/choose`, - ``, - `${e?.message}`, + `Reinicia el BOT`, + `Tambien puedes mirar un log que se ha creado venom.log`, + `(Puedes abrir un ISSUE) https://github.com/codigoencasa/bot-whatsapp/issues/new/choose`, ], }) } From b6bf43d70fc28c6a229522b9b0de76cec43ac864 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 19 Dec 2022 12:16:20 +0100 Subject: [PATCH 281/459] fix(provider): :fire: send message togther with media --- packages/provider/src/baileys/index.js | 37 ++++++++++++----------- packages/provider/src/venom/index.js | 17 ++++++++++- packages/provider/src/venom/utils.js | 41 ++++++++++++++++++++++++-- 3 files changed, 75 insertions(+), 20 deletions(-) diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index a0c8a84..0b14afe 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -33,7 +33,7 @@ class BaileysProvider extends ProviderClass { /** * Iniciar todo Bailey */ - async initBailey() { + initBailey = async () => { const { state, saveCreds } = await useMultiFileAuthState('sessions') try { @@ -135,9 +135,10 @@ class BaileysProvider extends ProviderClass { * @example await sendMessage('+XXXXXXXXXXX', 'https://dominio.com/imagen.jpg' | 'img/imagen.jpg') */ - sendMedia = async (number, imageUrl) => { + sendMedia = async (number, imageUrl, text) => { await this.vendor.sendMessage(number, { image: { url: imageUrl }, + text, }) } @@ -166,21 +167,6 @@ class BaileysProvider extends ProviderClass { sendText = async (number, message) => { return this.vendor.sendMessage(number, { text: message }) } - /** - * TODO: Necesita terminar de implementar el sendMedia y sendButton guiarse: - * https://github.com/leifermendez/bot-whatsapp/blob/4e0fcbd8347f8a430adb43351b5415098a5d10df/packages/provider/src/web-whatsapp/index.js#L165 - * @param {string} number - * @param {string} message - * @example await sendMessage('+XXXXXXXXXXX', 'Hello World') - */ - sendMessage = async (numberIn, message, { options }) => { - const number = baileyCleanNumber(numberIn) - - // if (options?.buttons?.length) - // return this.sendButtons(number, message, options.buttons) - if (options?.media) return this.sendMedia(number, options.media) - return this.sendText(number, message) - } /** * @@ -224,6 +210,23 @@ class BaileysProvider extends ProviderClass { await this.vendor.sendMessage(`${numberClean}@c.us`, buttonMessage) } + + /** + * TODO: Necesita terminar de implementar el sendMedia y sendButton guiarse: + * https://github.com/leifermendez/bot-whatsapp/blob/4e0fcbd8347f8a430adb43351b5415098a5d10df/packages/provider/src/web-whatsapp/index.js#L165 + * @param {string} number + * @param {string} message + * @example await sendMessage('+XXXXXXXXXXX', 'Hello World') + */ + sendMessage = async (numberIn, message, { options }) => { + const number = baileyCleanNumber(numberIn) + + // if (options?.buttons?.length) + // return this.sendButtons(number, message, options.buttons) + if (options?.media) + return this.sendMedia(number, options.media, message) + return this.sendText(number, message) + } } module.exports = BaileysProvider diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index 8780e84..645e809 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -7,6 +7,7 @@ const { venomCleanNumber, venomGenerateImage, venomisValidNumber, + venomDownloadMedia, } = require('./utils') const logger = new Console({ @@ -104,6 +105,19 @@ class VenomProvider extends ProviderClass { } } + /** + * Enviar imagen o multimedia + * @param {*} number + * @param {*} mediaInput + * @param {*} message + * @returns + */ + sendMedia = async (number, mediaInput, message) => { + if (!mediaInput) throw new Error(`NO_SE_ENCONTRO: ${mediaInput}`) + const fileDownloaded = await venomDownloadMedia(mediaInput) + return this.vendor.sendImage(number, fileDownloaded, '.', message) + } + /** * Enviar mensaje al usuario * @param {*} userId @@ -115,7 +129,8 @@ class VenomProvider extends ProviderClass { const number = venomCleanNumber(userId) if (options?.buttons?.length) return this.sendButtons(number, message, options.buttons) - if (options?.media) return this.sendMedia(number, options.media) + if (options?.media) + return this.sendMedia(number, options.media, message) return this.vendor.sendText(number, message) } } diff --git a/packages/provider/src/venom/utils.js b/packages/provider/src/venom/utils.js index ff1d733..cf1dc5f 100644 --- a/packages/provider/src/venom/utils.js +++ b/packages/provider/src/venom/utils.js @@ -1,4 +1,7 @@ -const { writeFile } = require('fs') +const { writeFile, createWriteStream } = require('fs') +const { tmpdir } = require('os') +const http = require('http') +const https = require('https') const combineImage = require('combine-image') const venomCleanNumber = (number, full = false) => { @@ -35,9 +38,43 @@ const venomGenerateImage = async (base) => { cleanImage.write(PATH_QR) } +/** + * Incompleta + * Descargar archivo multimedia para enviar + * @param {*} url + * @returns + */ +const venomDownloadMedia = (url) => { + return new Promise((resolve, reject) => { + const ext = url.split('.').pop() + const checkProtocol = url.includes('https:') + const handleHttp = checkProtocol ? https : http + const name = `tmp-${Date.now()}.${ext}` + const fullPath = `${tmpdir()}/${name}` + const file = createWriteStream(fullPath) + handleHttp.get(url, function (response) { + response.pipe(file) + file.on('finish', function () { + file.close() + resolve(fullPath) + }) + file.on('error', function () { + console.log('errro') + file.close() + reject(null) + }) + }) + }) +} + const venomisValidNumber = (rawNumber) => { const regexGroup = /\@g.us\b/gm const exist = rawNumber.match(regexGroup) return !exist } -module.exports = { venomCleanNumber, venomGenerateImage, venomisValidNumber } +module.exports = { + venomCleanNumber, + venomGenerateImage, + venomisValidNumber, + venomDownloadMedia, +} From 7d6708c01bbdc5043a7e6ed56fe15a9618115b91 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 19 Dec 2022 13:36:18 +0100 Subject: [PATCH 282/459] fix: :art: update --- packages/bot/core/core.class.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 394b704..e545a55 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -95,9 +95,12 @@ class CoreClass { // 📄 Se encarga de revisar si el contexto del mensaje tiene callback y ejecutarlo const cbEveryCtx = (inRef) => { const indexFlow = this.flowClass.findIndexByRef(inRef) - this.flowClass.allCallbacks[indexFlow].callback(messageInComming, { - fallBack, - }) + this.flowClass.allCallbacks[indexFlow].callback( + messageCtxInComming, + { + fallBack, + } + ) } // 📄 [options: callback]: Si se tiene un callback se ejecuta From 0c94647a27747c3ddf4f02926580370f0d81bdc2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 19 Dec 2022 14:02:09 +0100 Subject: [PATCH 283/459] feat(provider): :zap: update --- packages/bot/io/methods/addAnswer.js | 5 +- packages/contexts/src/mock/mock.class.js | 4 +- yarn.lock | 242 +++++++++++------------ 3 files changed, 124 insertions(+), 127 deletions(-) diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index d5b53e6..a7db6d6 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -31,10 +31,7 @@ const addAnswer = nested: Array.isArray(nested) ? nested : [], }) - const callback = - typeof cb === 'function' - ? cb - : () => console.log('Callback no definida') + const callback = typeof cb === 'function' ? cb : () => null const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx diff --git a/packages/contexts/src/mock/mock.class.js b/packages/contexts/src/mock/mock.class.js index 4ffece4..6e5c9d2 100644 --- a/packages/contexts/src/mock/mock.class.js +++ b/packages/contexts/src/mock/mock.class.js @@ -16,8 +16,8 @@ class MockContext extends CoreClass { * @param {*} messageCtxInComming * @returns */ - handleMsg = async ({ from, body }) => { - console.log('DEBUG:', messageCtxInComming) + handleMsg = async () => { + console.log('DEBUG:') } } diff --git a/yarn.lock b/yarn.lock index a977b83..a39adac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -82,15 +82,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.229.0" +"@aws-sdk/client-cognito-identity@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.231.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/client-sts": 3.229.0 - "@aws-sdk/config-resolver": 3.226.0 - "@aws-sdk/credential-provider-node": 3.229.0 + "@aws-sdk/client-sts": 3.231.0 + "@aws-sdk/config-resolver": 3.231.0 + "@aws-sdk/credential-provider-node": 3.231.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -114,7 +114,7 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.226.0 + "@aws-sdk/util-defaults-mode-node": 3.231.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -122,17 +122,17 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 742e26278a61685b276e4dbaa15e3e3fc5702606ec2be72f59a210eedba99b8b66fabfd2d00927e76f7941dbe63701176f5e8c6cad82224f30dfeca2b125c186 + checksum: 309c433d0005c072db5298d75df4f37826350ffc2bdab940c1147f719f5285207e9761ee8f87884b23ea2cf5f8bf7157fcf992008f0a838491954cbe6925a47a languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.229.0" +"@aws-sdk/client-sso-oidc@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.231.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.226.0 + "@aws-sdk/config-resolver": 3.231.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -155,7 +155,7 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.226.0 + "@aws-sdk/util-defaults-mode-node": 3.231.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -163,17 +163,17 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 031bedebd213f7f2522321abb55bb50a2271e4d63ad38e3596eab6daeddb39044a4d72f554fc3e716ea4108317b3169ffb681b6e75f45ec83f730619b588eac6 + checksum: 4ec5e5f0f25969df5d5341cd1f291a763ed2edaeb317228a7873f18f16471f2cbd83bd575f766a4f0f22c3ebfcf69ecd75891fd0518a205c69eb20ded8734c98 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/client-sso@npm:3.229.0" +"@aws-sdk/client-sso@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/client-sso@npm:3.231.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.226.0 + "@aws-sdk/config-resolver": 3.231.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -196,7 +196,7 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.226.0 + "@aws-sdk/util-defaults-mode-node": 3.231.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -204,18 +204,18 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 970e6ea9666a6e976f0b4e7f693e286ade8c090aca1ae780835050623f5d8bd3ecbc0336d1b3f4037e92d50c48b5d18d5ad6d595ddb62db7efe38b90ab928129 + checksum: 3551984b8c14f611daa93c7082f2a361caa0c8e985fbfc6d66674ec7f3624364aa7d3c8011aa334729022e3866e5323c6ac18a4ba3e840023128000994d99165 languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/client-sts@npm:3.229.0" +"@aws-sdk/client-sts@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/client-sts@npm:3.231.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.226.0 - "@aws-sdk/credential-provider-node": 3.229.0 + "@aws-sdk/config-resolver": 3.231.0 + "@aws-sdk/credential-provider-node": 3.231.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -240,7 +240,7 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.226.0 + "@aws-sdk/util-defaults-mode-node": 3.231.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -249,32 +249,32 @@ __metadata: "@aws-sdk/util-utf8-node": 3.208.0 fast-xml-parser: 4.0.11 tslib: ^2.3.1 - checksum: 18d357f2433ef832948f867c0e22ba34ac57c096e8b5209e0203d892acab9de60d9114a513f8ec9354ec83a89652a8285a49f89ee3203cededc514a25eea67f5 + checksum: 377eabf0ff0523b7847fe1677084293c322d5525443a859f522b83363eb647a87721245f7b48f7232e2f2f3b49dfdaefdf274e9578915c24617c5d7540624aca languageName: node linkType: hard -"@aws-sdk/config-resolver@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/config-resolver@npm:3.226.0" +"@aws-sdk/config-resolver@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/config-resolver@npm:3.231.0" dependencies: "@aws-sdk/signature-v4": 3.226.0 "@aws-sdk/types": 3.226.0 "@aws-sdk/util-config-provider": 3.208.0 "@aws-sdk/util-middleware": 3.226.0 tslib: ^2.3.1 - checksum: 08bfbc0528da98cba2b46bda05cd9af46f6eced3dbe5e415b11465501fe672d99b869adc9f08cfd2f138c9b61ac119b43eb9a90a490395aec705e1b795022d4d + checksum: 67ec8d1f547cdde45f9c0daec21864225cfc04fba732e5e157b59d23f987d588fdc1738e1ce43012f885bdb6e65da8105511f5816e5844a5b839192b5feecc64 languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.229.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.231.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.229.0 + "@aws-sdk/client-cognito-identity": 3.231.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 37cc46249390dc5bc6cb39b014a2c9710fcbe53d22b8cf90452473712f7464dffcf286c3c7cb72ae268988c136710a1dbcb52006d93d2de8973c40953ef79058 + checksum: f0c2059379f703e72538b00e52d2f5ce01c69a8adf3af370af2e72cc971ffe44963e6611917032326c0207b11fe34133780540e4ab0412e36e6c34b589f3dec3 languageName: node linkType: hard @@ -302,37 +302,37 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.229.0" +"@aws-sdk/credential-provider-ini@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.231.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.229.0 + "@aws-sdk/credential-provider-sso": 3.231.0 "@aws-sdk/credential-provider-web-identity": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: fb573675c0c34c7fa0e207c78190bce73e42fc1713d93a25868b50002352a70f3584e2ab0a0b249103bcf25c3a60c26261ad3dcfc1d6280b4f5dc8ad4e4b3f49 + checksum: f6b11d4876602e65464bc25804781b78a6e0c66b39c293178d7e97f2f11c151bd6e23e1e31158c0442dfbc3076f417aeecf44c315d4e509b48e7cfc3be2e7472 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.229.0" +"@aws-sdk/credential-provider-node@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.231.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.229.0 + "@aws-sdk/credential-provider-ini": 3.231.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.229.0 + "@aws-sdk/credential-provider-sso": 3.231.0 "@aws-sdk/credential-provider-web-identity": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: a8ad0f6aeb3c7ee03937e7389dbcabeb81f2a6e23c3bfeb84f518b063fb156a2d2f2e4a7267655c6bdfa178ba51e9e0ea74c98397dd6dd58b9a315d9e5a4a6de + checksum: e28266dce53130c6e28eb7e82028e29cb2db2f06e1f40c98ae7875bcf2e17553976899f02b93576070c7fd77c131046ec752f543f9aa7e32078e1f3a44c3acf5 languageName: node linkType: hard @@ -348,17 +348,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.229.0" +"@aws-sdk/credential-provider-sso@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.231.0" dependencies: - "@aws-sdk/client-sso": 3.229.0 + "@aws-sdk/client-sso": 3.231.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/token-providers": 3.229.0 + "@aws-sdk/token-providers": 3.231.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 9497a8c5dfddf70a4740e9e485cea757070a6e9c5c94469cc51599918f2689f6ca794fcaba98320b20aa7b81e7e56c3b91f11d3cf8111335e445638825d0ee58 + checksum: 0aa69ec7ea5b0115c53972c6ae0419687e0bebc7500fbefa77c1108ecb81e735227982b586180b2fe111427cba17fad75f6db61f69a8b5cf5ad079f7ee09107c languageName: node linkType: hard @@ -374,25 +374,25 @@ __metadata: linkType: hard "@aws-sdk/credential-providers@npm:^3.186.0": - version: 3.229.0 - resolution: "@aws-sdk/credential-providers@npm:3.229.0" + version: 3.231.0 + resolution: "@aws-sdk/credential-providers@npm:3.231.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.229.0 - "@aws-sdk/client-sso": 3.229.0 - "@aws-sdk/client-sts": 3.229.0 - "@aws-sdk/credential-provider-cognito-identity": 3.229.0 + "@aws-sdk/client-cognito-identity": 3.231.0 + "@aws-sdk/client-sso": 3.231.0 + "@aws-sdk/client-sts": 3.231.0 + "@aws-sdk/credential-provider-cognito-identity": 3.231.0 "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.229.0 - "@aws-sdk/credential-provider-node": 3.229.0 + "@aws-sdk/credential-provider-ini": 3.231.0 + "@aws-sdk/credential-provider-node": 3.231.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.229.0 + "@aws-sdk/credential-provider-sso": 3.231.0 "@aws-sdk/credential-provider-web-identity": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 9acd1bfb97d5c45a3b02ed74540317791eb00a058bbe4ab2852099f59dff62ab6a7f834dcfdb1f75e80956b86d80a3b44c0574361a12473f8a3e493437a1b36a + checksum: edbf6a2821c5bf38d40a83f8d7c8ab967fff85d2c10af79f6f5df40cd52ef185f988c6499552a0294ca98cb7db34cb77e046a78e779e5ff5d362d104c29acc83 languageName: node linkType: hard @@ -678,16 +678,16 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/token-providers@npm:3.229.0" +"@aws-sdk/token-providers@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/token-providers@npm:3.231.0" dependencies: - "@aws-sdk/client-sso-oidc": 3.229.0 + "@aws-sdk/client-sso-oidc": 3.231.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: b099537ba47f3c2520f8081590ef97d22279aea39fcb1f3883f611273c8f15f4190d7b44f3f2debfdb36900f124e5f188193b039ce95c45c6e20d3b48ef9a3da + checksum: 3fe2b2776232f2aad499d74ec540431db013520a1c4e3cee6ed4ab4d5cb2a402b1b50dd60f64d1c95e9ebb2bcc44c2244462d62453b9f6226b73082930dcc119 languageName: node linkType: hard @@ -770,17 +770,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-defaults-mode-node@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/util-defaults-mode-node@npm:3.226.0" +"@aws-sdk/util-defaults-mode-node@npm:3.231.0": + version: 3.231.0 + resolution: "@aws-sdk/util-defaults-mode-node@npm:3.231.0" dependencies: - "@aws-sdk/config-resolver": 3.226.0 + "@aws-sdk/config-resolver": 3.231.0 "@aws-sdk/credential-provider-imds": 3.226.0 "@aws-sdk/node-config-provider": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: cb34426f745aa3965fe25d5c8e38eb4d1c3f85f6f071995b15ecad48afcd0ca01a01b7f572c26dacd917134d9c676625492df8f6fb01d702ad6becb65bd34105 + checksum: 6dca6704798145569f25002605c4918890ebd2b7bf56d20909192993eea5bcf8fdceff7f51484c9ab7e009a77c3d371e0935666d204c819e703128e857859e73 languageName: node linkType: hard @@ -1324,20 +1324,20 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.3.3": - version: 1.3.3 - resolution: "@eslint/eslintrc@npm:1.3.3" +"@eslint/eslintrc@npm:^1.3.3, @eslint/eslintrc@npm:^1.4.0": + version: 1.4.0 + resolution: "@eslint/eslintrc@npm:1.4.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 espree: ^9.4.0 - globals: ^13.15.0 + globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: f03e9d6727efd3e0719da2051ea80c0c73d20e28c171121527dbb868cd34232ca9c1d0525a66e517a404afea26624b1e47895b6a92474678418c2f50c9566694 + checksum: 73e39c833deafde8d8706e6fa9b52b6d99927c094ead8e405ea4174e8197ec24aac9ba88ae38cc8ad32eaccf07b9c7fc5dc70761d1fba6da41a928691447305f languageName: node linkType: hard @@ -1348,14 +1348,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.6": - version: 0.11.7 - resolution: "@humanwhocodes/config-array@npm:0.11.7" +"@humanwhocodes/config-array@npm:^0.11.6, @humanwhocodes/config-array@npm:^0.11.8": + version: 0.11.8 + resolution: "@humanwhocodes/config-array@npm:0.11.8" dependencies: "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 minimatch: ^3.0.5 - checksum: cf506dc45d9488af7fbf108ea6ac2151ba1a25e6d2b94b9b4fc36d2c1e4099b89ff560296dbfa13947e44604d4ca4a90d97a4fb167370bf8dd01a6ca2b6d83ac + checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3 languageName: node linkType: hard @@ -1401,7 +1401,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": +"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 @@ -1702,21 +1702,21 @@ __metadata: linkType: hard "@rollup/plugin-commonjs@npm:^23.0.2": - version: 23.0.4 - resolution: "@rollup/plugin-commonjs@npm:23.0.4" + version: 23.0.7 + resolution: "@rollup/plugin-commonjs@npm:23.0.7" dependencies: "@rollup/pluginutils": ^5.0.1 commondir: ^1.0.1 estree-walker: ^2.0.2 glob: ^8.0.3 is-reference: 1.2.1 - magic-string: ^0.26.4 + magic-string: ^0.27.0 peerDependencies: rollup: ^2.68.0||^3.0.0 peerDependenciesMeta: rollup: optional: true - checksum: 32d84de06140d4d050c0b402c6a6d858a6f970c3d6f50ea1fba40495b0cd0f977486513639875058287885cfbddc6f8b1ab5ebbe0d28f0364506b372fd4b0bd6 + checksum: 01d90947bd4aa664c568cec172399825921f29afc035a6d8aec153868ab151ce7901ad56a101c76655e31b21567ddc70313c4bca476685b872218f041757a8c9 languageName: node linkType: hard @@ -1754,17 +1754,17 @@ __metadata: linkType: hard "@rollup/plugin-replace@npm:^5.0.1": - version: 5.0.1 - resolution: "@rollup/plugin-replace@npm:5.0.1" + version: 5.0.2 + resolution: "@rollup/plugin-replace@npm:5.0.2" dependencies: "@rollup/pluginutils": ^5.0.1 - magic-string: ^0.26.4 + magic-string: ^0.27.0 peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 peerDependenciesMeta: rollup: optional: true - checksum: d5f98a93dd24086ed1bf70e9299230d1fddae9b132280e2daaca855dba2307eccd5490553e2a03b701b7411593d2921d2d675e5d906b4754c57152f8c50adb07 + checksum: 3a91b5fa2ce5acfe67c1faf8d479585da30f398f29499cf8a2d2153c899af0b2ef0363012db0e6edc2ebbb3d9fad6dd7ad591c9d977c1ae2ca3256b52e86d950 languageName: node linkType: hard @@ -1959,16 +1959,16 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:latest": - version: 18.11.15 - resolution: "@types/node@npm:18.11.15" - checksum: cae8692a5cee0316f93ee0342237eb921f70c51afb37c661c711a925a4642654ae7e404c5a80899d481c0cfaff3a6891ef04bacd330a2e72734192bfc91dc2d8 + version: 18.11.17 + resolution: "@types/node@npm:18.11.17" + checksum: 1933afd068d5c75c068c6c4df6d10edb3b0b2bb6503d544e2f0496ac007c90596e6a5e284a8ef032451bc16f871b7e46719d7d2bea60e9b25d13a77d52161cac languageName: node linkType: hard "@types/node@npm:^14.0.0": - version: 14.18.34 - resolution: "@types/node@npm:14.18.34" - checksum: 25ac3b456a0b7b82c76b37276ec86845849e8276fc81d1470a87227c105c619e299aa7165b6148aa11a4ea156b1452f6d3327935f3e7dc0067ff54dde0e3d4e0 + version: 14.18.35 + resolution: "@types/node@npm:14.18.35" + checksum: edaeea2735aa62a12b9f67311ef6efdb960560e055dc127a658b3571e0bbd52e020bd570227362bf255cd156ddfae18c18205515f1fb3599e34c06a914f167a1 languageName: node linkType: hard @@ -4227,11 +4227,11 @@ __metadata: linkType: hard "eslint@npm:^8.26.0": - version: 8.29.0 - resolution: "eslint@npm:8.29.0" + version: 8.30.0 + resolution: "eslint@npm:8.30.0" dependencies: - "@eslint/eslintrc": ^1.3.3 - "@humanwhocodes/config-array": ^0.11.6 + "@eslint/eslintrc": ^1.4.0 + "@humanwhocodes/config-array": ^0.11.8 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 ajv: ^6.10.0 @@ -4250,7 +4250,7 @@ __metadata: file-entry-cache: ^6.0.1 find-up: ^5.0.0 glob-parent: ^6.0.2 - globals: ^13.15.0 + globals: ^13.19.0 grapheme-splitter: ^1.0.4 ignore: ^5.2.0 import-fresh: ^3.0.0 @@ -4271,7 +4271,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: e05204b05907b82d910983995cb946e0ba62ca514eb2b6791c43f623333b143564a2eee0139909d31c10935c21877d815b1f76dd674a59cb91c471064325c4ab + checksum: b7525bb465b342665c3b8bab7e114d514ef1bc4e79f211c919863f9c71767e7412ec82383a22614a92d159783f91101018817000f7c61ce69a5e7015280cafaf languageName: node linkType: hard @@ -4957,7 +4957,7 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.15.0": +"globals@npm:^13.15.0, globals@npm:^13.19.0": version: 13.19.0 resolution: "globals@npm:13.19.0" dependencies: @@ -5244,9 +5244,9 @@ __metadata: linkType: hard "ignore@npm:^5.1.1, ignore@npm:^5.1.4, ignore@npm:^5.2.0": - version: 5.2.1 - resolution: "ignore@npm:5.2.1" - checksum: 7251d00cba49fe88c4f3565fadeb4aa726ba38294a9a79ffed542edc47bafd989d4b2ccf65700c5b1b26a1e91dfc7218fb23017937c79216025d5caeec0ee9d5 + version: 5.2.2 + resolution: "ignore@npm:5.2.2" + checksum: 2086f12e8dca6978001b3861562272888fcf231f464696938049e0aa576d0562a8f31926630a973e302944c20c64639c14cfdd725bacd208dcda973021377420 languageName: node linkType: hard @@ -5711,11 +5711,11 @@ __metadata: linkType: hard "json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" + version: 2.2.2 + resolution: "json5@npm:2.2.2" bin: json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b + checksum: 9a878d66b72157b073cf0017f3e5d93ec209fa5943abcb38d37a54b208917c166bd473c26a24695e67a016ce65759aeb89946592991f8f9174fb96c8e2492683 languageName: node linkType: hard @@ -6007,12 +6007,12 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.26.4": - version: 0.26.7 - resolution: "magic-string@npm:0.26.7" +"magic-string@npm:^0.27.0": + version: 0.27.0 + resolution: "magic-string@npm:0.27.0" dependencies: - sourcemap-codec: ^1.4.8 - checksum: 89b0d60cbb32bbf3d1e23c46ea93db082d18a8230b972027aecb10a40bba51be519ecce0674f995571e3affe917b76b09f59d8dbc9a1b2c9c4102a2b6e8a2b01 + "@jridgewell/sourcemap-codec": ^1.4.13 + checksum: 273faaa50baadb7a2df6e442eac34ad611304fc08fe16e24fe2e472fd944bfcb73ffb50d2dc972dc04e92784222002af46868cb9698b1be181c81830fd95a13e languageName: node linkType: hard @@ -7020,9 +7020,9 @@ __metadata: linkType: hard "node-releases@npm:^2.0.6": - version: 2.0.7 - resolution: "node-releases@npm:2.0.7" - checksum: d1c5af091d788b7f9dfce5aa77cbf76c28e8e326b891fe64a05b96943a90cd6ba19eae94ef32777c23f5898a7b00d9cf8266adba33d61ebe6611cca74ccfc0b1 + version: 2.0.8 + resolution: "node-releases@npm:2.0.8" + checksum: b1ab02c0d5d8e081bf9537232777a7a787dc8fef07f70feabe70a344599b220fe16462f746ac30f3eed5a58549445ad69368964d12a1f8b3b764f6caab7ba34a languageName: node linkType: hard @@ -8099,8 +8099,8 @@ __metadata: linkType: hard "rollup@npm:^3.2.3": - version: 3.7.4 - resolution: "rollup@npm:3.7.4" + version: 3.7.5 + resolution: "rollup@npm:3.7.5" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -8108,7 +8108,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 0f2478d740527cdc8f4d81a5676221b0ec9495147cae0e6643627f6ac3ac63bf92385e26936ed8ef9ed06678a2ff7d8398489a235581c590f149149a003870d8 + checksum: 772f85e9f12c83091cbe8ef31dc563198566cfe536dc8099dd6d4e372daa370f9d455cc42c7993d22b02521e25d53733df7e98d2a993e5a22bf11b2591de4e2d languageName: node linkType: hard From 3cca0d3d149f7025822843142157a633dfe55220 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Mon, 19 Dec 2022 07:10:05 -0600 Subject: [PATCH 284/459] docs: info en el MIGRATION.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se pone información en MIGRATION.MD, faltan ejemplos de envio de imagenes! --- MIGRATION.md | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 MIGRATION.md diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 0000000..5b5086e --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,73 @@ +## MIGRANDO DE LA VERSIÓN 1 A LAS VERSIÓN 2 + +Pasar los flujos del bot de la versión 1 a la 2 es muy fácil, supongamos que en tu initial.json y response.json tienes un flujo como el siguiente: + +```js +//initial.json +[ + { + "keywords": [ + "hola", + "ola", + "alo" + ], + "key": "hola" + }, + { + "keywords": ["adios", "bye"], + "key": "adios" + } +] +``` +y + +```js +//response.json +{ + "hola":{ + "replyMessage":[ + "Gracias a ti! \n" + ], + "media":null, + "trigger":null + }, + "adios":{ + "replyMessage":[ + "Que te vaya bien!!" + ], + "media":null + } +} +``` +En la versión 2, no es necesario tener esos 2 archivos, los flujos se ponen directamente en app.js de la siguiente manera: + +```js +//app.js +/** + * Declarando flujos principales. + */ +const flowHola = addKeyword(['hola', 'ola', 'alo']) //Aqui van los "keywords" de initial.json + .addAnswer('Gracias a ti!') // Aquí va la respuesta del response.json, no es necesario especificar nuevamente los "keywords" + .addAnswer('Siempre un placer!!!') // Y se pueden agregar varias respuestas encadenadas ... TANTAS com sean necesarias. + +const flowAdios = addKeyword(['adios', 'bye']) //Aqui van los "keywords" de initial.json + .addAnswer('Que te vaya bien!!') // Aquí va la respuesta del response.json, no es necesario especificar nuevamente los "keywords" + .addAnswer('Hasta luego!', // Y se pueden agregar varias respuestas encadenadas ... TANTAS com sean necesarias. + null, null,[...addChild(flowHijo1)] // Y se pueden agregar flujos HIJOS (Sub Menus). Los flujos hijos se tienen que definir ANTES que los principales. + ) + + +##FALTAN EJEMPLOS DE ENVIOS DE IMAGENES! + + + const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowHola, flowAdios]) // Aqui se crean los flujos. + const adapterProvider = createProvider(BaileysProvider) + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + ``` \ No newline at end of file From c344ef367786520f5ed868b86691e5ccbf43fc97 Mon Sep 17 00:00:00 2001 From: jlferrete Date: Mon, 19 Dec 2022 14:17:36 +0100 Subject: [PATCH 285/459] docs(contributing): :memo: add contributor to comunity Add a new contributor to community --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 441cc16..9054e8d 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,15 @@ Video como hacer PR: https://youtu.be/Lxt8Acob6aU
    Yonathan Suarez - + + + + jlferrete +
    + José Luis Ferrete +
    + + From f200be76f41506c62d458287b1a01ea0c775d003 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 19 Dec 2022 13:18:46 +0000 Subject: [PATCH 286/459] ci(version): :zap: automatic - "${date}" updated versions every packages --- packages/bot/package.json | 2 +- packages/cli/package.json | 2 +- packages/create-bot-whatsapp/package.json | 2 +- packages/database/package.json | 2 +- packages/provider/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/bot/package.json b/packages/bot/package.json index 4079f55..b30e4b2 100644 --- a/packages/bot/package.json +++ b/packages/bot/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/bot", - "version": "0.0.24-alpha.0", + "version": "0.0.25-alpha.0", "description": "", "main": "./lib/bundle.bot.cjs", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 6e76ff6..dbefef2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/cli", - "version": "0.0.31-alpha.0", + "version": "0.0.32-alpha.0", "description": "", "main": "index.js", "devDependencies": { diff --git a/packages/create-bot-whatsapp/package.json b/packages/create-bot-whatsapp/package.json index 7cfa3ea..3e1f16a 100644 --- a/packages/create-bot-whatsapp/package.json +++ b/packages/create-bot-whatsapp/package.json @@ -1,6 +1,6 @@ { "name": "create-bot-whatsapp", - "version": "0.0.42-alpha.0", + "version": "0.0.43-alpha.0", "description": "", "main": "./lib/bundle.create-bot-whatsapp.cjs", "files": [ diff --git a/packages/database/package.json b/packages/database/package.json index cfe467d..f6a4660 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/database", - "version": "0.0.23-alpha.0", + "version": "0.0.24-alpha.0", "description": "Esto es el conector a mysql, pg, mongo", "main": "./lib/mock/index.cjs", "keywords": [], diff --git a/packages/provider/package.json b/packages/provider/package.json index e59f80d..afad440 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/provider", - "version": "0.0.29-alpha.0", + "version": "0.0.30-alpha.0", "description": "Esto es el conector a Twilio, Meta, etc...", "main": "./lib/mock/index.cjs", "keywords": [], From 4d34d3ab1daab4e72fb5244216c78cf836d1a164 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Mon, 19 Dec 2022 15:05:19 +0100 Subject: [PATCH 287/459] fix(adapter): :fire: clear log --- packages/provider/src/baileys/index.js | 30 +++++++------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 3e5c446..0c76ea8 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -7,6 +7,7 @@ const { Console } = require('console') const { default: makeWASocket, useMultiFileAuthState, + DisconnectReason, } = require('@adiwajshing/baileys') const { baileyGenerateImage, @@ -25,6 +26,7 @@ const logger = new Console({ */ class BaileysProvider extends ProviderClass { vendor + saveCredsGlobal = null constructor() { super() this.initBailey().then(() => this.initBusEvents()) @@ -35,25 +37,13 @@ class BaileysProvider extends ProviderClass { */ initBailey = async () => { const { state, saveCreds } = await useMultiFileAuthState('sessions') - + this.saveCredsGlobal = saveCreds try { this.vendor = makeWASocket({ printQRInTerminal: false, auth: state, logger: pino({ level: 'error' }), }) - - this.vendor.ev.on( - 'connection.update', - async ({ qr, connection, lastDisconnect }) => { - if (qr) baileyGenerateImage(qr) - if (connection === 'open') this.emit('ready', true) - if (lastDisconnect?.error) { - saveCreds() - this.initBailey() - } - } - ) } catch (e) { logger.log(e) this.emit('auth_failure', [ @@ -75,6 +65,11 @@ class BaileysProvider extends ProviderClass { { event: 'connection.update', func: async ({ qr, connection, lastDisconnect }) => { + const statusCode = lastDisconnect?.error?.output?.statusCode + + if (statusCode && statusCode !== DisconnectReason.loggedOut) + this.initBailey() + if (qr) { this.emit('require_action', { instructions: [ @@ -86,15 +81,6 @@ class BaileysProvider extends ProviderClass { await baileyGenerateImage(qr) } - if (lastDisconnect?.error) { - this.emit('require_action', { - instructions: [ - `Algo sucedio reinicia el bot o revisa tu whatsapp`, - `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, - ], - }) - } - if (connection === 'open') this.emit('ready', true) }, }, From 1ec15647dc462363d5b765f42debddbe6ef6266b Mon Sep 17 00:00:00 2001 From: vicente1992 Date: Mon, 19 Dec 2022 22:03:33 -0500 Subject: [PATCH 288/459] feat(provider): :sparkles: endpoint is added to validate the webhook token --- packages/provider/src/meta/index.js | 10 +++--- packages/provider/src/meta/server.js | 48 +++++++++++++++++++++++++--- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/packages/provider/src/meta/index.js b/packages/provider/src/meta/index.js index e32ec51..49f5809 100644 --- a/packages/provider/src/meta/index.js +++ b/packages/provider/src/meta/index.js @@ -10,16 +10,16 @@ const URL = `https://graph.facebook.com/v15.0` * * * Necesitas las siguientes tokens y valores - * { token, numberId, vendorNumber, verify_token } + * { jwtToken, numberId, vendorNumber, verifyToken } */ class MetaProvider extends ProviderClass { metHook - token + jwtToken numberId - constructor({ token, numberId, verifyToken }, _port = 3000) { + constructor({ jwtToken, numberId, verifyToken }, _port = 3000) { super() - this.token = token + this.jwtToken = jwtToken this.numberId = numberId this.metHook = new MetaWebHookServer(verifyToken, _port) this.metHook.start() @@ -60,7 +60,7 @@ class MetaProvider extends ProviderClass { body, { headers: { - Authorization: `Bearer ${this.token}`, + Authorization: `Bearer ${this.jwtToken}`, }, } ) diff --git a/packages/provider/src/meta/server.js b/packages/provider/src/meta/server.js index 91ae8bc..cb2ac9a 100644 --- a/packages/provider/src/meta/server.js +++ b/packages/provider/src/meta/server.js @@ -5,12 +5,12 @@ const { urlencoded } = require('body-parser') class MetaWebHookServer extends EventEmitter { metaServer metaPort - verifyToken - constructor(_verifyToken, _metaPort) { + token + constructor(_token, _metaPort) { super() this.metaServer = this.buildHTTPServer() this.metaPort = _metaPort - this.verifyToken = _verifyToken + this.token = _token } /** @@ -32,14 +32,54 @@ class MetaWebHookServer extends EventEmitter { res.end(json) } + /** + * Valida el token + * @alpha + * @param {string} mode + * @param {string} token + * @example tokenIsValid('subscribe', 'MYTOKEN') + */ + tokenIsValid(mode, token) { + return mode === 'subscribe' && this.token === token + } + + /** + * Verificación del token + * @param {*} req + * @param {*} res + */ + verifyToken = (req, res) => { + const { query } = req + const mode = query['hub.mode'] + const token = query['hub.verify_token'] + const challenge = query['hub.challenge'] + + if (!mode || !token) { + return res.sendStatus(403) + } + + if (this.tokenIsValid(mode, token)) { + console.log('Webhook verified--->😎😎😎😎') + res.status(200).send(challenge) + } + + if (!this.tokenIsValid(mode, token)) { + res.sendStatus(403) + } + } + /** * Contruir HTTP Server * @returns */ buildHTTPServer = () => { + polka() + .use(urlencoded({ extended: true })) + .get('/webhook', this.verifyToken) + return polka() .use(urlencoded({ extended: true })) - .post('/meta-hook', this.incomingMsg) + .post('/webhook', this.incomingMsg) } /** From 0b4e35308dace0ccdf618cb1d04987ed5200d58c Mon Sep 17 00:00:00 2001 From: Joseph VTX <1395609@senati.pe> Date: Tue, 20 Dec 2022 01:04:07 -0500 Subject: [PATCH 289/459] feat(provider): :zap: add new methods add new methods --- packages/provider/src/baileys/index.js | 92 ++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 0c76ea8..7ae4759 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -1,4 +1,5 @@ const { ProviderClass } = require('@bot-whatsapp/bot') +const { Sticker } = require('wa-sticker-formatter') const pino = require('pino') const mime = require('mime-types') const { existsSync, createWriteStream } = require('fs') @@ -214,6 +215,97 @@ class BaileysProvider extends ProviderClass { return this.sendMedia(number, options.media, message) return this.sendText(number, message) } + + /** + * @param {string} remoteJid + * @param {string} latitude + * @param {string} longitude + * @param {any} messages + * @example await sendLocation("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "xx.xxxx", "xx.xxxx", messages) + */ + + sendLocation = async (remoteJid, latitude, longitude, messages = null) => { + await this.vendor.sendMessage( + remoteJid, + { + location: { + degreesLatitude: latitude, + degreesLongitude: longitude, + }, + }, + { quoted: messages } + ) + + return { status: 'success' } + } + + /** + * @param {string} remoteJid + * @param {string} contactNumber + * @param {string} displayName + * @param {any} messages - optional + * @example await sendContact("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "+xxxxxxxxxxx", "Robin Smith", messages) + */ + + sendContact = async ( + remoteJid, + contactNumber, + displayName, + messages = null + ) => { + const cleanContactNumber = contactNumber.replaceAll(' ', '') + const waid = cleanContactNumber.replace('+', '') + + const vcard = + 'BEGIN:VCARD\n' + + 'VERSION:3.0\n' + + `FN:${displayName}\n` + + 'ORG:Ashoka Uni;\n' + + `TEL;type=CELL;type=VOICE;waid=${waid}:${cleanContactNumber}\n` + + 'END:VCARD' + + await this.client.sendMessage( + remoteJid, + { + contacts: { + displayName: 'XD', + contacts: [{ vcard }], + }, + }, + { quoted: messages } + ) + + return { status: 'success' } + } + + /** + * @param {string} remoteJid + * @param {string} WAPresence + * @example await sendPresenceUpdate("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "recording") + */ + sendPresenceUpdate = async (remoteJid, WAPresence) => { + await this.client.sendPresenceUpdate(WAPresence, remoteJid) + } + + /** + * @param {string} remoteJid + * @param {string} url + * @param {object} stickerOptions + * @param {any} messages - optional + * @example await sendSticker("xxxxxxxxxxx@c.us" || "xxxxxxxxxxxxxxxxxx@g.us", "https://dn/image.png" || "https://dn/image.gif" || "https://dn/image.mp4", {pack: 'User', author: 'Me'} messages) + */ + + sendSticker = async (remoteJid, url, stickerOptions, messages = null) => { + const sticker = new Sticker(url, { + ...stickerOptions, + quality: 50, + type: 'crop', + }) + + const buffer = await sticker.toMessage() + + await this.client.sendMessage(remoteJid, buffer, { quoted: messages }) + } } module.exports = BaileysProvider From 16e5d4b1761aab445857482f8d8077cca7512e23 Mon Sep 17 00:00:00 2001 From: Joseph VTX <1395609@senati.pe> Date: Tue, 20 Dec 2022 01:06:56 -0500 Subject: [PATCH 290/459] ci(provider): :package: add new package - wa-sticker-formatter add new package - wa-sticker-formatter --- starters/apps/base-bailey-memory/package.json | 3 ++- starters/apps/base-bailey-mongo/package.json | 3 ++- starters/apps/base-bailey-mysql/package.json | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/starters/apps/base-bailey-memory/package.json b/starters/apps/base-bailey-memory/package.json index 5e3ee48..9d9bb38 100644 --- a/starters/apps/base-bailey-memory/package.json +++ b/starters/apps/base-bailey-memory/package.json @@ -14,7 +14,8 @@ "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", "@adiwajshing/baileys": "^4.4.0", - "mime-types": "^2.1.35" + "mime-types": "^2.1.35", + "wa-sticker-formatter": "^4.3.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mongo/package.json b/starters/apps/base-bailey-mongo/package.json index 64660e7..d154742 100644 --- a/starters/apps/base-bailey-mongo/package.json +++ b/starters/apps/base-bailey-mongo/package.json @@ -15,7 +15,8 @@ "@bot-whatsapp/provider": "latest", "@adiwajshing/baileys": "^4.4.0", "mime-types": "^2.1.35", - "mongodb": "^4.12.1" + "mongodb": "^4.12.1", + "wa-sticker-formatter": "^4.3.2" }, "author": "", "license": "ISC" diff --git a/starters/apps/base-bailey-mysql/package.json b/starters/apps/base-bailey-mysql/package.json index cbf2eb5..337ea1a 100644 --- a/starters/apps/base-bailey-mysql/package.json +++ b/starters/apps/base-bailey-mysql/package.json @@ -15,7 +15,8 @@ "@bot-whatsapp/provider": "latest", "@adiwajshing/baileys": "^4.4.0", "mime-types": "^2.1.35", - "mysql2": "^2.3.3" + "mysql2": "^2.3.3", + "wa-sticker-formatter": "^4.3.2" }, "author": "", "license": "ISC" From 9b30e7dcfc30bc160b56427cc6cdc2dc982bde2a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 20 Dec 2022 17:12:53 +0100 Subject: [PATCH 291/459] fix(starters): :memo: update MIGRATION --- MIGRATION.md | 101 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 81 insertions(+), 20 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 5b5086e..8e4d1b4 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -1,8 +1,13 @@ -## MIGRANDO DE LA VERSIÓN 1 A LAS VERSIÓN 2 +# Migración -Pasar los flujos del bot de la versión 1 a la 2 es muy fácil, supongamos que en tu initial.json y response.json tienes un flujo como el siguiente: +#### Versión (legacy) -```js +En la ***versión (legacy)*** se implementas los flujos de esta manera, en dos archivos independientes. + +> __`initial.json`__ para establecer las palabras claves y el flujo a responder, por otro lado tambien se necesitaba implementar. +> __`response.json`__ donde se escriben los mensajes a responder. + +```json //initial.json [ { @@ -13,15 +18,21 @@ Pasar los flujos del bot de la versión 1 a la 2 es muy fácil, supongamos que e ], "key": "hola" }, + { + "keywords": ["productos", "info"], + "key": "productos" + }, { "keywords": ["adios", "bye"], "key": "adios" + }, + { + "keywords": ["imagen", "foto"], + "key": "catalogo" } ] ``` -y - -```js +```json //response.json { "hola":{ @@ -35,34 +46,77 @@ y "replyMessage":[ "Que te vaya bien!!" ], - "media":null - } + }, + "productos":{ + "replyMessage":[ + "Más productos aquí" + ], + "trigger":null, + "actions":{ + "title":"¿Que te interesa ver?", + "message":"Abajo unos botons", + "footer":"", + "buttons":[ + {"body":"Telefonos"}, + {"body":"Computadoras"}, + {"body":"Otros"} + ] + } + }, + "catalogo":{ + "replyMessage":[ + "Te envio una imagen" + ], + "media":"https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif", + "trigger":null, + }, + } + ``` -En la versión 2, no es necesario tener esos 2 archivos, los flujos se ponen directamente en app.js de la siguiente manera: + +#### Versión 2 (0.2.X) + +En esta versión es mucho más sencillo abajo encontraras un ejemplo del mismo flujo anteriormente mostrado. ```js //app.js +const { + createBot, + createProvider, + createFlow, + addKeyword, + addChild, +} = require('@bot-whatsapp/bot') + +const BaileysProvider = require('@bot-whatsapp/provider/baileys') +const MockAdapter = require('@bot-whatsapp/database/mock') /** * Declarando flujos principales. */ -const flowHola = addKeyword(['hola', 'ola', 'alo']) //Aqui van los "keywords" de initial.json - .addAnswer('Gracias a ti!') // Aquí va la respuesta del response.json, no es necesario especificar nuevamente los "keywords" - .addAnswer('Siempre un placer!!!') // Y se pueden agregar varias respuestas encadenadas ... TANTAS com sean necesarias. +const flowHola = addKeyword(['hola', 'ola', 'alo']) + .addAnswer('Bienvenido a tu tienda online!') -const flowAdios = addKeyword(['adios', 'bye']) //Aqui van los "keywords" de initial.json - .addAnswer('Que te vaya bien!!') // Aquí va la respuesta del response.json, no es necesario especificar nuevamente los "keywords" - .addAnswer('Hasta luego!', // Y se pueden agregar varias respuestas encadenadas ... TANTAS com sean necesarias. - null, null,[...addChild(flowHijo1)] // Y se pueden agregar flujos HIJOS (Sub Menus). Los flujos hijos se tienen que definir ANTES que los principales. - ) +const flowAdios = addKeyword(['adios', 'bye']) + .addAnswer('Que te vaya bien!!') + .addAnswer('Hasta luego!') +const flowProductos = addKeyword(['productos', 'info']) + .addAnswer('Te envio una imagen', { + buttons:[ + {body:"Telefonos"}, + {body:"Computadoras"}, + {body:"Otros"} + ] + }) -##FALTAN EJEMPLOS DE ENVIOS DE IMAGENES! +const flowCatalogo = addKeyword(['imagen', 'foto']) + .addAnswer('Te envio una imagen', {media:'https://media2.giphy.com/media/VQJu0IeULuAmCwf5SL/giphy.gif'}) const main = async () => { const adapterDB = new MockAdapter() - const adapterFlow = createFlow([flowHola, flowAdios]) // Aqui se crean los flujos. + const adapterFlow = createFlow([flowHola, flowAdios, flowProductos, flowCatalogo]) const adapterProvider = createProvider(BaileysProvider) createBot({ flow: adapterFlow, @@ -70,4 +124,11 @@ const flowAdios = addKeyword(['adios', 'bye']) //Aqui van los "keywords" de init database: adapterDB, }) } - ``` \ No newline at end of file +``` + +> Forma parte de este proyecto. + +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) From 3bdc7afe8062527ff08620650d2c1177dfea83f5 Mon Sep 17 00:00:00 2001 From: vicente1992 Date: Tue, 20 Dec 2022 22:21:41 -0500 Subject: [PATCH 292/459] fix(adapter): json db change is made --- packages/database/package.json | 3 +- packages/database/src/json/index.js | 49 ++++-- yarn.lock | 243 ++++++++++++++-------------- 3 files changed, 156 insertions(+), 139 deletions(-) diff --git a/packages/database/package.json b/packages/database/package.json index f6a4660..bf869cb 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -12,8 +12,7 @@ "dependencies": { "dotenv": "^16.0.3", "mongodb": "^4.11.0", - "mysql2": "^2.3.3", - "stormdb": "^0.6.0" + "mysql2": "^2.3.3" }, "exports": { "./mock": "./lib/mock/index.cjs", diff --git a/packages/database/src/json/index.js b/packages/database/src/json/index.js index 7aa8029..cf09681 100644 --- a/packages/database/src/json/index.js +++ b/packages/database/src/json/index.js @@ -1,27 +1,42 @@ -const StormDB = require('stormdb') const { join } = require('path') - -const engine = new StormDB.localFileEngine(join(process.cwd(), './db.stormdb')) +const { existsSync, writeFileSync, readFileSync } = require('fs') class JsonFileAdapter { db + pathFile listHistory = [] constructor() { + this.pathFile = join(process.cwd(), 'db.json') this.init().then() } - init() { - return new Promise((resolve) => { - this.db = new StormDB(engine) - this.db.default({ history: [] }) - resolve(this.db) - }) + databaseExists() { + return existsSync(this.pathFile) + } + + async init() { + const dbExists = await this.databaseExists() + + if (!dbExists) { + const data = { + history: [], + } + await this.saveData(data) + } + } + + readDatabase() { + const db = readFileSync(this.pathFile) + return JSON.parse(db) + } + + saveData(data) { + writeFileSync(this.pathFile, JSON.stringify(data)) } getPrevByNumber = async (from) => { - const response = await this.db.get('history') - const { history } = response.state + const { history } = await this.readDatabase() if (!history.length) { return null @@ -35,12 +50,14 @@ class JsonFileAdapter { } save = async (ctx) => { - await this.db - .get('history') - .push({ ...ctx }) - .save() - console.log('Guardado en DB...', ctx) + this.db = await this.readDatabase() + + this.db.history.push(ctx) + + await this.saveData(this.db) + this.listHistory.push(ctx) + console.log('Guardado en DB...', ctx) } } diff --git a/yarn.lock b/yarn.lock index a39adac..9398144 100644 --- a/yarn.lock +++ b/yarn.lock @@ -82,15 +82,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.231.0" +"@aws-sdk/client-cognito-identity@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.235.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/client-sts": 3.231.0 - "@aws-sdk/config-resolver": 3.231.0 - "@aws-sdk/credential-provider-node": 3.231.0 + "@aws-sdk/client-sts": 3.235.0 + "@aws-sdk/config-resolver": 3.234.0 + "@aws-sdk/credential-provider-node": 3.235.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -99,7 +99,7 @@ __metadata: "@aws-sdk/middleware-host-header": 3.226.0 "@aws-sdk/middleware-logger": 3.226.0 "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.229.0 + "@aws-sdk/middleware-retry": 3.235.0 "@aws-sdk/middleware-serde": 3.226.0 "@aws-sdk/middleware-signing": 3.226.0 "@aws-sdk/middleware-stack": 3.226.0 @@ -107,14 +107,14 @@ __metadata: "@aws-sdk/node-config-provider": 3.226.0 "@aws-sdk/node-http-handler": 3.226.0 "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.226.0 + "@aws-sdk/smithy-client": 3.234.0 "@aws-sdk/types": 3.226.0 "@aws-sdk/url-parser": 3.226.0 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.231.0 + "@aws-sdk/util-defaults-mode-browser": 3.234.0 + "@aws-sdk/util-defaults-mode-node": 3.234.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -122,17 +122,17 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 309c433d0005c072db5298d75df4f37826350ffc2bdab940c1147f719f5285207e9761ee8f87884b23ea2cf5f8bf7157fcf992008f0a838491954cbe6925a47a + checksum: 4637132cc1a95823867c5ee80b35c7b84ddeed83c0778c2d7c197b26f24899641c825926c886c293f36d62e6b72be03ee091ac11cc9dbd875ad85936548ee178 languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.231.0" +"@aws-sdk/client-sso-oidc@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.235.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.231.0 + "@aws-sdk/config-resolver": 3.234.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -141,21 +141,21 @@ __metadata: "@aws-sdk/middleware-host-header": 3.226.0 "@aws-sdk/middleware-logger": 3.226.0 "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.229.0 + "@aws-sdk/middleware-retry": 3.235.0 "@aws-sdk/middleware-serde": 3.226.0 "@aws-sdk/middleware-stack": 3.226.0 "@aws-sdk/middleware-user-agent": 3.226.0 "@aws-sdk/node-config-provider": 3.226.0 "@aws-sdk/node-http-handler": 3.226.0 "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.226.0 + "@aws-sdk/smithy-client": 3.234.0 "@aws-sdk/types": 3.226.0 "@aws-sdk/url-parser": 3.226.0 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.231.0 + "@aws-sdk/util-defaults-mode-browser": 3.234.0 + "@aws-sdk/util-defaults-mode-node": 3.234.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -163,17 +163,17 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 4ec5e5f0f25969df5d5341cd1f291a763ed2edaeb317228a7873f18f16471f2cbd83bd575f766a4f0f22c3ebfcf69ecd75891fd0518a205c69eb20ded8734c98 + checksum: c62558375fb6d3ce44136019de99e5134805894a80cec191e145003c0e065eb52ba0a288a62884371d6a69370f92df522b120e1c5428520c09ba0f4cdc5b91b7 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/client-sso@npm:3.231.0" +"@aws-sdk/client-sso@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/client-sso@npm:3.235.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.231.0 + "@aws-sdk/config-resolver": 3.234.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -182,21 +182,21 @@ __metadata: "@aws-sdk/middleware-host-header": 3.226.0 "@aws-sdk/middleware-logger": 3.226.0 "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.229.0 + "@aws-sdk/middleware-retry": 3.235.0 "@aws-sdk/middleware-serde": 3.226.0 "@aws-sdk/middleware-stack": 3.226.0 "@aws-sdk/middleware-user-agent": 3.226.0 "@aws-sdk/node-config-provider": 3.226.0 "@aws-sdk/node-http-handler": 3.226.0 "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.226.0 + "@aws-sdk/smithy-client": 3.234.0 "@aws-sdk/types": 3.226.0 "@aws-sdk/url-parser": 3.226.0 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.231.0 + "@aws-sdk/util-defaults-mode-browser": 3.234.0 + "@aws-sdk/util-defaults-mode-node": 3.234.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -204,18 +204,18 @@ __metadata: "@aws-sdk/util-utf8-browser": 3.188.0 "@aws-sdk/util-utf8-node": 3.208.0 tslib: ^2.3.1 - checksum: 3551984b8c14f611daa93c7082f2a361caa0c8e985fbfc6d66674ec7f3624364aa7d3c8011aa334729022e3866e5323c6ac18a4ba3e840023128000994d99165 + checksum: 9852704cc383cbc8e44013eed6de514f60dc4f70ab89ceea79971b4b286db6b923648e8e4169d248f0888efed19c7c5fcc5748177577635d07080fd4980431d7 languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/client-sts@npm:3.231.0" +"@aws-sdk/client-sts@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/client-sts@npm:3.235.0" dependencies: "@aws-crypto/sha256-browser": 2.0.0 "@aws-crypto/sha256-js": 2.0.0 - "@aws-sdk/config-resolver": 3.231.0 - "@aws-sdk/credential-provider-node": 3.231.0 + "@aws-sdk/config-resolver": 3.234.0 + "@aws-sdk/credential-provider-node": 3.235.0 "@aws-sdk/fetch-http-handler": 3.226.0 "@aws-sdk/hash-node": 3.226.0 "@aws-sdk/invalid-dependency": 3.226.0 @@ -224,7 +224,7 @@ __metadata: "@aws-sdk/middleware-host-header": 3.226.0 "@aws-sdk/middleware-logger": 3.226.0 "@aws-sdk/middleware-recursion-detection": 3.226.0 - "@aws-sdk/middleware-retry": 3.229.0 + "@aws-sdk/middleware-retry": 3.235.0 "@aws-sdk/middleware-sdk-sts": 3.226.0 "@aws-sdk/middleware-serde": 3.226.0 "@aws-sdk/middleware-signing": 3.226.0 @@ -233,14 +233,14 @@ __metadata: "@aws-sdk/node-config-provider": 3.226.0 "@aws-sdk/node-http-handler": 3.226.0 "@aws-sdk/protocol-http": 3.226.0 - "@aws-sdk/smithy-client": 3.226.0 + "@aws-sdk/smithy-client": 3.234.0 "@aws-sdk/types": 3.226.0 "@aws-sdk/url-parser": 3.226.0 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.226.0 - "@aws-sdk/util-defaults-mode-node": 3.231.0 + "@aws-sdk/util-defaults-mode-browser": 3.234.0 + "@aws-sdk/util-defaults-mode-node": 3.234.0 "@aws-sdk/util-endpoints": 3.226.0 "@aws-sdk/util-retry": 3.229.0 "@aws-sdk/util-user-agent-browser": 3.226.0 @@ -249,32 +249,32 @@ __metadata: "@aws-sdk/util-utf8-node": 3.208.0 fast-xml-parser: 4.0.11 tslib: ^2.3.1 - checksum: 377eabf0ff0523b7847fe1677084293c322d5525443a859f522b83363eb647a87721245f7b48f7232e2f2f3b49dfdaefdf274e9578915c24617c5d7540624aca + checksum: 9a2ec3240bd01fd1ed95b2c6766ea8d141e4b85a6535fcbb5c57ac725ef58c2d1c1403a61c336adbb1eceb5dd306ac1d35d7b8f25ed1ebc544a14ad14fb038a7 languageName: node linkType: hard -"@aws-sdk/config-resolver@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/config-resolver@npm:3.231.0" +"@aws-sdk/config-resolver@npm:3.234.0": + version: 3.234.0 + resolution: "@aws-sdk/config-resolver@npm:3.234.0" dependencies: "@aws-sdk/signature-v4": 3.226.0 "@aws-sdk/types": 3.226.0 "@aws-sdk/util-config-provider": 3.208.0 "@aws-sdk/util-middleware": 3.226.0 tslib: ^2.3.1 - checksum: 67ec8d1f547cdde45f9c0daec21864225cfc04fba732e5e157b59d23f987d588fdc1738e1ce43012f885bdb6e65da8105511f5816e5844a5b839192b5feecc64 + checksum: a72bdb1748d7f04c95436ab1e8650b51c1bfd2745114e52f7d05339c61bb6a859306be0c6cc0034ecf4f3b29a2d68b48fe362762a58c90ec55a3444b93b5700d languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.231.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.235.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.231.0 + "@aws-sdk/client-cognito-identity": 3.235.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: f0c2059379f703e72538b00e52d2f5ce01c69a8adf3af370af2e72cc971ffe44963e6611917032326c0207b11fe34133780540e4ab0412e36e6c34b589f3dec3 + checksum: 85d348faa5161282d226040315aaff1a754d3bbd23ccb9131f021a5f6a473be76b80e2b3f5132d3b0a119732822d6b76829626d64e6c71c4d61d1fcbeb6e0080 languageName: node linkType: hard @@ -302,37 +302,38 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.231.0" +"@aws-sdk/credential-provider-ini@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.235.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.231.0 + "@aws-sdk/credential-provider-process": 3.226.0 + "@aws-sdk/credential-provider-sso": 3.235.0 "@aws-sdk/credential-provider-web-identity": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: f6b11d4876602e65464bc25804781b78a6e0c66b39c293178d7e97f2f11c151bd6e23e1e31158c0442dfbc3076f417aeecf44c315d4e509b48e7cfc3be2e7472 + checksum: c910746d90ec363691dc99d53594beb49ea8562ef69c5a2e9a1702febc7d870cfe5b0f441afdae2bed643a4e8901b82f965660cdd70077bb006978fdafddeb05 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.231.0" +"@aws-sdk/credential-provider-node@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.235.0" dependencies: "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.231.0 + "@aws-sdk/credential-provider-ini": 3.235.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.231.0 + "@aws-sdk/credential-provider-sso": 3.235.0 "@aws-sdk/credential-provider-web-identity": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: e28266dce53130c6e28eb7e82028e29cb2db2f06e1f40c98ae7875bcf2e17553976899f02b93576070c7fd77c131046ec752f543f9aa7e32078e1f3a44c3acf5 + checksum: bfea379a5e66c311c57a1f7390b2e508d42f8cf3e1a48a5b9585b33c76339c7e8806dba413c7d5bf6d669ffd05a4c55ef705f92bf4687ba8f5e359c5d3c7495e languageName: node linkType: hard @@ -348,17 +349,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.231.0" +"@aws-sdk/credential-provider-sso@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.235.0" dependencies: - "@aws-sdk/client-sso": 3.231.0 + "@aws-sdk/client-sso": 3.235.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 - "@aws-sdk/token-providers": 3.231.0 + "@aws-sdk/token-providers": 3.235.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 0aa69ec7ea5b0115c53972c6ae0419687e0bebc7500fbefa77c1108ecb81e735227982b586180b2fe111427cba17fad75f6db61f69a8b5cf5ad079f7ee09107c + checksum: 358fdda689c1f9be768516ca39de17e7fa7832d3d89d8893dd58f5d3377908ee2580155c1ba984c5ed21a410cda681bd22c7c74876af06b3496641a98b62353f languageName: node linkType: hard @@ -374,25 +375,25 @@ __metadata: linkType: hard "@aws-sdk/credential-providers@npm:^3.186.0": - version: 3.231.0 - resolution: "@aws-sdk/credential-providers@npm:3.231.0" + version: 3.235.0 + resolution: "@aws-sdk/credential-providers@npm:3.235.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.231.0 - "@aws-sdk/client-sso": 3.231.0 - "@aws-sdk/client-sts": 3.231.0 - "@aws-sdk/credential-provider-cognito-identity": 3.231.0 + "@aws-sdk/client-cognito-identity": 3.235.0 + "@aws-sdk/client-sso": 3.235.0 + "@aws-sdk/client-sts": 3.235.0 + "@aws-sdk/credential-provider-cognito-identity": 3.235.0 "@aws-sdk/credential-provider-env": 3.226.0 "@aws-sdk/credential-provider-imds": 3.226.0 - "@aws-sdk/credential-provider-ini": 3.231.0 - "@aws-sdk/credential-provider-node": 3.231.0 + "@aws-sdk/credential-provider-ini": 3.235.0 + "@aws-sdk/credential-provider-node": 3.235.0 "@aws-sdk/credential-provider-process": 3.226.0 - "@aws-sdk/credential-provider-sso": 3.231.0 + "@aws-sdk/credential-provider-sso": 3.235.0 "@aws-sdk/credential-provider-web-identity": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: edbf6a2821c5bf38d40a83f8d7c8ab967fff85d2c10af79f6f5df40cd52ef185f988c6499552a0294ca98cb7db34cb77e046a78e779e5ff5d362d104c29acc83 + checksum: 3c8436f78a4ddcf295b06d77ed3cb912a8ae56ee047526663f8316dde6b646095c8288480214c9e3f68cb98772511cb7fcec6f8c4100fba899c495a9429c3ba2 languageName: node linkType: hard @@ -498,17 +499,18 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-retry@npm:3.229.0": - version: 3.229.0 - resolution: "@aws-sdk/middleware-retry@npm:3.229.0" +"@aws-sdk/middleware-retry@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/middleware-retry@npm:3.235.0" dependencies: "@aws-sdk/protocol-http": 3.226.0 "@aws-sdk/service-error-classification": 3.229.0 "@aws-sdk/types": 3.226.0 "@aws-sdk/util-middleware": 3.226.0 + "@aws-sdk/util-retry": 3.229.0 tslib: ^2.3.1 uuid: ^8.3.2 - checksum: a146879b0d4d940aed398c4bfd288b28e678bff7cbe04983123caf3bcb73fecc801ec19d13ca82ac1b2977515dc71ebe28efc400c07839004213017f93369b04 + checksum: 397226fd10d8b0587a35ccab92160223f10740beb01ccac75dda0e30336b83c091c9aa51b9132a56ff6cccd6353b9e3c6ecf21ae18f20f8127e7e9e209e59a2a languageName: node linkType: hard @@ -667,27 +669,27 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/smithy-client@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/smithy-client@npm:3.226.0" +"@aws-sdk/smithy-client@npm:3.234.0": + version: 3.234.0 + resolution: "@aws-sdk/smithy-client@npm:3.234.0" dependencies: "@aws-sdk/middleware-stack": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 7c77d26367b94286fd0eceb5036f3a931314ab24c01ae64f645ea1390b3dc94d443a751be2be504d36aeeef86c5412facdc7df9624a792d9e97e5d53531f850c + checksum: 7b8299f81fde410b8f597662d4174a29740cb2791a2377e5009a73c0e7531fb440712ab25c837a0351dbceac4763cc8fadc6d4362727cf3ae749b25515da4ea1 languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/token-providers@npm:3.231.0" +"@aws-sdk/token-providers@npm:3.235.0": + version: 3.235.0 + resolution: "@aws-sdk/token-providers@npm:3.235.0" dependencies: - "@aws-sdk/client-sso-oidc": 3.231.0 + "@aws-sdk/client-sso-oidc": 3.235.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/shared-ini-file-loader": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 3fe2b2776232f2aad499d74ec540431db013520a1c4e3cee6ed4ab4d5cb2a402b1b50dd60f64d1c95e9ebb2bcc44c2244462d62453b9f6226b73082930dcc119 + checksum: 5b9cd8cfd697f04a7c628329af1cc5003ec25fe08626148c55389311b53ecbaa47b83f2c6b832fa847f9db2ca5a3f63bcb8a1059b1b3b3590010acf3d4610896 languageName: node linkType: hard @@ -758,29 +760,29 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-defaults-mode-browser@npm:3.226.0": - version: 3.226.0 - resolution: "@aws-sdk/util-defaults-mode-browser@npm:3.226.0" +"@aws-sdk/util-defaults-mode-browser@npm:3.234.0": + version: 3.234.0 + resolution: "@aws-sdk/util-defaults-mode-browser@npm:3.234.0" dependencies: "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/types": 3.226.0 bowser: ^2.11.0 tslib: ^2.3.1 - checksum: 80a1383ef46c9289b7ef88ed1223e07f06bd3989517157199e325492d3da465d42bd9a975432b6d7c0e7e11f21aea02e5d977ddcc28c9f8b9f13e172fce0e657 + checksum: 79a381a632f867477dc7f948243c8ba82932d3f10325c76a5f2cf96412560648d149ba43ee31794bc45d81158a8c361d890b291880fc0c05f9bafc99cded5ef4 languageName: node linkType: hard -"@aws-sdk/util-defaults-mode-node@npm:3.231.0": - version: 3.231.0 - resolution: "@aws-sdk/util-defaults-mode-node@npm:3.231.0" +"@aws-sdk/util-defaults-mode-node@npm:3.234.0": + version: 3.234.0 + resolution: "@aws-sdk/util-defaults-mode-node@npm:3.234.0" dependencies: - "@aws-sdk/config-resolver": 3.231.0 + "@aws-sdk/config-resolver": 3.234.0 "@aws-sdk/credential-provider-imds": 3.226.0 "@aws-sdk/node-config-provider": 3.226.0 "@aws-sdk/property-provider": 3.226.0 "@aws-sdk/types": 3.226.0 tslib: ^2.3.1 - checksum: 6dca6704798145569f25002605c4918890ebd2b7bf56d20909192993eea5bcf8fdceff7f51484c9ab7e009a77c3d371e0935666d204c819e703128e857859e73 + checksum: b70becd9e561c1622c75a452ed8c7a8b14b84eba35988159f29476db8c2b47ec72f0b7c19d1a252c725756af1fff1df4201e5e92b6136d1df9170e806dca5219 languageName: node linkType: hard @@ -990,7 +992,6 @@ __metadata: dotenv: ^16.0.3 mongodb: ^4.11.0 mysql2: ^2.3.3 - stormdb: ^0.6.0 languageName: unknown linkType: soft @@ -1958,10 +1959,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:latest": - version: 18.11.17 - resolution: "@types/node@npm:18.11.17" - checksum: 1933afd068d5c75c068c6c4df6d10edb3b0b2bb6503d544e2f0496ac007c90596e6a5e284a8ef032451bc16f871b7e46719d7d2bea60e9b25d13a77d52161cac +"@types/node@latest, @types/node@npm:*": + version: 18.11.10 + resolution: "@types/node@npm:18.11.10" + checksum: 0f60cb090b2ee91fcd3dc4311bc1ed7889b92f14644c0069f100776f86474c12eebbcc6c75bc0d7d96b975a103b4d5d6b3c22b4e88bea6e7f4e2b1bb0daf5ea8 languageName: node linkType: hard @@ -2424,11 +2425,11 @@ __metadata: linkType: hard "astring@npm:^1.8.0": - version: 1.8.3 - resolution: "astring@npm:1.8.3" + version: 1.8.4 + resolution: "astring@npm:1.8.4" bin: astring: bin/astring - checksum: 72fc85de7420ca6edeee15157fd65c5253a8cb1ced979ba66ecc439fa569f1c1cc242e4c0a9fc5a6380bf73fb5ec894dc65cf1dc0f3d1cab8c707b31df7daa1c + checksum: bc0b98087350c4a0c8a510d491d648cf8b299ec904629d5e0f5ae8d2ccc515cd27475327bb9729c7e92f4a4873adcd05cef15379d0f6f7293f1320319f0d24f0 languageName: node linkType: hard @@ -5244,9 +5245,9 @@ __metadata: linkType: hard "ignore@npm:^5.1.1, ignore@npm:^5.1.4, ignore@npm:^5.2.0": - version: 5.2.2 - resolution: "ignore@npm:5.2.2" - checksum: 2086f12e8dca6978001b3861562272888fcf231f464696938049e0aa576d0562a8f31926630a973e302944c20c64639c14cfdd725bacd208dcda973021377420 + version: 5.2.4 + resolution: "ignore@npm:5.2.4" + checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef languageName: node linkType: hard @@ -6709,11 +6710,11 @@ __metadata: linkType: hard "minimatch@npm:^5.0.1": - version: 5.1.1 - resolution: "minimatch@npm:5.1.1" + version: 5.1.2 + resolution: "minimatch@npm:5.1.2" dependencies: brace-expansion: ^2.0.1 - checksum: 215edd0978320a3354188f84a537d45841f2449af4df4379f79b9b777e71aa4f5722cc9d1717eabd2a70d38ef76ab7b708d24d83ea6a6c909dfd8833de98b437 + checksum: 32ffda25b9fb8270a1c1beafdb7489dc0e411af553495136509a945691f63c9b6b000eeeaaf8bffe3efa609c1d6d3bc0f5a106f6c3443b5c05da649100ded964 languageName: node linkType: hard @@ -6841,8 +6842,8 @@ __metadata: linkType: hard "mongodb@npm:^4.11.0": - version: 4.12.1 - resolution: "mongodb@npm:4.12.1" + version: 4.13.0 + resolution: "mongodb@npm:4.13.0" dependencies: "@aws-sdk/credential-providers": ^3.186.0 bson: ^4.7.0 @@ -6854,7 +6855,7 @@ __metadata: optional: true saslprep: optional: true - checksum: 84590484b2c93bce849ec1e334b064e983444ed73942061c91e09556348c80db9d4a40544b927cd795bdfbfc51d1b713a7df5ced4ecf13cd00fab5e3c3e32ada + checksum: 4c30eed40f639ac64069623cf7a4954e98eab81b91d61df90e7813dd2a745259cdc698f3b60bd7f37c123242b7eb0aaae6ee4e29ff2e48f5d13f187931d51f36 languageName: node linkType: hard @@ -7000,8 +7001,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 9.3.0 - resolution: "node-gyp@npm:9.3.0" + version: 9.3.1 + resolution: "node-gyp@npm:9.3.1" dependencies: env-paths: ^2.2.0 glob: ^7.1.4 @@ -7015,7 +7016,7 @@ __metadata: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 + checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 languageName: node linkType: hard @@ -9461,9 +9462,9 @@ __metadata: languageName: node linkType: hard -"wrangler@npm:latest": - version: 2.6.2 - resolution: "wrangler@npm:2.6.2" +wrangler@latest: + version: 2.5.0 + resolution: "wrangler@npm:2.5.0" dependencies: "@cloudflare/kv-asset-handler": ^0.2.0 "@esbuild-plugins/node-globals-polyfill": ^0.1.1 @@ -9487,7 +9488,7 @@ __metadata: bin: wrangler: bin/wrangler.js wrangler2: bin/wrangler.js - checksum: 2df66e168a2dfc4c035f23b2bd5de0fd33c1c006689ed3ea682b01fc7c5ccc98248ce393b07a35ee27280b0b3151e6299cd16b9b187e0744e4fa0e63e543be8f + checksum: 34f585a9b76b0a650c45dfb62b83616834ae415e1fb097b8bc66691bba2eb658c335f8ce6748ca19b2a13f2b33e44935dd335ad22ba53b51ee9ed322e14e011c languageName: node linkType: hard From 6aa78233ffb26235ff60c7e9a3f2145c23d10fce Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 21 Dec 2022 10:47:01 +0100 Subject: [PATCH 293/459] docs(funding): updated --- .github/FUNDING.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 8150a1a..fd50ef8 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,9 +1,4 @@ # These are supported funding model platforms - -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: leifermendez open_collective: bot-whatsapp -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +patreon: leifermendez custom: https://www.buymeacoffee.com/leifermendez From d1e2fbc750bb7a162ef872ec386a3c0deb8118f6 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 21 Dec 2022 13:14:31 +0100 Subject: [PATCH 294/459] docs(starters): :memo: updated --- CONTRIBUTING.md | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0b0d8a7..39adff0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,25 @@ # CONTRIBUTING +### 📄 Bienvenido/a +Si deseas colaborar con el proyecto existen varias maneras, la primera de ellas es aportando conocimiento y mejorando el repositorio (actualizando documentación, mejorando código, revisando __[issues](https://github.com/codigoencasa/bot-whatsapp/issues)__, etc). + + También es bien recibido los aportes económicos que se utilizaran para diferentes fines __[ver más](https://opencollective.com/bot-whatsapp)__ + +El lenguaje principal que se utilizó para desarrollar este proyecto fue __JavaScript__ con el fin de qué personas que están iniciando en el mundo de la programación puedan entender fácilmente. + + +### 🤔 Preguntas frecuentes +- ¿Como puedo hacer aportaciones de código en el proyecto?: [Ver Video](https://youtu.be/Lxt8Acob6aU) +- ¿Como ejecutar el entorno de pruebas?: [Ver Video](https://youtu.be/Mf9V-dloBfk) +- ¿Como crear un nuevo proveedor?: [Ver Video](https://youtu.be/cahK9zH3SI8) +- ¿Que son los GithubActions?: [Ver Video](https://youtu.be/nYBEBFKLiqw) +- ¿Canales de comunicación?: [Discord](https://link.codigoencasa.com/DISCORD) + +----- + ![](https://i.giphy.com/media/ntMt6TvalpstTIx7Ak/giphy.webp) + __Requerimientos:__ - Node v16 o superior __[descargar node](https://nodejs.org/es/download/)__ - __[Yarn](https://classic.yarnpkg.com/lang/en/docs/install/#windows-stable)__ como gestor de paquetes. En el link conseguirás las intrucciones para instalar yarn. @@ -74,14 +92,9 @@ En la consola encontraras los pasos a seguir --> ![](https://i.imgur.com/dC6lEwy.png) -### 🤔 Preguntas frecuentes -- ¿Como puedo hacer aportaciones de código en el proyecto?: [Ver Video](https://youtu.be/Lxt8Acob6aU) -- ¿Como ejecutar el entorno de pruebas?: [Ver Video](https://youtu.be/Mf9V-dloBfk) -- ¿Como crear un nuevo proveedor?: [Ver Video](https://youtu.be/cahK9zH3SI8) -- ¿Que son los GithubActions?: [Ver Video](https://youtu.be/nYBEBFKLiqw) - -> __NOTA:__ Documento en constante actualización.... +> __NOTA:__ [Eres libre de aportar informacion a este documento o arreglar ortografia 🤣]( +https://github.com/codigoencasa/bot-whatsapp/edit/dev/CONTRIBUTING.md) ------ - [Discord](https://link.codigoencasa.com/DISCORD) From 98858729919b2544dace07c49badce7888ddfd82 Mon Sep 17 00:00:00 2001 From: Juan Daniel Date: Wed, 21 Dec 2022 23:08:23 +0100 Subject: [PATCH 295/459] feat(contexts): :zap: add new dialogflowcx --- packages/contexts/package.json | 3 +- packages/contexts/rollup-contexts.config.js | 9 ++ .../src/dialogflow-cx/dialogflow-cx.class.js | 121 ++++++++++++++++++ packages/contexts/src/dialogflow-cx/index.js | 14 ++ 4 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js create mode 100644 packages/contexts/src/dialogflow-cx/index.js diff --git a/packages/contexts/package.json b/packages/contexts/package.json index 9d27195..29c2dcd 100644 --- a/packages/contexts/package.json +++ b/packages/contexts/package.json @@ -8,7 +8,8 @@ ], "exports": { "./mock": "./lib/mock/index.cjs", - "./dialogflow": "./lib/dialogflow/index.cjs" + "./dialogflow": "./lib/dialogflow/index.cjs", + "./dialogflowcx": "./lib/dialogflow-cx/index.cjs" }, "dependencies": { "@bot-whatsapp/bot": "*" diff --git a/packages/contexts/rollup-contexts.config.js b/packages/contexts/rollup-contexts.config.js index 59a7624..07c3d67 100644 --- a/packages/contexts/rollup-contexts.config.js +++ b/packages/contexts/rollup-contexts.config.js @@ -21,4 +21,13 @@ module.exports = [ }, plugins: [commonjs()], }, + { + input: join(__dirname, 'src', 'dialogflow-cx', 'index.js'), + output: { + banner: banner['banner.output'].join(''), + file: join(__dirname, 'lib', 'dialogflow-cx', 'index.cjs'), + format: 'cjs', + }, + plugins: [commonjs()], + }, ] diff --git a/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js b/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js new file mode 100644 index 0000000..946dbf4 --- /dev/null +++ b/packages/contexts/src/dialogflow-cx/dialogflow-cx.class.js @@ -0,0 +1,121 @@ +const { CoreClass } = require('@bot-whatsapp/bot') +const { SessionsClient } = require('@google-cloud/dialogflow-cx').v3beta1 +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') + +/** + * Necesita extender de core.class + * handleMsg(messageInComming) // const { body, from } = messageInComming + */ + +const GOOGLE_ACCOUNT_PATH = join(process.cwd(), 'google-key.json') + +class DialogFlowCXContext extends CoreClass { + // Opciones del usuario + optionsDX = { + language: 'es', + location: '', + agentId: '', + } + projectId = null + configuration = null + sessionClient = null + + constructor(_database, _provider, _optionsDX = {}) { + super(null, _database, _provider) + this.optionsDX = { ...this.optionsDX, ..._optionsDX } + this.init() + } + + /** + * Verificar conexión con servicio de DialogFlow + */ + init = () => { + if (!existsSync(GOOGLE_ACCOUNT_PATH)) { + console.log(`[ERROR]: No se encontro ${GOOGLE_ACCOUNT_PATH}`) + /** + * Emitir evento de error para que se mueste por consola dicinedo que no tiene el json + * */ + } + + if (!this.optionsDX.location.length) + throw new Error('LOCATION_NO_ENCONTRADO') + if (!this.optionsDX.agentId.length) + throw new Error('AGENTID_NO_ENCONTRADO') + + const rawJson = readFileSync(GOOGLE_ACCOUNT_PATH, 'utf-8') + const { project_id, private_key, client_email } = JSON.parse(rawJson) + + this.projectId = project_id + + this.sessionClient = new SessionsClient({ + credentials: { private_key, client_email }, + apiEndpoint: `${this.optionsDX.location}-dialogflow.googleapis.com`, + }) + } + + /** + * GLOSSARY.md + * @param {*} messageCtxInComming + * @returns + */ + handleMsg = async (messageCtxInComming) => { + const languageCode = this.optionsDX.language + const { from, body } = messageCtxInComming + + let customPayload = {} + + /** + * 📄 Creamos session de contexto basado en el numero de la persona + * para evitar este problema. + * https://github.com/codigoencasa/bot-whatsapp/pull/140 + */ + + const session = this.sessionClient.projectLocationAgentSessionPath( + this.projectId, + this.optionsDX.location, + this.optionsDX.agentId, + from + ) + + const reqDialog = { + session, + queryInput: { + text: { + text: body, + }, + languageCode, + }, + } + + const [single] = (await this.sessionClient.detectIntent(reqDialog)) || [ + null, + ] + + const { queryResult } = single + + const msgPayload = queryResult?.fulfillmentMessages?.find( + (a) => a.message === 'payload' + ) + + if (msgPayload && msgPayload?.payload) { + const { fields } = msgPayload.payload + const mapButtons = fields?.buttons?.listValue?.values.map((m) => { + return m?.structValue?.fields?.body?.stringValue + }) + customPayload = { + media: fields?.media?.stringValue, + buttons: mapButtons, + } + } + + const ctxFromDX = { + ...customPayload, + answer: queryResult?.fulfillmentText, + } + + this.sendFlow([ctxFromDX], from) + } +} + +module.exports = DialogFlowCXContext diff --git a/packages/contexts/src/dialogflow-cx/index.js b/packages/contexts/src/dialogflow-cx/index.js new file mode 100644 index 0000000..2a561c4 --- /dev/null +++ b/packages/contexts/src/dialogflow-cx/index.js @@ -0,0 +1,14 @@ +const DialogCXFlowClass = require('./dialogflow-cx.class') + +/** + * Crear instancia de clase Bot + * @param {*} args + * @returns + */ +const createBotDialog = async ({ database, provider }, _options) => + new DialogCXFlowClass(database, provider, _options) + +module.exports = { + createBotDialog, + DialogCXFlowClass, +} From 4d8cf623ff86b3d08c8d52293d4e289dfda68e1c Mon Sep 17 00:00:00 2001 From: Juan Daniel Date: Wed, 21 Dec 2022 23:09:33 +0100 Subject: [PATCH 296/459] feat(contexts): :zap: add new dialogflowcx --- .vscode/settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ffa60fd..65e097a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,6 +8,7 @@ "adapter", "ci", "starters", - "conflict" + "conflict", + "contexts" ] } From 331e5b0f8efe3eb5594ae69f14223b2513de46ec Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Thu, 22 Dec 2022 09:59:11 +0100 Subject: [PATCH 297/459] docs: :memo: new docs --- packages/docs | 1 + packages/docs/.eslintignore | 33 - packages/docs/.eslintrc.cjs | 40 - packages/docs/.gitignore | 41 - packages/docs/.node-version | 1 - packages/docs/.prettierignore | 6 - packages/docs/README.md | 11 - .../adaptors/cloudflare-pages/vite.config.ts | 19 - packages/docs/functions/[[path]].ts | 5 - packages/docs/package.json | 44 - packages/docs/postcss.config.js | 6 - packages/docs/public/_headers | 4 - packages/docs/public/_redirects | 1 - packages/docs/public/favicon.svg | 1 - packages/docs/public/manifest.json | 9 - packages/docs/public/robots.txt | 0 .../components/breadcrumbs/breadcrumbs.css | 25 - .../components/breadcrumbs/breadcrumbs.tsx | 77 - .../docs/src/components/footer/footer.css | 22 - .../docs/src/components/footer/footer.tsx | 40 - .../docs/src/components/header/header.css | 34 - .../docs/src/components/header/header.tsx | 32 - packages/docs/src/components/icons/qwik.tsx | 20 - packages/docs/src/components/menu/menu.css | 13 - packages/docs/src/components/menu/menu.tsx | 37 - .../components/on-this-page/on-this-page.css | 33 - .../components/on-this-page/on-this-page.tsx | 63 - .../components/router-head/router-head.tsx | 35 - packages/docs/src/entry.cloudflare-pages.tsx | 16 - packages/docs/src/entry.dev.tsx | 17 - packages/docs/src/entry.preview.tsx | 20 - packages/docs/src/entry.ssr.tsx | 27 - packages/docs/src/global.css | 67 - packages/docs/src/root.tsx | 30 - packages/docs/src/routes/about-us/index.md | 15 - .../docs/src/routes/docs/advanced/index.md | 11 - packages/docs/src/routes/docs/docs.css | 22 - .../src/routes/docs/getting-started/index.md | 13 - packages/docs/src/routes/docs/index.md | 22 - packages/docs/src/routes/docs/layout.tsx | 25 - packages/docs/src/routes/docs/menu.md | 21 - packages/docs/src/routes/index.tsx | 236 -- packages/docs/src/routes/layout.tsx | 15 - packages/docs/src/routes/service-worker.ts | 18 - packages/docs/tailwind.config.js | 21 - packages/docs/tsconfig.json | 25 - packages/docs/vite.config.ts | 15 - yarn.lock | 3739 ++++++++++++++++- 48 files changed, 3523 insertions(+), 1505 deletions(-) create mode 160000 packages/docs delete mode 100644 packages/docs/.eslintignore delete mode 100644 packages/docs/.eslintrc.cjs delete mode 100644 packages/docs/.gitignore delete mode 100644 packages/docs/.node-version delete mode 100644 packages/docs/.prettierignore delete mode 100644 packages/docs/README.md delete mode 100644 packages/docs/adaptors/cloudflare-pages/vite.config.ts delete mode 100644 packages/docs/functions/[[path]].ts delete mode 100644 packages/docs/package.json delete mode 100644 packages/docs/postcss.config.js delete mode 100644 packages/docs/public/_headers delete mode 100644 packages/docs/public/_redirects delete mode 100644 packages/docs/public/favicon.svg delete mode 100644 packages/docs/public/manifest.json delete mode 100644 packages/docs/public/robots.txt delete mode 100644 packages/docs/src/components/breadcrumbs/breadcrumbs.css delete mode 100644 packages/docs/src/components/breadcrumbs/breadcrumbs.tsx delete mode 100644 packages/docs/src/components/footer/footer.css delete mode 100644 packages/docs/src/components/footer/footer.tsx delete mode 100644 packages/docs/src/components/header/header.css delete mode 100644 packages/docs/src/components/header/header.tsx delete mode 100644 packages/docs/src/components/icons/qwik.tsx delete mode 100644 packages/docs/src/components/menu/menu.css delete mode 100644 packages/docs/src/components/menu/menu.tsx delete mode 100644 packages/docs/src/components/on-this-page/on-this-page.css delete mode 100644 packages/docs/src/components/on-this-page/on-this-page.tsx delete mode 100644 packages/docs/src/components/router-head/router-head.tsx delete mode 100644 packages/docs/src/entry.cloudflare-pages.tsx delete mode 100644 packages/docs/src/entry.dev.tsx delete mode 100644 packages/docs/src/entry.preview.tsx delete mode 100644 packages/docs/src/entry.ssr.tsx delete mode 100644 packages/docs/src/global.css delete mode 100644 packages/docs/src/root.tsx delete mode 100644 packages/docs/src/routes/about-us/index.md delete mode 100644 packages/docs/src/routes/docs/advanced/index.md delete mode 100644 packages/docs/src/routes/docs/docs.css delete mode 100644 packages/docs/src/routes/docs/getting-started/index.md delete mode 100644 packages/docs/src/routes/docs/index.md delete mode 100644 packages/docs/src/routes/docs/layout.tsx delete mode 100644 packages/docs/src/routes/docs/menu.md delete mode 100644 packages/docs/src/routes/index.tsx delete mode 100644 packages/docs/src/routes/layout.tsx delete mode 100644 packages/docs/src/routes/service-worker.ts delete mode 100644 packages/docs/tailwind.config.js delete mode 100644 packages/docs/tsconfig.json delete mode 100644 packages/docs/vite.config.ts diff --git a/packages/docs b/packages/docs new file mode 160000 index 0000000..de99749 --- /dev/null +++ b/packages/docs @@ -0,0 +1 @@ +Subproject commit de99749cd5443a76b8603743db918f9c8c908c3c diff --git a/packages/docs/.eslintignore b/packages/docs/.eslintignore deleted file mode 100644 index 73d2683..0000000 --- a/packages/docs/.eslintignore +++ /dev/null @@ -1,33 +0,0 @@ -**/*.log -**/.DS_Store -*. -.vscode/settings.json -.history -.yarn -bazel-* -bazel-bin -bazel-out -bazel-qwik -bazel-testlogs -dist -dist-dev -lib -lib-types -etc -external -node_modules -temp -tsc-out -tsdoc-metadata.json -target -output -rollup.config.js -build -.cache -.vscode -.rollup.cache -dist -tsconfig.tsbuildinfo -vite.config.ts -*.spec.tsx -*.spec.ts diff --git a/packages/docs/.eslintrc.cjs b/packages/docs/.eslintrc.cjs deleted file mode 100644 index c31c7a9..0000000 --- a/packages/docs/.eslintrc.cjs +++ /dev/null @@ -1,40 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - es2021: true, - node: true, - }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:qwik/recommended', - ], - parser: '@typescript-eslint/parser', - parserOptions: { - tsconfigRootDir: __dirname, - project: ['./tsconfig.json'], - ecmaVersion: 2021, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - }, - plugins: ['@typescript-eslint'], - rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-inferrable-types': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-empty-interface': 'off', - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-this-alias': 'off', - '@typescript-eslint/ban-types': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - 'prefer-spread': 'off', - 'no-case-declarations': 'off', - 'no-console': 'off', - '@typescript-eslint/no-unused-vars': ['error'], - }, -}; diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore deleted file mode 100644 index b29623f..0000000 --- a/packages/docs/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# Build -/dist -/lib -/lib-types -/server - -# Development -node_modules - -# Cache -.cache -.mf -.vscode -.rollup.cache -tsconfig.tsbuildinfo - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -# Editor -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# Yarn -.yarn/* -!.yarn/releases - -# Cloudflare -functions/**/*.js diff --git a/packages/docs/.node-version b/packages/docs/.node-version deleted file mode 100644 index b6a7d89..0000000 --- a/packages/docs/.node-version +++ /dev/null @@ -1 +0,0 @@ -16 diff --git a/packages/docs/.prettierignore b/packages/docs/.prettierignore deleted file mode 100644 index 1592248..0000000 --- a/packages/docs/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -# Files Prettier should not format -**/*.log -**/.DS_Store -*. -dist -node_modules diff --git a/packages/docs/README.md b/packages/docs/README.md deleted file mode 100644 index 9948f9c..0000000 --- a/packages/docs/README.md +++ /dev/null @@ -1,11 +0,0 @@ -### 😎 Documentación Bot-Whatsapp - -👉 [https://bot-whatsapp.pages.dev/](https://bot-whatsapp.pages.dev/) - -Se esta iniciando una documentación oficial sobre como usar e implementar los diferentes funcionalidades del bot-wahtsapp - - -La idea es cada usuario pueda ir aportando a la documentacion y formar parte de este proyecto. - - -##### ¿Como agregar documentación? [Video] \ No newline at end of file diff --git a/packages/docs/adaptors/cloudflare-pages/vite.config.ts b/packages/docs/adaptors/cloudflare-pages/vite.config.ts deleted file mode 100644 index dc2bfde..0000000 --- a/packages/docs/adaptors/cloudflare-pages/vite.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { cloudflarePagesAdaptor } from '@builder.io/qwik-city/adaptors/cloudflare-pages/vite' -import { extendConfig } from '@builder.io/qwik-city/vite' -import baseConfig from '../../vite.config' - -export default extendConfig(baseConfig, () => { - return { - build: { - ssr: true, - rollupOptions: { - input: ['src/entry.cloudflare-pages.tsx', '@qwik-city-plan'], - }, - }, - plugins: [ - cloudflarePagesAdaptor({ - staticGenerate: true, - }), - ], - } -}) diff --git a/packages/docs/functions/[[path]].ts b/packages/docs/functions/[[path]].ts deleted file mode 100644 index ce9a129..0000000 --- a/packages/docs/functions/[[path]].ts +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-ignore - -// Cloudflare Pages Functions -// https://developers.cloudflare.com/pages/platform/functions/ -export { onRequest } from '../server/entry.cloudflare-pages' diff --git a/packages/docs/package.json b/packages/docs/package.json deleted file mode 100644 index c5955ac..0000000 --- a/packages/docs/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "bot-whatsapp-docs", - "version": "0.0.1", - "description": "Basic start point to build a docs site with Qwik", - "engines": { - "node": ">=15.0.0" - }, - "private": true, - "scripts": { - "build": "qwik build", - "build.client": "vite build", - "build.preview": "vite build --ssr src/entry.preview.tsx", - "build.server": "vite build -c adaptors/cloudflare-pages/vite.config.ts", - "build.types": "tsc --incremental --noEmit", - "deploy": "wrangler pages dev ./dist", - "dev": "vite --mode ssr", - "dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force", - "fmt": "prettier --write .", - "fmt.check": "prettier --check .", - "lint": "eslint \"src/**/*.ts*\"", - "preview": "qwik build preview && vite preview --open", - "start": "vite --open --mode ssr", - "qwik": "qwik" - }, - "devDependencies": { - "@builder.io/qwik": "0.14.1", - "@builder.io/qwik-city": "0.0.127", - "@types/eslint": "8.4.10", - "@types/node": "latest", - "@typescript-eslint/eslint-plugin": "5.43.0", - "@typescript-eslint/parser": "5.43.0", - "autoprefixer": "10.4.11", - "eslint": "8.28.0", - "eslint-plugin-qwik": "0.14.1", - "node-fetch": "3.3.0", - "postcss": "^8.4.16", - "prettier": "2.7.1", - "tailwindcss": "^3.1.8", - "typescript": "4.9.3", - "vite": "3.2.4", - "vite-tsconfig-paths": "3.5.0", - "wrangler": "latest" - } -} diff --git a/packages/docs/postcss.config.js b/packages/docs/postcss.config.js deleted file mode 100644 index fef1b22..0000000 --- a/packages/docs/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/packages/docs/public/_headers b/packages/docs/public/_headers deleted file mode 100644 index 0690cb4..0000000 --- a/packages/docs/public/_headers +++ /dev/null @@ -1,4 +0,0 @@ -# https://developers.cloudflare.com/pages/platform/headers/ - -/build/* - Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable diff --git a/packages/docs/public/_redirects b/packages/docs/public/_redirects deleted file mode 100644 index e274610..0000000 --- a/packages/docs/public/_redirects +++ /dev/null @@ -1 +0,0 @@ -# https://developers.cloudflare.com/pages/platform/redirects/ diff --git a/packages/docs/public/favicon.svg b/packages/docs/public/favicon.svg deleted file mode 100644 index 0ded7c1..0000000 --- a/packages/docs/public/favicon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/docs/public/manifest.json b/packages/docs/public/manifest.json deleted file mode 100644 index 44825fa..0000000 --- a/packages/docs/public/manifest.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/web-manifest-combined.json", - "name": "qwik-project-name", - "short_name": "Welcome to Qwik", - "start_url": ".", - "display": "standalone", - "background_color": "#fff", - "description": "A Qwik project app." -} diff --git a/packages/docs/public/robots.txt b/packages/docs/public/robots.txt deleted file mode 100644 index e69de29..0000000 diff --git a/packages/docs/src/components/breadcrumbs/breadcrumbs.css b/packages/docs/src/components/breadcrumbs/breadcrumbs.css deleted file mode 100644 index 4626391..0000000 --- a/packages/docs/src/components/breadcrumbs/breadcrumbs.css +++ /dev/null @@ -1,25 +0,0 @@ -nav.breadcrumbs { - padding: 5px; - border-bottom: 1px solid #ddd; -} - -nav.breadcrumbs > span { - display: inline-block; - padding: 5px 0; - font-size: 12px; -} - -nav.breadcrumbs > span a { - text-decoration: none; - color: inherit; -} - -nav.breadcrumbs > span::after { - content: '>'; - padding: 0 5px; - opacity: 0.4; -} - -nav.breadcrumbs > span:last-child::after { - display: none; -} diff --git a/packages/docs/src/components/breadcrumbs/breadcrumbs.tsx b/packages/docs/src/components/breadcrumbs/breadcrumbs.tsx deleted file mode 100644 index 03954f0..0000000 --- a/packages/docs/src/components/breadcrumbs/breadcrumbs.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { component$, useStyles$ } from '@builder.io/qwik' -import { useContent, useLocation, ContentMenu } from '@builder.io/qwik-city' -import styles from './breadcrumbs.css?inline' - -export const Breadcrumbs = component$(() => { - useStyles$(styles) - - const { menu } = useContent() - const loc = useLocation() - - const breadcrumbs = createBreadcrumbs(menu, loc.pathname) - if (breadcrumbs.length === 0) { - return null - } - - return ( - - ) -}) - -export function createBreadcrumbs( - menu: ContentMenu | undefined, - pathname: string -) { - if (menu?.items) { - for (const indexA of menu.items) { - const breadcrumbA: ContentBreadcrumb = { - text: indexA.text, - } - if (typeof indexA.href === 'string') { - breadcrumbA.href = indexA.href - } - if (indexA.href === pathname) { - return [breadcrumbA] - } - - if (indexA.items) { - for (const indexB of indexA.items) { - const breadcrumbB: ContentBreadcrumb = { - text: indexB.text, - } - if (typeof indexB.href === 'string') { - breadcrumbB.href = indexB.href - } - if (indexB.href === pathname) { - return [breadcrumbA, breadcrumbB] - } - - if (indexB.items) { - for (const indexC of indexB.items) { - const breadcrumbC: ContentBreadcrumb = { - text: indexC.text, - } - if (typeof indexC.href === 'string') { - breadcrumbC.href = indexC.href - } - if (indexC.href === pathname) { - return [breadcrumbA, breadcrumbB, breadcrumbC] - } - } - } - } - } - } - } - - return [] -} - -interface ContentBreadcrumb { - text: string - href?: string -} diff --git a/packages/docs/src/components/footer/footer.css b/packages/docs/src/components/footer/footer.css deleted file mode 100644 index 662fc22..0000000 --- a/packages/docs/src/components/footer/footer.css +++ /dev/null @@ -1,22 +0,0 @@ -footer { - border-top: 0.5px solid #ddd; - margin-top: 40px; - padding: 20px; - text-align: center; -} - -footer a { - color: #9e9e9e; - font-size: 12px; -} - -footer ul { - list-style: none; - margin: 0; - padding: 0; -} - -footer li { - display: inline-block; - padding: 6px 12px; -} diff --git a/packages/docs/src/components/footer/footer.tsx b/packages/docs/src/components/footer/footer.tsx deleted file mode 100644 index c4634f7..0000000 --- a/packages/docs/src/components/footer/footer.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { component$, useStyles$ } from '@builder.io/qwik' -import styles from './footer.css?inline' - -export default component$(() => { - useStyles$(styles) - - return ( - - ) -}) diff --git a/packages/docs/src/components/header/header.css b/packages/docs/src/components/header/header.css deleted file mode 100644 index d2fd582..0000000 --- a/packages/docs/src/components/header/header.css +++ /dev/null @@ -1,34 +0,0 @@ -header { - position: sticky; - top: 0; - z-index: 11; - display: grid; - grid-template-columns: minmax(130px, auto) 1fr; - gap: 30px; - height: 80px; - width: 100%; - padding: 10px; - background-color: white; - overflow: hidden; -} - -header a.logo { - display: block; -} - -header a { - text-decoration: none; -} - -header nav { - text-align: right; -} - -header nav a { - display: inline-block; - padding: 5px 15px; -} - -header nav a:hover { - text-decoration: underline; -} diff --git a/packages/docs/src/components/header/header.tsx b/packages/docs/src/components/header/header.tsx deleted file mode 100644 index f151fe3..0000000 --- a/packages/docs/src/components/header/header.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { component$, useStyles$ } from '@builder.io/qwik' -import { useLocation } from '@builder.io/qwik-city' -import { QwikLogo } from '../icons/qwik' -import styles from './header.css?inline' - -export default component$(() => { - useStyles$(styles) - - const { pathname } = useLocation() - - return ( -
    - - -
    - ) -}) diff --git a/packages/docs/src/components/icons/qwik.tsx b/packages/docs/src/components/icons/qwik.tsx deleted file mode 100644 index 7641610..0000000 --- a/packages/docs/src/components/icons/qwik.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export const QwikLogo = () => ( - - - - - - -) diff --git a/packages/docs/src/components/menu/menu.css b/packages/docs/src/components/menu/menu.css deleted file mode 100644 index ffb745c..0000000 --- a/packages/docs/src/components/menu/menu.css +++ /dev/null @@ -1,13 +0,0 @@ -.menu { - background: #eee; - padding: 20px 10px; -} - -.menu h5 { - margin: 0; -} - -.menu ul { - padding-left: 20px; - margin: 5px 0 25px 0; -} diff --git a/packages/docs/src/components/menu/menu.tsx b/packages/docs/src/components/menu/menu.tsx deleted file mode 100644 index 3ccd57e..0000000 --- a/packages/docs/src/components/menu/menu.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { component$, useStyles$ } from '@builder.io/qwik' -import { useContent, Link, useLocation } from '@builder.io/qwik-city' -import styles from './menu.css?inline' - -export default component$(() => { - useStyles$(styles) - - const { menu } = useContent() - const loc = useLocation() - - return ( - - ) -}) diff --git a/packages/docs/src/components/on-this-page/on-this-page.css b/packages/docs/src/components/on-this-page/on-this-page.css deleted file mode 100644 index 4d1f610..0000000 --- a/packages/docs/src/components/on-this-page/on-this-page.css +++ /dev/null @@ -1,33 +0,0 @@ -.on-this-page { - padding-bottom: 20px; - font-size: 0.9em; -} - -.on-this-page h6 { - margin: 10px 0; - font-weight: bold; - text-transform: uppercase; -} - -.on-this-page ul { - margin: 0; - padding: 0 0 20px 0; - list-style: none; -} - -.on-this-page a { - position: relative; - display: block; - border: 0 solid #ddd; - border-left-width: 2px; - padding: 4px 2px 4px 8px; - text-decoration: none; -} - -.on-this-page a.indent { - padding-left: 30px; -} - -.on-this-page a:hover { - border-color: var(--theme-accent); -} diff --git a/packages/docs/src/components/on-this-page/on-this-page.tsx b/packages/docs/src/components/on-this-page/on-this-page.tsx deleted file mode 100644 index 520017c..0000000 --- a/packages/docs/src/components/on-this-page/on-this-page.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { useContent, useLocation } from '@builder.io/qwik-city' -import { component$, useStyles$ } from '@builder.io/qwik' -import styles from './on-this-page.css?inline' - -export default component$(() => { - useStyles$(styles) - - const { headings } = useContent() - const contentHeadings = - headings?.filter((h) => h.level === 2 || h.level === 3) || [] - - const { pathname } = useLocation() - const editUrl = `#update-your-edit-url-for-${pathname}` - - return ( - - ) -}) diff --git a/packages/docs/src/components/router-head/router-head.tsx b/packages/docs/src/components/router-head/router-head.tsx deleted file mode 100644 index 3a3e0b4..0000000 --- a/packages/docs/src/components/router-head/router-head.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { component$ } from '@builder.io/qwik' -import { useDocumentHead, useLocation } from '@builder.io/qwik-city' - -/** - * The RouterHead component is placed inside of the document `` element. - */ -export const RouterHead = component$(() => { - const head = useDocumentHead() - const loc = useLocation() - - return ( - <> - {head.title} - - - - - - {head.meta.map((m) => ( - - ))} - - {head.links.map((l) => ( - - ))} - - {head.styles.map((s) => ( -
  • wxFIOF|b?E7{tKj3hri;K0 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